> For the complete documentation index, see [llms.txt](https://docs.mavibot.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mavibot.ai/doc/fr/integrations/payment/robokassa-kz.md).

# Robokassa (KZ)

## Comment configurer Robokassa

Voyons comment mettre en place l'acceptation des paiements dans le bot via le service Robokassa.

1. Créez une boutique en ligne dans l'espace personnel du service Robokassa et renseignez les paramètres techniques suivants :

\- Algorithme de calcul du hachage : MD5\
\- Result Url : <https://chatter.mavibot.ai/robokassa\\_callback/result\\>
\- Méthode d'envoi des données via Result Url : GET\
\- Success Url : <https://chatter.mavibot.ai/robokassa\\_callback/success\\>
\- Méthode d'envoi des données via Success Url : GET\
\- Fail Url : <https://chatter.mavibot.ai/robokassa\\_callback/fail\\>
\- Méthode d'envoi des données via Fail Url : GET

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

{% hint style="warning" %}
Créez des mots de passe de test et effectuez la configuration initiale en mode test.
{% endhint %}

## Comment connecter Robokassa à MaviBot ?

Allez dans la section « Encaissement » et cliquez sur « Connecter » sur la bannière Robokassa :

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

et remplissez le formulaire dans la fenêtre qui s'ouvre :

1. **Champ Identifiant du magasin —** Shop ID, que vous pouvez trouver dans les paramètres de la boutique dans l'espace personnel Robokassa.
2. Les mots de passe #1 et #2 — des suites uniques de chiffres et de lettres générées automatiquement.&#x20;
3. **champ Taux de TVA.** Il faut indiquer le code approprié pour transmettre la valeur de la TVA. Ce champ définit le taux d'imposition dans la caisse enregistreuse. Il est déterminé séparément pour chaque type de produit, mais pour toutes les unités d'un même produit ensemble.

S'applique avec les valeurs :

* Sans TVA.
* TVA au taux de 0 %.
* TVA au taux de 5 %
* TVA du reçu au taux calculé de 12 %.
* TVA du reçu au taux calculé de 16 %.

## Comment générer un lien de paiement

{% hint style="success" %}
Générer un lien de paiement dans le bloc peut se faire **L'UNE DES** méthodes disponibles :

* [Bouton avec la fonction Paiement ](#knopka-s-funkciei-oplata)ou
* [Fonction get\_robokassa\_payment\_url dans le Calculateur](#funkciya-get_robokassa_payment_url-v-kalkulyatore) ou
* [Création d'un lien à l'aide de la variable payment\_sum et de paramètres supplémentaires](#sozdanie-ssylki-s-pomoshyu-peremennoi-payment_sum-i-dopolnitelnykh-parametrov) (ancienne version fonctionnelle)
  {% endhint %}

## Bouton avec la fonction Paiement

Vous pouvez créer un lien de paiement dans le bouton avec la fonction « Paiement ».&#x20;

{% hint style="info" %}
Nous avons expliqué ici comment créer un bouton avec la fonction « Paiement »
{% endhint %}

Examinons tous les paramètres possibles de ce bouton. Comment créer un bouton avec la fonction Paiement est expliqué dans cet article :

### **Paramètres obligatoires du bouton Paiement**

Pour générer un lien de paiement dans les paramètres du bouton, il faut indiquer  <mark style="color:vert;">**les paramètres obligatoires : Montant et Nom du produit.**</mark>

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

**champ Montant.**  Dans ce champ, nous indiquons le coût du produit en roubles

**champ Nom du produit.**  Dans ce champ, vous ne pouvez utiliser que des caractères de l'alphabet anglais ou russe, des chiffres et des signes de ponctuation. La longueur maximale est de 100 caractères. Cette information s'affiche dans l'interface Robokassa et dans le reçu électronique que le client reçoit après un paiement réussi.&#x20;

{% hint style="danger" %}
**IL EST INTERDIT** d'utiliser **les guillemets doubles** dans le nom du produit : supprimez-les ou remplacez-les par des apostrophes simples.&#x20;
{% endhint %}

**case à cocher Autopaiement.** Pour connecter l'autopaiement&#x20;

**case à cocher Notification de clic.** Pour suivre le passage par le lien de paiement, vous pouvez cocher la case. Dans ce cas, lorsqu'un clic sur le bouton se produit, une notification indiquant qu'un passage par le lien a eu lieu arrivera dans la conversation client de SaleBot

Il est possible de configurer ensuite la logique de fonctionnement du bot à partir de cette notification.

{% hint style="info" %}
De nombreux systèmes de paiement prennent en charge les caisses en ligne cloud, elles sont nécessaires selon la loi 54-FZ.\
Lisez les particularités de l'émission des reçus sur le site du système de paiement choisi, afin d'éviter une situation embarrassante avec l'administration fiscale.
{% endhint %}

### **Pour générer un reçu**

**menu Données pour la génération du reçu.** Au clic, un menu déroulant avec les paramètres pour générer le reçu s'ouvrira :

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

**champ Nom du produit**. <mark style="color:rouge;">**Obligatoire pour générer le reçu.**</mark>&#x20;

{% hint style="danger" %}
**IL EST INTERDIT** d'utiliser **les guillemets doubles** dans le nom du produit : supprimez-les ou remplacez-les par des apostrophes simples.&#x20;
{% endhint %}

**champ Montant total en roubles.** Dans ce champ, il faut indiquer le montant à payer en tenant compte du nombre de produits. Si la quantité est égale à 1, alors le montant total en roubles est égal à la valeur du champ Montant dans le champ obligatoire de configuration du bouton

**champ Quantité.** Quantité ou poids du produit. Vous pouvez transmettre un nombre entier ou décimal avec un point. Exemple : 5 ou 10.3

### Variables client qui seront créées automatiquement lors de l'utilisation du bouton avec la fonction Paiement

Dès que l'utilisateur recevra le bloc avec le bouton « Paiement », les variables client suivantes seront automatiquement créées :

<div data-with-frame="true"><figure><img src="/files/19dd705d5d750a080e293a450b0502f21592b3ad" alt="" width="563"><figcaption><p>Fig. 9. variable payments</p></figcaption></figure></div>

Variable de service du client **`__payments`** , qui stocke le montant et l'identifiant du lien créé, nécessaire pour identifier le webhook de la plateforme de paiement.

{% hint style="danger" %}
La variable de service client \_\_payments NE DOIT PAS être supprimée ni modifiée !
{% endhint %}

Variable client **`error_payment_button`** est créée si une erreur se produit lors de la génération du bouton.

La valeur de la variable error\_payment\_button contiendra soit le texte de l'erreur, soit la réponse d'erreur de la plateforme de paiement.

{% hint style="warning" %}
Les valeurs des variables deviennent pertinentes lors du passage au bloc suivant&#x20;
{% endhint %}

### Comment traiter le résultat

{% hint style="warning" %}
Attention !

Robokassa envoie une notification uniquement pour les transactions réussies via le paramètre Result URL. <mark style="color:rouge;">**Il n'existe pas de callbacks pour les paiements échoués dans le service Robokassa.**</mark>&#x20;

Fail URL est uniquement une page d'échec de paiement, vers laquelle le payeur sera redirigé en cas d'erreur de code sur la page de paiement.&#x20;
{% endhint %}

**Paiement réussi.**

Après avoir correctement configuré le paiement et généré le lien de paiement, testez les paramètres créés. Si le paiement réussit, alors dans la conversation client (section « Clients ») <mark style="color:orange;">**AUTOMATIQUEMENT**</mark> arrivera un CALLBACK composé de 10 caractères de la clé secrète de la plateforme de paiement, du mot \_success et, séparé par un espace, du montant du paiement. **Le callback est généré automatiquement**, il n'est pas nécessaire de le composer soi-même ni de le demander au support de la plateforme de paiement,

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

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

Par exemple : `ovg58keefc_success 2999`, où :&#x20;

ovg58keefc : 10 caractères de la clé secrète de la plateforme de paiement

\_success : résultat du traitement de la requête (paiement réussi)

2999 : montant du paiement

Exécution du bloc :

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

Callback :

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

{% hint style="info" %}
Les callbacks (notifications) de la plateforme de paiement ne sont PAS visibles pour l'utilisateur. Ils s'affichent uniquement dans l'onglet « Clients » et sont visibles par l'opérateur/l'administrateur.
{% endhint %}

### Exemple de configuration de la réaction au callback

Dans le bloc avec condition (cela peut être soit le bloc « Condition de départ », soit le bloc « Sans état avec condition »), il faut indiquer le callback reçu lors du paiement.&#x20;

{% hint style="warning" %}
Important : choisissez le mode de correspondance « Correspondance exacte » ou « Selon la présence de mots-clés »
{% endhint %}

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

Ensuite, au moment du paiement, le client recevra le message du bloc dans lequel la réaction au callback est configurée :

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

**Paiement avec erreur**

Si le montant indiqué dans les paramètres du bouton <mark style="color:bleu;">**diffère du montant que le client a payé**</mark>, dans le bot <mark style="color:orange;">**AUTOMATIQUEMENT**</mark> un CALLBACK arrivera, composé de 10 caractères de la clé secrète de la plateforme de paiement, du mot \_different\_amounts et, séparé par un espace, de l'identifiant unique du paiement

Par exemple : `ovg58keefc_different_amounts 123456` , où :&#x20;

`ovg58keefc` : 10 caractères de la clé secrète de la plateforme de paiement

`_different_amounts` : résultat du traitement de la requête (le montant du paiement diffère du montant du lien)

`123456` : identifiant unique du paiement

## Fonction get\_robokassa\_payment\_url dans le Calculateur

Pour générer un lien de paiement, vous pouvez utiliser la fonction `get_robokassa_payment_url` dans le bloc Calculateur.

Dans le champ Calculateur, attribuons à la variable la valeur de la fonction `get_robokassa_payment_url`&#x20;

{% hint style="info" %}
Vous définissez vous-même le nom de la variable. Sur les captures, ce sont des exemples de noms de variables.&#x20;
{% endhint %}

Dans cette variable sera enregistrée le lien de paiement. La variable peut être affichée sous forme de lien dans un message ou placée dans un bouton avec le texte « Payer ».&#x20;

**EXEMPLE de lien de paiement :**: `https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=test_salebot&OutSum=800&InvId=1412&IsTest=1&SignatureValue=0427369c3bd068bae30935f896060dda`

{% hint style="info" %}
De nombreux systèmes de paiement prennent en charge les caisses en ligne cloud, elles sont nécessaires selon la loi 54-FZ.\
Lisez les particularités de l'émission des reçus sur le site du système de paiement choisi, afin d'éviter une situation embarrassante avec l'administration fiscale.
{% endhint %}

{% tabs %}
{% tab title="Calculateur" %}
Exemple 1 :&#x20;

<div data-with-frame="true"><figure><img src="/files/91d0369e5acf3c40bc665f538dcffa463e1d99c5" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Description des paramètres" %}
`get_robokassa_payment_url(amount, description, products_for_receipt, recurrent, currency)`

#### Paramètres de la fonction :

<table><thead><tr><th width="190">Paramètre</th><th>Valeur du paramètre</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td><p><mark style="color:par défaut;background-color:blue;">Montant à payer.</mark>  Dans ce champ, nous indiquons le coût du produit en roubles. </p><p><strong>(paramètre obligatoire)</strong></p></td></tr><tr><td><strong><code>description</code></strong></td><td><mark style="color:par défaut;background-color:blue;">Nom du produit.</mark>  Dans ce champ, vous ne pouvez utiliser que des caractères de l'alphabet anglais ou russe, des chiffres et des signes de ponctuation. La longueur maximale est de 100 caractères. Cette information s'affiche dans l'interface Robokassa et dans le reçu électronique que le client reçoit après un paiement réussi. <br><strong>(paramètre obligatoire)</strong></td></tr><tr><td><p><strong><code>products_for_</code></strong></p><p><strong><code>receipt</code></strong></p></td><td><p><mark style="color:par défaut;background-color:blue;">Paramètres pour la génération des reçus.</mark> </p><p>Pour en savoir plus, lisez <a href="#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment">ici.</a> </p></td></tr><tr><td><strong><code>recurrent</code></strong></td><td><mark style="color:par défaut;background-color:blue;">Connexion de l'autopaiement.</mark> Si l'autopaiement est activé, transmettez la valeur 1 ; s'il est désactivé, transmettez None</td></tr><tr><td><strong><code>currency</code></strong></td><td><p><mark style="color:par défaut;background-color:blue;">Code de devise à trois lettres.</mark></p><p>La valeur doit être transmise strictement selon les paramètres acceptés par le service Robokassa.<br>USD - dollar ;<br>EUR - euro ;<br>KZT - tenge.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemple de code à copier" %} <mark style="color:vert;">Exemple 1 : lien de paiement sans reçu</mark>\
\
`res = get_robokassa_payment_url(100, 'Achète-moi')`

<mark style="color:vert;">Exemple 2 : lien de paiement avec reçu</mark>\
\
`receipt = [{"name":"DDDDDDDD","amount":"44","quantity":"1","vat_code":"5","method":"full_payment","object":"commodity"}]`

`res = get_robokassa_payment_url(100, 'Achète-moi', receipt, '3', 1, 1)`
{% endtab %}
{% endtabs %}

{% hint style="info" %}
La variable peut être affichée sous forme de lien dans un message ou placée dans un bouton avec le texte, par exemple, « Acheter ».&#x20;
{% endhint %}

{% hint style="warning" %}
Si plusieurs fonctions de récupération du lien sont présentes dans le bloc et qu'une erreur se produit, la valeur de l'erreur sera enregistrée dans la variable  **`error_payment_func`**

\
L'erreur sera enregistrée à la dernière fonction du Calculateur
{% endhint %}

Après avoir correctement configuré le paiement et généré le lien de paiement, testez les paramètres créés.&#x20;

## Comment ajouter une description au paiement

Vous pouvez ajouter une description au paiement en définissant la variable **payment\_description**

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

Cette description s'affichera dans le formulaire de paiement, ainsi que sur le reçu.

### Comment traiter le résultat

Si le paiement réussit, alors dans la conversation client (section « Clients ») <mark style="color:orange;">**AUTOMATIQUEMENT**</mark> arrivera un CALLBACK composé de 10 caractères de la clé secrète de la plateforme de paiement, du mot \_success et, séparé par un espace, du montant du paiement. **Le callback est généré automatiquement**, il n'est pas nécessaire de le composer soi-même ni de le demander au support de la plateforme de paiement,&#x20;

Par exemple : `ovg58keefc_success 1500`, où :&#x20;

ovg58keefc : 10 caractères de la clé secrète de la plateforme de paiement

\_success : résultat du traitement de la requête (paiement réussi)

1500 : montant du paiement

{% hint style="success" %}
Attention !&#x20;

Le callback n'est visible que pour vous dans la conversation avec le client.&#x20;

Le callback n'est pas visible pour le client, mais vous pouvez configurer une réaction à l'exécution réussie du paiement.
{% endhint %}

### Exemple

Paramètres du bloc avec la fonction `get_robokassa_payment_url :`

1. Si vous fournissez le lien dans le texte :

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

{% hint style="warning" %}
Important !&#x20;

Le lien de paiement est unique : il est impossible de le copier et de l'envoyer ensuite à d'autres clients !&#x20;

Envoyez le lien de paiement via une variable dans le bot (voir fig. 17).&#x20;
{% endhint %}

Callback en cas de paiement réussi :

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

2. Lien dans le bouton :

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

Exécution du bloc :

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

Callback en cas de paiement réussi :

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

## Création d'un lien à l'aide de la variable payment\_sum et de paramètres supplémentaires

Vous pouvez également accepter le paiement en générant un lien à l'aide de la variable payment\_sum, dans laquelle il suffit d'indiquer le montant du paiement.&#x20;

{% hint style="info" %}
**Attention :** de la variable **payment\_sum** est attribuée en dernier, après les variables facultatives **payment\_description, product\_name** etc.&#x20;
{% endhint %}

Pour générer un lien de paiement, vous devez définir la valeur de la variable **payment\_sum**, immédiatement après cela la variable **robokassa\_pay\_url.** Vous pouvez afficher cette variable sous forme de lien ou la placer dans un bouton avec le texte « Payer ».&#x20;

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

**EXEMPLE d'exécution du bloc (liens de paiement) :**

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

{% hint style="warning" %}
Important !&#x20;

Le lien de paiement est unique : il est impossible de le copier et de l'envoyer ensuite à d'autres clients !&#x20;

Envoyez le lien de paiement via une variable dans le bot
{% endhint %}

Pour transmettre le lien dans le bouton, indiquez la variable dans le champ url du bouton :

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

### Résultat du paiement lors de la génération du lien de paiement via payment\_sum

Après un paiement réussi, un callback arrivera dans le bot. Dans le système, ce callback apparaît comme un message de l'utilisateur ; pour éviter qu'il ne puisse être envoyé par l'utilisateur, ils sont composés du premier mot de passe du service Robokassa et d'un suffixe avec le statut success, par exemple : **qxgZ7zkNX4HHnG8UpZ61\_success.**

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

Après un paiement réussi, la variable **robokassa\_payment\_completed** est définie sur **True.**

Ce callback **NE VOIT PAS** le client, ils s'affichent uniquement pour l'opérateur

{% hint style="danger" %}
Le type de correspondance doit être "**Correspondance exacte**"
{% endhint %}

{% hint style="warning" %}
Pour effectuer un nouveau paiement, il faut impérativement remettre à zéro **payment\_sum**, le lien précédemment généré, puis réaffecter la variable payment\_sum pour obtenir un nouveau lien\
\
Exemple de remise à zéro des variables : \
robokassa\_pay\_url=''\
payment\_sum=0
{% endhint %}

Après la fin du paiement, la variable **robokassa\_callback\_data**, contenant les données de réponse de la plateforme de paiement concernant l'opération effectuée. À partir du dictionnaire obtenu, vous pouvez extraire les données nécessaires à l'aide de la méthode **get**.

## Comment créer un schéma de test

Exemple de schéma qui permettra de tester et de commencer rapidement à utiliser le service Robokassa :

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

L'illustration montre un exemple du premier bloc, dans lequel on demande à l'utilisateur combien il souhaite paye&#x72;**.**

L'illustration ci-dessous montre les réglages de la flèche ; le commutateur « L'utilisateur saisit les données » doit y être activé et la variable **payment\_sum :**

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

Ensuite, dans le bloc de paiement suivant, ajoutez un bouton et définissez dans la ligne url la variable **robokassa\_pay\_url :**

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

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

Le schéma fonctionnera comme suit :

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

Au clic sur le bouton, le montant saisi par le client sera disponible au paiement.

Après le paiement, un callback arrivera, auquel on peut également configurer une réaction.&#x20;

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

{% hint style="info" %}
Important !&#x20;

Il n'existe pas de callback de paiement échoué dans Robokassa.
{% endhint %}

Pour cela, ajoutez un autre bloc avec condition, et dans la ligne de condition indiquez un callback du type «**qxgZ7zkNX4HHnG8UpZ61\_success":**

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

{% hint style="info" %}
Le type de vérification doit impérativement être « Correspondance exacte »
{% endhint %}

Le schéma fonctionnera comme suit :

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

## Comment générer une demande de fiscalisation

### Dans le bouton avec la fonction « Paiement »

Lors de la création du bouton dans le menu déroulant « Données pour la génération du reçu », remplissez les champs « Nom du produit », « Montant total en roubles », « Quantité », « Taux de TVA », « Système d'imposition ».

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

Plus de détails dans la section "[Pour générer un reçu](#dlya-formirovaniya-cheka)".

### À l'aide de la variable payment\_sum

Comme la génération du lien se fait au moment où vous avez défini la valeur de la variable payment\_sum, vous devez définir les variables products\_for\_receipt et robokassa\_sno.

{% hint style="warning" %}
Important :&#x20;

* lors de la génération du lien via la variable payment\_sum, le système d'imposition est défini dans la variable robokassa\_sno.
* payment\_sum doit être égale au coût total de tous les produits (somme de tous les paramètres sum).
  {% endhint %}

Exemple :

session\_timeout = 7200

product\_name = Premier paiement

robokassa\_sno = osn

products\_for\_receipt = \[{"name": "Nom du produit", "quantity": 2, "sum": 2, "tax": "none"}, {"name": "Nom du produit 2", "quantity": 1, "sum": 6, "tax": "none"}]

payment\_sum = 10

### Pour les fonctions get\_robokassa\_payment\_url et robokassa\_recurrent\_payment

Lors de l'appel des fonctions **get\_robokassa\_payment\_url** ou de la fonction **robokassa\_recurrent\_payment** transmettez en tant qu'arguments les variables **taxation** et **products\_for\_receipt** selon la description ci-dessou&#x73;**.**

Les fonctions prépareront un lien en tenant compte de la nomenclature des produits et généreront une demande de fiscalisation.

{% hint style="warning" %}
Important :

Les variables **taxation** et **products\_for\_receipt** doivent être définies pour chaque paiement individuel.

Le service Robokassa ne stocke pas ces paramètres et ne pourra pas effectuer la fiscalisation des paiements pour lesquels la nomenclature n'a pas été transmise.
{% endhint %}

1. **products\_for\_receipt** - tableau contenant la nomenclature des produits.&#x20;

Chaque unité de produit doit être représentée sous la forme d'un dictionnaire contenant les paramètres **name, quantity, sum, tax, payment\_method, payment\_object et nomenclature\_code**.

\
&#x20;<mark style="color:rouge;">**!**</mark>**&#x20;products\_for\_receipt** doivent être indiqués dans le format suivant :

\[

{"name": "Nom du produit", "quantity": "Quantité du produit", "sum": "Coût du produit", "tax": "Taux de TVA"},

{"name": "Nom du produit 2", "quantity": "Quantité du produit 2", "sum": "Coût du produit", "tax": "Taux de TVA"}

]

où,&#x20;

1\) **name** - nom du produit. Si vous utilisez des caractères spéciaux dans le nom du produit, par exemple des guillemets, ils doivent impérativement être échappés.

2\) **quantity** - quantité ou poids du produit (nombre entier ou décimal avec un point)

3\) **sum** ou **amount** (*obligatoire, deux variantes de nom*) - montant total en roubles pour toute la quantité de ce produit, en tenant compte de toutes les remises, bonus et prix spéciaux possibles.

4\) **tax** ou **vat\_code** - (obligatoire, deux variantes de nom, la valeur dépend du nom) - taux de TVA. Ce paramètre définit le taux d'imposition dans la caisse enregistreuse.

