# 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.

<div data-with-frame="true"><figure><img src="/files/5827f48c7ea46674b929d520e02dce2937609d7f" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/6d183af445da8be3993d4496c7d4d07d707a8246" alt="" width="375"><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/0f34ffae2e5671ed4e72d8a6fbcd8add8a7d88ac" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/81547e196a8b2ec2d8c3cd388b71a1c1377a285a" alt="" width="375"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/e150dfdd8440a02526a811d96ccb20f6bf410ba2" alt="" width="375"><figcaption></figcaption></figure></div>

## **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)**

<table><thead><tr><th width="270">Paramètres de la fonction</th><th>Description du paramètre</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark> provider_token </td><td>(paramètre requis) jeton obtenu de BotFather après avoir connecté le système de paiement</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark> platform_id </td><td>(paramètre requis) identifiant du destinataire - identifiant de l’utilisateur, du groupe ou du canal</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark> title </td><td>(paramètre requis) titre du produit, 1 à 32 caractères</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark> description </td><td>(paramètre requis) description du produit, 1 à 255 caractères</td></tr><tr><td><mark style="color:red;"><strong>!</strong></mark> currency </td><td>(paramètre requis) devise du paiement (<mark style="background-color:red;"><strong>EUR</strong></mark>, USD, UAH, etc. ; pour plus de détails<a href="https://core.telegram.org/bots/payments#supported-currencies"> https://core.telegram.org/bots/payments#supported-currencies</a> )</td></tr><tr><td>prices</td><td><p>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).<br></p><p>Par exemple : [["product", 2000], ["VAT", 20.75], ["packaging", 100]]</p></td></tr><tr><td>photo_url</td><td>URL de l’image du produit</td></tr><tr><td>payload </td><td>La première partie du callback de paiement, la valeur par défaut est <strong>tg_payment</strong></td></tr><tr><td>protect_content</td><td>1 - protéger contre la copie et les captures d’écran, 0 - pas de protection</td></tr><tr><td>disable_notification </td><td>1 - envoyer avec notification, 0 - sans notification</td></tr><tr><td>need_name</td><td>1 - exiger le nom complet de l’utilisateur pour terminer la commande, 0 - aucune demande de nom</td></tr><tr><td>need_phone_number</td><td>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</td></tr><tr><td>need_email </td><td>1 - exiger l’adresse e-mail de l’utilisateur pour terminer la commande, 0 - aucune demande d’e-mail</td></tr><tr><td>reply_to_message_id</td><td>ID du message auquel répondre ; si vous souhaitez envoyer la facture en tant que message séparé, utilisez deux guillemets simples ('')</td></tr><tr><td>reply_markup</td><td>Clavier avec le premier bouton défini sur le type <strong>payer</strong></td></tr><tr><td>message_thread_id </td><td>ID du sujet (disponible pour les supergroupes avec la fonctionnalité forum activée)</td></tr><tr><td>provider_data </td><td>Données de la facture au format <strong>JSON</strong> à envoyer au prestataire de services de paiement. Le système de paiement doit fournir des descriptions détaillées des champs requis.</td></tr></tbody></table>

{% hint style="warning" %}
**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.
{% endhint %}

Exemple :

<div data-with-frame="true"><figure><img src="/files/0405b533dcfae2e7200aa967cdf03052abde6493" alt=""><figcaption></figcaption></figure></div>

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 :

<div data-with-frame="true"><figure><img src="/files/73cb53a6de488128faa653fe7cf3ae18c31b3e8c" alt=""><figcaption></figcaption></figure></div>

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 <mark style="color:red;">**USD**</mark> 2ff747b9-000f-5000-b000-16d7e3517aa&#x39;**,** où&#x20;

1. course\_pay - payload - la charge utile de la requête de création de facture d’origine ;&#x20;
2. 1372995196 - l’identifiant du chat où la facture a été envoyée à l’origine ;
3. 120.75 - le montant total du paiement ;
4. <mark style="color:red;">**USD**</mark> - la devise ;
5. 2ff747b9-000f-5000-b000-16d7e3517aa9 - l’identifiant du paiement dans le système du marchand.

<div data-with-frame="true"><figure><img src="/files/5bfe4319fac38a42e25b3731b7118c5808513f0d" alt="" width="563"><figcaption></figcaption></figure></div>

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**

<div data-with-frame="true"><figure><img src="/files/b52e39c79afcfa6907cb3ff8b01d557c6c6574e5" alt="" width="375"><figcaption></figcaption></figure></div>

{% hint style="info" %}
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.
{% endhint %}

{% hint style="info" %}
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>
{% endhint %}

## 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)**

<table><thead><tr><th width="271">Paramètres de la fonction</th><th>Description</th></tr></thead><tbody><tr><td><mark style="color:red;"><strong>!</strong></mark><strong> platform_id</strong></td><td>ID du chat Telegram <a href="#gde-vzyat-platform_id-dlya-otpravki-uvedomlenii"><strong>*</strong></a></td></tr><tr><td><strong>message_id</strong> </td><td>ID du message à épingler</td></tr><tr><td><strong>disable_notification</strong> </td><td>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.<br>Pour désactiver les notifications, définissez le <strong>disable_notification</strong> paramètre sur 1 ; sinon, utilisez 0.</td></tr></tbody></table>

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', '<mark style="color:red;">**USD**</mark>', prices, '<mark style="color:red;">**<https://salebot.pro/promo.png>'**</mark>, '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')

<div data-with-frame="true"><figure><img src="/files/41489657f86cfd6f348d49763a0045bb8d3e428d" alt="" width="246"><figcaption></figcaption></figure></div>

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', '<mark style="color:red;">**USD**</mark>', prices)

<div data-with-frame="true"><figure><img src="/files/6c515348f8aac256e543a2bbe722718d91ec0a70" alt=""><figcaption></figcaption></figure></div>

### **Exemple : clavier**

prices = \[\["course", 100], \["VAT", 20.75]]

tg\_send\_invoice('381764678:TEST:129736', platform\_id, 'Course on courses', 'Creating courses is easy, '<mark style="color:red;">**USD**</mark>', prices, <mark style="color:red;">**'<https://mavibot.ai/promo.png>**</mark>', 'course\_pay','0', '0', '1', '1', '1', '', '{"inline\_keyboard": \[\[{"text":"Pay", "pay":"True"}], \[{"text":"Another button", "callback\_data": "Another button"}]]}')

<div data-with-frame="true"><figure><img src="/files/0bd679960bfeaf8c4a889d181682885e8015ecac" alt=""><figcaption></figcaption></figure></div>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mavibot.ai/doc/fr/chatbot/messageries/telegram/api/payment.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
