Paiement dans Telegram
Comment connecter un système de paiement
Le système de paiement est intégré à Telegram. Pour accepter les paiements dans la messagerie, vous devez :
Connecter un système de paiement à votre bot à l’aide de BotFather.
Accédez aux paramètres du bot souhaité et sélectionnez « Paiements » dans le menu.


Suivez les instructions pour connecter un système de paiement disponible et copiez le jeton fourni.



Comment facturer un client
Pour envoyer une facture dans Telegram, utilisez la méthode et spécifiez les paramètres requis.
tg_send_invoice(provider_token, platform_id, title, description, currency, prices, photo_url, payload, protect_content, disable_notification, need_name, need_phone_number, need_email, reply_to_message_id, reply_markup, message_thread_id, provider_data)
! provider_token
(paramètre requis) jeton obtenu de BotFather après avoir connecté le système de paiement
! platform_id
(paramètre requis) identifiant du destinataire - identifiant de l’utilisateur, du groupe ou du canal
! title
(paramètre requis) titre du produit, 1 à 32 caractères
! description
(paramètre requis) description du produit, 1 à 255 caractères
! currency
(paramètre requis) devise du paiement (EUR, USD, UAH, etc. ; pour plus de détails https://core.telegram.org/bots/payments#supported-currencies )
prices
Un tableau de tableaux contenant les détails tarifaires du produit et des services supplémentaires (livraison, emballage, etc.). Affiché sur la page de paiement. Le montant peut être indiqué soit comme un entier (par exemple, 125), soit comme un nombre décimal utilisant un point (par exemple, 120.25).
Par exemple : [["product", 2000], ["VAT", 20.75], ["packaging", 100]]
photo_url
URL de l’image du produit
payload
La première partie du callback de paiement, la valeur par défaut est tg_payment
protect_content
1 - protéger contre la copie et les captures d’écran, 0 - pas de protection
disable_notification
1 - envoyer avec notification, 0 - sans notification
need_name
1 - exiger le nom complet de l’utilisateur pour terminer la commande, 0 - aucune demande de nom
need_phone_number
1 - exiger le numéro de téléphone de l’utilisateur pour terminer la commande, 0 - aucune demande de numéro de téléphone
need_email
1 - exiger l’adresse e-mail de l’utilisateur pour terminer la commande, 0 - aucune demande d’e-mail
reply_to_message_id
ID du message auquel répondre ; si vous souhaitez envoyer la facture en tant que message séparé, utilisez deux guillemets simples ('')
reply_markup
Clavier avec le premier bouton défini sur le type payer
message_thread_id
ID du sujet (disponible pour les supergroupes avec la fonctionnalité forum activée)
provider_data
Données de la facture au format JSON à envoyer au prestataire de services de paiement. Le système de paiement doit fournir des descriptions détaillées des champs requis.
IMPORTANT ! Tous les paramètres doivent être passés dans l’ordre spécifié dans la fonction. Si vous devez spécifier un paramètre particulier et en omettre d’autres, laissez des valeurs vides ou des valeurs comme indiqué dans la documentation pour les paramètres dont vous n’avez pas besoin.
Exemple :

Si l’un des paramètres need_name, need_phone_number, ou need_email est activé, l’utilisateur sera invité à fournir ces informations avant de terminer le paiement. En cas de paiement réussi, les données sont enregistrées dans les variables client correspondantes.
Exemple :

Résultat : les données sont demandées avant le paiement.
Callback de paiement
Si le paiement est réussi, un callback avec le contenu suivant sera envoyé au chat de l’utilisateur :
tg_payment 1372995196 120.75 USD 2ff747b9-000f-5000-b000-16d7e3517aa9, où
course_pay - payload - la charge utile de la requête de création de facture d’origine ;
1372995196 - l’identifiant du chat où la facture a été envoyée à l’origine ;
120.75 - le montant total du paiement ;
USD - la devise ;
2ff747b9-000f-5000-b000-16d7e3517aa9 - l’identifiant du paiement dans le système du marchand.

De plus, si le nom, le numéro de téléphone et/ou l’e-mail de l’utilisateur ont été demandés, les variables correspondantes seront attribuées au client :
tg_payment_name, tg_payment_phone et tg_payment_email

Un callback de réussite du paiement sera envoyé aux messages directs de l’utilisateur avec le bot.
L’utilisateur doit avoir une conversation existante avec le bot (c’est-à-dire qu’il doit avoir démarré ou s’être abonné au bot) avant au moment où le paiement est effectué. Sinon, le bot ne peut pas lui envoyer de message direct.
Une fois le webhook de paiement reçu, le paiement sera automatiquement confirmé via la méthode answerPreCheckoutQuery. https://core.telegram.org/bots/api#answerprecheckoutquery
Message épinglé avec un bouton de paiement
Vous devez utiliser la fonctionnalité d’épinglage de message après avoir connecté le système de paiement.
tg_pin_chat_message(platform_id, message_id, disable_notification)
! platform_id
ID du chat Telegram *
message_id
ID du message à épingler
disable_notification
Ce paramètre définit si une notification doit être envoyée à tous les membres du chat concernant le nouveau message épinglé. Les notifications sont toujours désactivées dans les canaux et les discussions privées. Pour désactiver les notifications, définissez le disable_notification paramètre sur 1 ; sinon, utilisez 0.
Exemple :
Étape 1: prices = [["course", 100], ["VAT", 20.75]]
result=tg_send_invoice('381764678:TEST:129736', platform_id, 'Course on courses', 'Creating courses is easy', 'USD', prices, 'https://salebot.pro/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Pay", "pay":"True"}]]}')
Étape 2: À la suite de la première étape, vous recevrez une réponse à partir de laquelle vous devrez extraire la message_id valeur à l’aide de la get() fonction. res=get(result,'result') m_id=get(res,'message_id')

Ensuite, épinglez le message : tg_pin_chat_message(#{platform_id}, #{m_id}, 1)
Exemple : ensemble minimal de paramètres
prices = [["super course", 100]]
result= tg_send_invoice('381764678:TEST:129736', platform_id, 'Course on courses', 'Creating courses is super easy', 'USD', prices)

Exemple : clavier
prices = [["course", 100], ["VAT", 20.75]]
tg_send_invoice('381764678:TEST:129736', platform_id, 'Course on courses', 'Creating courses is easy, 'USD', prices, 'https://mavibot.ai/promo.png', 'course_pay','0', '0', '1', '1', '1', '', '{"inline_keyboard": [[{"text":"Pay", "pay":"True"}], [{"text":"Another button", "callback_data": "Another button"}]]}')

Mis à jour