{% tabs %}
{% tab title="Valeurs pour tax :   " %}

<table data-full-width="true"><thead><tr><th width="272"> Valeur</th><th>Description</th></tr></thead><tbody><tr><td>none</td><td>sans TVA</td></tr><tr><td>vat0</td><td>TVA au taux de 0 %</td></tr><tr><td>vat5</td><td>TVA au taux de 5 %</td></tr><tr><td>vat12</td><td>TVA au taux de 12 %</td></tr><tr><td>vat16</td><td>TVA au taux de 16 %</td></tr></tbody></table>
{% endtab %}

{% tab title="Valeur pour vat\_code :" %}

<table><thead><tr><th width="209">Valeurs</th><th> Description</th></tr></thead><tbody><tr><td>'1' </td><td>Sans TVA</td></tr><tr><td>'2' </td><td>TVA au taux de 0 %</td></tr><tr><td>'8'</td><td>TVA au taux de 5 %</td></tr><tr><td>'15'</td><td>TVA au taux de 12 %</td></tr><tr><td>'14'</td><td>TVA au taux de 16 %</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

5\) **method** ou **payment\_method** - (deux variantes de nom, paramètre facultatif) indicateur du mode de calcul.&#x20;

<table><thead><tr><th width="345" align="center">Valeurs possibles du paramètre :</th><th>Ce que signifie la valeur : </th></tr></thead><tbody><tr><td align="center">full_prepayment</td><td>prépaiement à 100 %. Paiement préalable intégral avant la remise de l'objet du calcul</td></tr><tr><td align="center">prepayment</td><td>prépaiement. Paiement préalable partiel avant la remise de l'objet du calcul</td></tr><tr><td align="center">advance</td><td>acompte</td></tr><tr><td align="center">full_payment </td><td>règlement complet. Paiement intégral, y compris en tenant compte de l'acompte (paiement préalable) au moment de la remise de l'objet du calcul;</td></tr><tr><td align="center">partial_payment </td><td>règlement partiel et à crédit. Paiement partiel de l'objet du calcul au moment de sa remise, avec paiement ultérieur à crédit;</td></tr><tr><td align="center">credit </td><td>remise à crédit. Remise de l'objet du calcul sans paiement au moment de sa remise, avec paiement ultérieur à crédit;</td></tr><tr><td align="center">credit_payment</td><td>paiement du crédit. Paiement de l'objet du calcul après sa remise avec paiement à crédit (paiement du crédit).</td></tr></tbody></table>

