Dans cet article, nous allons apprendre comment accepter les paiements dans le bot Telegram à l'aide de l'API Yoomoney.
introduction
Pour commencer, j'ai récemment voulu créer un magasin de produits électroniques sur Telegram. Et je suis tombé sur le problème qu'au moment du travail, il n'y avait pas de solutions toutes faites. Je voulais accepter des paiements sans entrepreneurs individuels et tout ce mouvement. Par conséquent, mon choix s'est porté entre Qiwi et Yoomoney (anciennement Yandex Money). Je suis moi-même de Biélorussie ... Par conséquent, il est plus facile d'obtenir un compte «identifié» auprès de Yoomoney.
En conséquence, j'ai créé la bibliothèque yoomoney pour Python.
Si ce message vous a aidé, veuillez jouer sur GitHub . Je serai très content!
La description
Nous obtenons le jeton
Vérification du jeton
Comment émettre une facture pour le paiement
Vérification du paiement
Nous obtenons le jeton
Pour utiliser l'API Yoomoney, vous devez obtenir un jeton spécial. Tout d'abord, nous enregistrons l'application:
1. Accédez au portefeuille YuMoney. S'il n'y a pas de portefeuille, créez-en un .
2. Accédez à la page d' inscription de l' application .
3. Spécifiez les paramètres de l'application:
4. Cliquez sur le bouton Confirmer .
, , (client_id) , , (client_secret).
!
client_id redirect_uri, .
: . .
pip install yoomoney
from yoomoney import Authorize
Authorize(
client_id="YOUR_CLIENT_ID",
redirect_uri="YOUR_REDIRECT_URI",
scope=["account-info",
"operation-history",
"operation-details",
"incoming-transfers",
"payment-p2p",
"payment-shop",
]
)
! !
YOUR_TOKEN :
from yoomoney import Client
token = "YOUR_TOKEN"
client = Client(token)
user = client.account_info()
print("Account number:", user.account)
print("Account balance:", user.balance)
print("Account currency code in ISO 4217 format:", user.currency)
print("Account status:", user.account_status)
print("Account type:", user.account_type)
print("Extended balance information:")
for pair in vars(user.balance_details):
print("\t-->", pair, ":", vars(user.balance_details).get(pair))
print("Information about linked bank cards:")
cards = user.cards_linked
if len(cards) != 0:
for card in cards:
print(card.pan_fragment, " - ", card.type)
else:
print("No card is linked to the account")
:
Account number: 410019014512803
Account balance: 999999999999.99
Account currency code in ISO 4217 format: 643
Account status: identified
Account type: personal
Extended balance information:
--> total : 999999999999.99
--> available : 999999999999.99
--> deposition_pending : None
--> blocked : None
--> debt : None
--> hold : None
Information about linked bank cards:
No card is linked to the account
! .
Quickpay.
from yoomoney import Quickpay
quickpay = Quickpay(
receiver="410019014512803",
quickpay_form="shop",
targets="Sponsor this project",
paymentType="SB",
sum=150,
)
print(quickpay.base_url)
print(quickpay.redirected_url)
:
https://yoomoney.ru/quickpay/confirm.xml?receiver=410019014512803&quickpay-form=shop&targets=Sponsor%20this%20project&paymentType=SB&sum=150
https://yoomoney.ru/transfer/quickpay?requestId=343532353937313933395f66326561316639656131626539326632616434376662373665613831373636393537613336383639
. . .
, .
: , ?
label - , . , .
:
from yoomoney import Quickpay
quickpay = Quickpay(
receiver="410019014512803",
quickpay_form="shop",
targets="Sponsor this project",
paymentType="SB",
sum=150,
lebel="a1b2c3d4e5"
)
print(quickpay.base_url)
print(quickpay.redirected_url)
.
Client.
Connaissant le libellé de la transaction, nous pouvons filtrer l'historique des transactions du portefeuille. Mettez simplement une étiquette dans client.operation_history ():
from yoomoney import Client
token = "YOUR_TOKEN"
client = Client(token)
history = client.operation_history(label="a1b2c3d4e5")
print("List of operations:")
print("Next page starts with: ", history.next_record)
for operation in history.operations:
print()
print("Operation:",operation.operation_id)
print("\tStatus -->", operation.status)
print("\tDatetime -->", operation.datetime)
print("\tTitle -->", operation.title)
print("\tPattern id -->", operation.pattern_id)
print("\tDirection -->", operation.direction)
print("\tAmount -->", operation.amount)
print("\tLabel -->", operation.label)
print("\tType -->", operation.type)
En conséquence, nous obtenons une liste de toutes les opérations pour notre filtre:
List of operations:
Next page starts with: None
Operation: 670278348725002105
Status --> success
Datetime --> 2021-10-10 10:10:10
Title --> ****4487
Pattern id --> None
Direction --> in
Amount --> 150.0
Label --> a1b2c3d4e5
Type --> deposition
Nous savons maintenant si le paiement a été effectué.
Tout! Rien d'autre n'est nécessaire pour recevoir des paiements.
Conclusion
Si ce message vous a aidé, veuillez jouer sur GitHub . Je serai très content!