6\) **object** ou **payment\_object** - (deux variantes du nom, paramètre facultatif) objet du calcul (si non transmis, ce sera commodity (marchandise))

<table><thead><tr><th width="328" align="center">Valeurs possibles du paramètre</th><th>Ce que signifie la valeur</th></tr></thead><tbody><tr><td align="center"><strong>commodity</strong></td><td>Marchandise. À propos de la marchandise vendue, à l’exception de la marchandise soumise à accise (nom et autres informations décrivant la marchandise)</td></tr><tr><td align="center"><strong>excise</strong> </td><td>Marchandise soumise à accise. À propos de la marchandise soumise à accise vendue (nom et autres informations décrivant la marchandise)</td></tr><tr><td align="center"><strong>job</strong></td><td>Travail. À propos du travail effectué (nom et autres informations décrivant le travail)</td></tr><tr><td align="center"><strong>service</strong></td><td>Service. À propos du service fourni (nom et autres informations décrivant le service)</td></tr><tr><td align="center"><strong>gambling_bet</strong></td><td>Mise de jeu d’argent. Concernant l’acceptation des mises lors de l’activité d’organisation de jeux d’argent</td></tr><tr><td align="center"><strong>gambling_prize</strong></td><td>gain d’un jeu d’argent. Concernant le versement de fonds sous forme de gain lors de l’activité d’organisation de jeux d’argent</td></tr><tr><td align="center"><strong>lottery</strong></td><td>billet de loterie. Concernant l’acceptation de fonds lors de la vente de billets de loterie, de billets de loterie électroniques, de l’acceptation de mises de loterie lors de l’activité d’organisation de loteries</td></tr><tr><td align="center"><strong>lottery_prize</strong></td><td>gain de loterie. Concernant le versement de fonds sous forme de gain lors de l’activité d’organisation de loteries</td></tr><tr><td align="center"><strong>intellectual_activity</strong> </td><td>fourniture des résultats d’une activité intellectuelle. Concernant l’octroi de droits d’utilisation des résultats d’une activité intellectuelle ou des moyens d’individualisation</td></tr><tr><td align="center"><strong>payment</strong></td><td>paiement. À propos d’un acompte, arrhes, prépaiement, crédit, versement sur le montant dû, pénalité, amende, rémunération, bonus et autre objet de calcul similaire</td></tr><tr><td align="center"><strong>agent_commission</strong> </td><td>rémunération d’agent. À propos de la rémunération de l’utilisateur qui est agent de paiement (sous-agent), agent de paiement bancaire (sous-agent), commissionnaire, mandataire ou autre agent ;</td></tr><tr><td align="center"><strong>composite</strong></td><td>objet de calcul composite. À propos d’un objet de calcul composé d’objets, chacun desquels peut se voir attribuer la valeur des signes énumérés ci-dessus</td></tr><tr><td align="center"><strong>another</strong></td><td>autre objet de calcul. À propos d’un objet de calcul ne relevant pas des objets de calcul énumérés ci-dessus</td></tr><tr><td align="center"><strong>property_right</strong></td><td>droit de propriété</td></tr><tr><td align="center"><strong>non-operating_gain</strong></td><td>revenu hors exploitation</td></tr><tr><td align="center"><strong>insurance_premium</strong></td><td>cotisations d’assurance</td></tr><tr><td align="center"><strong>sales_tax</strong></td><td>taxe sur le commerce</td></tr><tr><td align="center"><strong>resort_fee</strong></td><td>taxe de séjour</td></tr></tbody></table>

7\) **nomenclature\_code** - (conditionnellement obligatoire) marquage du produit : transmis tel qu’il est imprimé sur l’emballage du produit.&#x20;

{% hint style="warning" %}
Le paramètre est obligatoire uniquement pour les magasins qui vendent des produits soumis au marquage obligatoire.&#x20;

Le code de marquage se trouve sur l’emballage du produit, à côté du code-barres ou sous forme de code QR.
{% endhint %}

{% hint style="warning" %}
Important ! Pour la fiscalisation, il est important de transmettre les paramètres du reçu.&#x20;

Le format correct du reçu est transmis de la manière suivante :

rec = \[{"name": "Forfait 1 mois", "quantity": 1, "sum": 4800, "tax": "none"}]

response = robokassa\_recurrent\_payment(4800, 'Formation à l’école de pilotage Aviator', 'ru', rec, 'osn')

où il faut remplacer par vos propres données.&#x20;
{% endhint %}

## Création du reçu lors de l’acceptation du paiement dans les Cours sur la page du cours

Il faut sélectionner le système de paiement Robokassa dans la section « Paiement » des paramètres du cours :

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

Renseignez dans la section « Acquéreur » des paramètres du système de paiement (si cela n’a pas été fait auparavant) le champ « Taux de TVA ».

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

## Quelles erreurs peuvent survenir

#### Code d’erreur 40

« Un second paiement d’une facture avec le même numéro est impossible. »

Après un paiement réussi, il faut transférer la conversation vers le bloc « Fin de la collecte des données », afin qu’un nouveau numéro de paiement soit généré.

#### Code d’erreur 34

« Le service de paiements récurrents n’est pas autorisé pour ce magasin. »

#### Code d’erreur 31

« Montant du paiement incorrect. »

Une telle erreur peut survenir lors de la redirection du client vers la page de paiement pour l’émission de la facture. Cela signifie que vous ne nous transmettez pas le montant pour lequel le paiement doit être effectué, ou que vous transmettez un montant égal à zéro.

#### Code d’erreur 29

« Paramètre Signature incorrect »

Il peut y avoir plusieurs raisons, mais elles sont toutes liées au script chargé de l’initialisation du paiement (plus précisément, à sa partie qui forme le paramètre Signature selon une formule composée de variables). Cette erreur est assez fréquente, et voici 3 causes possibles :

* **Première :** identifiant de magasin incorrect (MerchantLogin) ;
* **Deuxième :** mot de passe 1 incorrect (MerchantPass1) ;
* **Troisième :** vous utilisez des paramètres supplémentaires (sh&#x70;**\_**), qui sont ajoutés au code du module de paiement, mais ne sont pas inclus dans la formule de calcul — ou l’inverse : ils sont indiqués dans la formule de calcul, mais pas dans le code. Si vous les utilisez, transmettez-les par ordre alphabétique — à la fois dans les paramètres de paiement et dans la formule de calcul du Signature.

Point important ! Si vous travaillez en mode test, en transmettant le paramètre IsTest=1 ou en l’activant par une case à cocher dans les paramètres du module/bot, utilisez uniquement la paire de mots de passe techniques de test (onglet « Paramètres techniques » de la fiche de votre magasin).

#### Code d’erreur 23

« Le paiement de test ne peut pas être créé. Le magasin ne possède pas de paramètres de test. »

Cela signifie qu’avant d’effectuer un paiement de test, vous n’avez pas renseigné toutes les données nécessaires dans le bloc « Paramètres d’exécution des paiements de test » de l’onglet « Paramètres techniques ».

#### Code d’erreur 25

« Le magasin n’est pas activé. »

Cette erreur survient assez souvent, et il peut y avoir 2 raisons.

* **Première :** c’est bien le cas — et il faut activer le magasin, puis seulement émettre la facture.
* **Deuxième :** vous avez saisi de manière incorrecte l’identifiant du magasin dans les paramètres techniques du site. Vous pouvez consulter la valeur correcte dans la section « Mes magasins » de l’espace personnel. Allez dans l’onglet « Paramètres techniques » et trouvez le champ « Identifiant du magasin ». Copiez l’identifiant et saisissez-le dans les paramètres du site.

## **Comment effectuer les paiements automatiques du service Robokassa**

Instructions pas à pas pour connecter les paiements automatiques du service **Robokassa**

**Étape 1. Activer les paiements automatiques dans le bouton de paiement**

Allez dans les paramètres du bloc dans lequel vous fournissez le lien de paiement, puis allez dans les paramètres du bouton :

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

Ensuite, dans les paramètres du bouton, trouvez la case à cocher « Paiements automatiques » et activez-la :

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

Si vous souhaitez accepter les paiements automatiques dans tous les boutons de paiement, vous pouvez les activer dans les paramètres de connexion du système de paiement :

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

**Étape 2. Effectuer un paiement normal.**\
\
Ensuite, il faut effectuer un paiement normal (obtenir un lien de paiement et faire en sorte que le client le paie), comme décrit ci-dessus. Après un paiement réussi, la variable apparaîtra chez le client **robokassa\_previous\_invoice\_id** avec l’identifiant du paiement.

{% hint style="warning" %}
La variable **robokassa\_previous\_invoice\_id** est obligatoire pour les paiements ultérieurs.\
\
Si vous la supprimez, le prochain paiement automatique NE pourra pas être effectué.
{% endhint %}

{% hint style="danger" %}
Attention !&#x20;

<mark style="color:rouge;">**Désactivez**</mark> la case à cocher "**Paiements en mode test**" (si elle est active), sinon la variable robokassa\_previous\_invoice\_id avec l’identifiant du paiement ne sera pas générée !&#x20;

![](/files/b8bbc1152a6dcf5b77607b37d7ab3ac00e7534eb)
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/480ddb1bb379cfc0ef7b4d4f3351fd038209e0ff" alt=""><figcaption><p>Exemple de création de lien pour un paiement normal</p></figcaption></figure></div>

<div data-with-frame="true"><img src="https://lh4.googleusercontent.com/FGVcl0wzMK3_ldq7OxHe3653Q3buEgR29657HixPQ6xUrqoa2E2TpG3yCRdF5oDgj69VhnQRlZJZG_wjnnwQyIjkHRTQ8nr-Jzwyo99CtaiOT5JUuiMLuE2Jm3MDTBxKXJoD02gr=s0" alt=""></div>

**Étape 3. Planifier le prélèvement automatique**

Depuis le bloc Paiement réussi, nous planifions une flèche avec minuterie vers le bloc avec le paiement automatique. À titre d’exemple, planifions le paiement suivant dans 30 jours.&#x20;

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

Pour que le paiement automatique s’exécute dans le bloc souhaité, dans le champ Calculateur, il faut ajouter l’appel de la fonction **robokassa\_recurrent\_payment**, en lui transmettant les paramètres dans l’ordre indiqué :&#x20;

1. **payment\_amount** - montant à payer (prix du produit en roubles)
2. **description** - nom du produit. Dans ce champ, vous pouvez utiliser uniquement des caractères de l’alphabet anglais ou russe, des chiffres et des signes de ponctuation. La longueur maximale est de 100 caractères. Cette information est affichée dans l’interface Robokassa et dans le reçu électronique que le client reçoit après un paiement réussi.&#x20;
3. **country** - zone de domaine (« ru » ou « kz »)
4. **products\_for\_receipt** - paramètres pour la génération des reçus.

{% hint style="info" %}
Plus de détails dans la section « Comment générer une requête de fiscalisation -> [Pour les fonctions get\_robokassa\_payment\_url et robokassa\_recurrent\_payment](#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment)
{% endhint %}

5. **taxation** - régime fiscal.&#x20;

{% hint style="info" %}
Plus de détails dans la section « Comment générer une requête de fiscalisation -> [Pour les fonctions get\_robokassa\_payment\_url et robokassa\_recurrent\_payment](#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment)
{% endhint %}

Exemple de requête de paiement automatique :

<div data-with-frame="true"><figure><img src="/files/71cbb1def80d4e1bd385b3b106253c6e48d86634" alt="" width="533"><figcaption></figcaption></figure></div>

{% hint style="warning" %}
Lors de l’exécution d’un paiement automatique, il ne doit pas y avoir de lien de paiement Robokassa ni de variable **payment\_sum**!
{% endhint %}

*<mark style="color:bleu;">Étape 4. Planifier des prélèvements réguliers et configurer la possibilité de refuser les paiements automatiques.</mark>*\
\
Pour répéter régulièrement les paiements, nous planifions une boucle - une flèche avec délai, par exemple 30 jours.

<div data-with-frame="true"><figure><img src="/files/50b91366b7ff970e616dd068b728ea0eef0c8d19" alt=""><figcaption><p>Boucle - transition répétée vers le bloc Paiement automatique</p></figcaption></figure></div>

Si vous avez prévu la possibilité d’annuler les paiements automatiques, alors pour que le prochain paiement ne soit pas exécuté, il faut supprimer chez le client la variable `robokassa_previous_invoice_id`\
\
Pour cela, dans le champ Calculateur, nous supprimons la variable :\
\
`robokassa_previous_invoice_id = ""`

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

### Paiement normal avec les paiements automatiques activés

Si les paiements automatiques sont activés, mais qu’un lien sans abonnement (sans paiements automatiques) est nécessaire, alors avant de générer le lien, il faut définir la variable robokassa\_manual\_recurrent\_disable avec la valeur 1\
\
Dans le champ Calculateur, déclarons la variable :\
`robokassa_manual_recurrent_disable = 1`

<div data-with-frame="true"><figure><img src="/files/434990bfcae291864fb09990b30ba823335d8e86" alt=""><figcaption><p>Paramètres du bloc pour la génération d’un lien vers un paiement normal lorsque les paiements automatiques sont activés</p></figcaption></figure></div>

{% hint style="info" %}
Attention !&#x20;

Le callback des paiements automatiques est identique au callback reçu lors des paiements réussis.&#x20;

Nous avons expliqué comment configurer la réaction au callback dans la section "[Comment traiter le résultat](#kak-obrabotat-rezultat)"
{% endhint %}

## Quelles sont les exigences du service Robokassa pour les chatbots

Réponse officielle du service Robokassa :

> Vous pouvez placer un produit sur le marché avec une description et un prix et accepter le paiement dans le bot ; vous pouvez créer une page simple avec une description, un prix, des coordonnées et l’indication que la livraison du produit / la fourniture du service est électronique. Nous devons avoir un lien vers le produit sur le marché ou vers le site, car nous ne pouvons pas savoir ce que vous vendez dans votre bot ni dans quel bot nous sommes.
>
> Nous n’incluons pas le lien vers le canal Telegram comme URL. Les exigences concernant le contenu du site sont également les suivantes : « Le site doit être fonctionnel, avec un contenu renseigné et des liens internes opérationnels.
>
> Les produits et services sur votre site doivent être décrits en détail : la description doit inclure les caractéristiques des produits et services proposés, leurs propriétés pour le consommateur et leur prix actuel.
>
> Votre site doit obligatoirement afficher des informations à jour : téléphone, e-mail, règles de passation et délais d’exécution de la commande, conditions de paiement, de livraison et de retour.
>
> Chaque site est examiné individuellement.

## Robokassa dans Telegram

### Connexion du bot de test RobokassaPaymentTestBot.

1. Lors du choix de Connect Robokassa Test, l’utilisateur est redirigé vers le bot RobokassaPaymentTestBot.
2. L’utilisateur appuie sur le bouton /start.
3. L’utilisateur reçoit une réponse du bot : « Entrez l’ID du magasin ».
4. Il faut saisir l’id du magasin dans le service Robokassa.
5. Le bot demandera une confirmation attestant de la propriété du magasin via l’envoi d’un SMS au numéro indiqué dans le magasin : « SMS envoyé au numéro \*%%%% » où %%%% correspond aux 4 derniers chiffres du téléphone
6. L’utilisateur saisit un code à 6 chiffres.
7. Si tout est réussi, le message suivant s’affichera à l’utilisateur : « Vous avez connecté avec succès le bot @BotName à Robokassa. @BotFather vous сообщera un nouveau token. »
8. Après cela, un token de paiement apparaît dans BotFather, auquel les paiements sont connectés.

### Connexion du bot live RobokassaPaymentBot.

1. Lors du choix de Connect Robokassa Live, l’utilisateur est redirigé vers le bot RobokassaPaymentBot,
2. L’utilisateur appuie sur le bouton /start.
3. L’utilisateur reçoit une réponse du bot : « Entrez l’ID du magasin ».
4. Il faut saisir l’id du magasin dans le service Robokassa.
5. Le bot demandera une confirmation attestant de la propriété du magasin via l’envoi d’un SMS au numéro indiqué dans le magasin : « SMS envoyé au numéro \*%%%% », où %%%% correspond aux 4 derniers chiffres du téléphone
6. L’utilisateur saisit un code à 6 chiffres.
7. Si tout est réussi, le message suivant s’affichera à l’utilisateur : « Vous avez connecté avec succès le bot @BotName à Robokassa. @BotFather vous сообщera un nouveau token. »
8. Après cela, un token de paiement apparaît dans BotFather, auquel les paiements sont connectés.

Le traitement des résultats de paiement est similaire à celui décrit [ici](#kak-poluchit-uvedomlenie-o-rezultate-oplaty)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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/integrations/payment/robokassa-kz.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.
