> 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/prodamus-blr.md).

# Prodamus (BLR)

{% hint style="success" %}
Disponible uniquement dans l’offre « Infobiz ».
{% endhint %}

## Comment connecter Prodamus

Pour connecter Prodamus, vous aurez besoin de l’URL du formulaire de paiement et de la clé secrète.

<mark style="color:vert;">**URL du formulaire de paiement**</mark> vous l’obtenez après l’inscription, il <mark style="color:vert;">**ressemble à : demo.payform.ru**</mark>

La clé secrète peut être obtenue dans l’espace personnel ; il faut également y renseigner l’URL des notifications.

<div data-with-frame="true"><figure><img src="/files/e2d040c853402906185c9b80369368853ea2e3b8" alt=""><figcaption><p>Clé secrète dans les paramètres du formulaire de l’espace personnel du système de paiement « Prodamus »</p></figcaption></figure></div>

Instructions détaillées pour le faire : <https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch>

Adresse des notifications : **<https://chatter.salebot.pro/prodamus\\_callback/result>**

Cette adresse doit être renseignée dans les paramètres à deux endroits.

Sur la page principale des paramètres, vous pouvez choisir le mode de fonctionnement du formulaire : mode démo sans paiements ou mode paiements :

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

L’adresse des notifications doit être renseignée dans les paramètres du système de paiement à deux endroits : l’onglet Paramétrage du formulaire - pour les paiements standards, et l’onglet Abonnements - pour les paiements par abonnement.&#x20;

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

Adresse des notifications : **`https://chatter.salebot.pro/prodamus_callback/result`**

Pour configurer le fonctionnement avec **les paiements par abonnement**  allez dans l’onglet Abonnements et renseignez l’adresse des notifications : <https://chatter.mavibot.ai/prodamus\\_callback/result>

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

{% hint style="warning" %}
Attention ! Après avoir saisi l’URL, cliquez impérativement sur le bouton « Enregistrer ».
{% endhint %}

Pour connecter Prodamus, il faut aller dans la section « Acquéreur »

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

Ensuite, il suffit d’indiquer dans le formulaire les données évoquées ci-dessus :

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

{% hint style="warning" %}
**IMPORTANT !** l’url du formulaire de paiement est indiquée SANS https\://&#x20;
{% endhint %}

La connexion est terminée. Maintenant, voyons comment utiliser cette fonctionnalité.

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

{% hint style="success" %}
Vous pouvez générer un lien de paiement dans le bloc **L’UN DES** modes disponibles :

* [Bouton avec la fonction Paiement ](#knopka-s-funkciei-oplata)ou
* [Fonction get\_prodamus\_payment\_url dans la Calculatrice](#funkciya-get_prodamus_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

{% hint style="info" %}
[Le lien de paiement peut être créé dans un bouton avec la fonction « Paiement ». Cet article explique comment créer un tel bouton](/doc/fr/chatbot/builder/boutons/bouton-de-paiement.md)
{% endhint %}

Examinons tous les paramètres possibles de ce bouton.&#x20;

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

Pour générer un lien de paiement dans les paramètres du bouton, il faut indiquer <mark style="color:rouge;">**les paramètres obligatoires**</mark> "**Montant**", "**Nom du produit**», ainsi que le paramètre «**Contenu payé**» si vous **n’avez pas votre propre caisse en ligne** et que vous souhaitez recevoir un reçu de Prodamus.&#x20;

Lors de l’ouverture de la page de commande, les informations sur le produit et son prix seront déjà renseignées ; le client n’aura plus qu’à indiquer ses coordonnées.\
\
Si, dans les paramètres du bouton, vous indiquez l’email et/ou le téléphone de l’utilisateur, la page de commande affichera les coordonnées du payeur ainsi que les informations sur le produit et son prix.

<div data-with-frame="true"><figure><img src="/files/32bd12eabf5a7a668c34f438acd8299a8163580d" alt="" width="563"><figcaption><p>Fenêtre des paramètres du bouton</p></figcaption></figure></div>

**champ Texte.** Ce texte sera affiché sur le bouton avec le lien de paiement dans le message

**champ Fonction.** Pour créer un bouton permettant de fournir un lien de paiement, choisissez la fonction Paiement

**champ Système de paiement.** Les systèmes de paiement connectés au projet sont affichés dans la liste

{% hint style="warning" %}
Si aucun système de paiement n’est connecté au projet, ce type de bouton ne sera pas disponible
{% endhint %}

**champ Nom du produit (obligatoire).** Dans ce champ, il faut indiquer le nom du produit. Plus le nom est précis, mieux c’est. Par exemple : pas « Téléphone », mais « Smartphone Xiaomi modèle … »&#x20;

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

**champ Montant (obligatoire).**  Dans ce champ, indiquez le prix du produit.&#x20;

**menu Informations supplémentaires.** En cliquant sur ce bouton, des champs supplémentaires pour générer le lien s’ouvriront

* Description de la commande
* Remise en roubles
* Variable avec l’email de l’acheteur
* Variable avec le numéro de téléphone de l’acheteur
* Durée de vie du lien
* ID du produit pour l’abonnement (pour créer des paiements récurrents)
* Contenu payé&#x20;

**case à cocher Notifications de clic.** Pour suivre le passage par le lien de paiement, vous pouvez cocher la case. Dans ce cas, lorsqu’on clique sur le bouton, une notification indiquant qu’un passage par le lien a été effectué arrivera dans la conversation avec le client dans Salebot

<div data-with-frame="true"><figure><img src="/files/51ea93d2a93d85f7d6569484f0c86e7888274787" alt="" width="431"><figcaption><p>Callback après le passage du client par le lien</p></figcaption></figure></div>

Cette notification peut servir à configurer la logique ultérieure du bot.&#x20;

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

Voici à quoi ressemble la page de paiement qui s’ouvre après avoir cliqué sur le lien dans le bouton Paiement :

<div data-with-frame="true"><figure><img src="/files/e1627a27f2f6f046ca7fea039418a4551b908934" alt="" width="563"><figcaption><p>Page de paiement : seuls les paramètres principaux sont renseignés dans le bouton</p></figcaption></figure></div>

### Paramètres supplémentaires pour générer le lien de paiement

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

**champ Description de la commande.**  Les informations saisies dans ce champ seront affichées sur la page de paiement dans le champ Données supplémentaires

**champ Remise.** Dans ce champ, vous pouvez indiquer le montant de la remise en roubles ou en roubles et centimes. Pour saisir un montant avec des centimes, utilisez un point comme séparateur : 50.99\
Sur la page de paiement, le champ Montant à payer indiquera le montant après remise, et le prix principal du produit sera barré.&#x20;

**Champ Variable avec l’email de l’acheteur** (facultatif si le numéro de téléphone est fourni) Ce champ indique l’email de l’utilisateur (client). Vous pouvez y mettre la variable dans laquelle l’email de l’utilisateur est stocké.&#x20;

Par exemple, #{email}

**Champ Variable avec le numéro de téléphone de l’acheteur** (facultatif si l’email est fourni). Dans ce champ, vous pouvez indiquer la variable dans laquelle le numéro de téléphone de l’acheteur est enregistré au format 79000000000\
Par exemple, #{phone}

{% hint style="danger" %}
L’email et/ou le téléphone doivent obligatoirement être présents
{% endhint %}

**champ Durée de vie du lien.** Vous pouvez indiquer une date au format jj.mm.aaaa hh:mm (par exemple 25.01.2021 11:00) ou utiliser des variables pour définir la date d’expiration du lien. \
Exemple d’utilisation d’une variable : `#{link_expired}`

**champ ID du produit par abonnement.**  Pour effectuer un paiement récurrent, transmettez la valeur de l’ID du produit. Pour créer un abonnement, il faut créer un produit d’abonnement.&#x20;

Instructions détaillées pour créer un produit d’abonnement : <https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski>

{% hint style="danger" %}
Si vous transmettez la valeur de l’ID du produit par abonnement, le montant du paiement n’est pas pris en compte. Les données du produit seront récupérées depuis la fiche produit dans l’espace personnel Prodamus
{% endhint %}

Le numéro de téléphone indiqué lors du paiement sera nécessaire pour gérer l’abonnement.

{% hint style="warning" %}
Si vous transmettez **l’ID du produit par abonnement**, alors le callback en cas de paiement réussi transmettra l’ID de ce produit
{% endhint %}

**Champ Contenu payé** (conditionnellement obligatoire). Les données sont nécessaires à la fiscalisation des paiements Prodamus si vous n’avez pas votre propre caisse en ligne. Dans ce champ, il faut indiquer la description de l’achat, son prix et le lien vers la ressource contenant le contenu.&#x20;

*Par exemple*: *Cours « Tressage de tresses », prix 3000 roubles, lien vers la page du cours :* [*https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911*](https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911).&#x20;

Ces données sont nécessaires pour la transmission à la FNS.

#### Bouton avec la fonction paiement

Si vous indiquez la durée de vie du lien, alors en cas de

1. Lorsque l’utilisateur a demandé le lien de paiement pendant sa période active (c’est-à-dire que sa durée de vie n’est pas encore expirée) et qu’il est présent dans la conversation, il ne pourra pas payer et recevra une notification du type suivant :

<div data-with-frame="true"><figure><img src="https://lh7-rt.googleusercontent.com/docsz/AD_4nXcA1KJHoyMF5WmLMZiJPJrQEGJs79zxoXK5U3E9k4mVus-Fg0tI-djr6QTagp5ulwposSxmJ-aq8trUQOslQyE0UeaREuM6-T5Ongn-E5tACdVmypFXBtgOJDmVvHRgOdATChhnBQ?key=OB7qKicH0kn-_i_EzQLdRA" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
La date d’expiration du lien doit être postérieure à la date actuelle, sinon le client ne pourra pas non plus payer via ce lien.&#x20;
{% endhint %}

2\. Lorsque l’utilisateur demande le lien alors qu’il est déjà inactif\
Dans ce cas, le bouton n’apparaîtra tout simplement pas. Et dans les variables du client apparaîtra la variable "error\_payment\_button", qui contient la valeur suivante : "Erreur : la date d’expiration du lien doit être postérieure à la date actuelle".

{% hint style="success" %}
Pour que l’utilisateur puisse payer correctement, il est souhaitable de traiter ce cas en plus.&#x20;
{% endhint %}

Comment faire ?

Créez un bloc avec une condition, dans lequel vous indiquez que si une notification de ce type est reçue, error\_payment\_button == "Erreur : la date d’expiration du lien doit être postérieure à la date actuelle"&#x20;

Avec le texte : "Désolé, vous n’avez pas eu le temps et le lien de paiement n’est plus valide" :

<div data-with-frame="true"><figure><img src="/files/5bb630d64c40433202ff4cd7cd77ec24d3182a63" alt=""><figcaption><p>Conversation dans la section « Clients »</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/71e3c1f4eb81a9e6b6f53b82a83895747664814c" alt=""><figcaption><p>Paramétrage du bloc « Condition initiale »</p></figcaption></figure></div>

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

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

Variable système du client **`__payments`** , qui stocke le montant, l’identifiant du lien créé, et sert à identifier le hook du système de paiement.

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

Variable client **`error_payment_button`** est créée si une erreur survient 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 en erreur du système de paiement.

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

### Comment traiter le résultat

**Paiement réussi.**

Après un paiement réussi, dans le bot <mark style="color:orange;">**AUTOMATIQUEMENT**</mark> un CALLBACK arrivera, composé des 10 premiers caractères de la clé secrète du système de paiement, du mot \_success et, séparé par un espace, du montant du paiement. \
\&#xNAN;*Pour l’utiliser dans les paramètres du schéma, il suffit de le copier.*&#x20;

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

ovg58keefc : les 10 premiers caractères de la clé secrète du système de paiement

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

44 : montant du paiement

{% hint style="info" %}
Les callbacks (notifications) du système de paiement ne sont PAS visibles par l’utilisateur. Ils s’affichent uniquement dans l’onglet Clients et sont visibles par l’opérateur.
{% endhint %}

Exemple d’utilisation :\
Étape 1. Dans le bloc « avec le bouton Paiement », ajoutons des boutons avec la fonction Paiement.&#x20;

Étape 2. Dans le champ Condition de liaison entre ce bloc et le bloc « Paiement réussi », indiquons le callback. Cela fonctionne de la même manière si vous indiquez le callback de paiement réussi dans le champ Condition du bloc « Condition initiale ».

{% hint style="warning" %}
Important : choisissez la correspondance Complète ou Par présence de mots-clés
{% endhint %}

❗️Si vous décidez de vérifier le paiement précisément sur la flèche conditionnelle, alors réfléchissez à la logique de votre schéma. Si le client quitte le bloc via la transition conditionnelle avec callback, il n’y aura pas de passage vers le bloc. Il est logique d’utiliser cette méthode de vérification uniquement lorsque le client ne change pas de position dans l’entonnoir (position dans le schéma). \
Dans les schémas où le client se déplace entre les blocs, il vaut mieux utiliser l’option en indiquant le callback dans le bloc « Condition initiale ». <br>

<div data-with-frame="true"><figure><img src="/files/529a2c7da732776781910ca3772854f90789f7fa" alt=""><figcaption><p>Callback de paiement réussi dans le champ Condition du bloc.</p></figcaption></figure></div>

#### **Paiement réussi pour les produits avec abonnement automatique.**&#x20;

Après un paiement réussi, dans le bot <mark style="color:orange;">**AUTOMATIQUEMENT**</mark> un CALLBACK arrivera, composé des 10 premiers caractères de la clé secrète du système de paiement, du mot \_success et <mark style="color:vert;">**du ID du produit par abonnement, séparé par un espace**</mark>

Par exemple : `214009eefc_success 618117`, où :&#x20;

`009eefc` : 10 caractères de la clé secrète du système de paiement

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

`618117`: ID du produit par abonnement

<div data-with-frame="true"><figure><img src="/files/34b5f65b8ea9c5b3e6fa9e905a72655534b8fbd4" alt=""><figcaption><p>Exemple de callback de Prodamus pour les produits avec abonnement automatique</p></figcaption></figure></div>

**Paiement en erreur**

<mark style="color:bleu;">**En cas d’erreur lors du paiement**</mark> dans le bot <mark style="color:orange;">**AUTOMATIQUEMENT**</mark> un CALLBACK arrivera, composé des 10 caractères de la clé secrète du système de paiement, du mot \_fail et, séparé par un espace, du montant du paiement

Par exemple, `ovg58keefc_fail 44` , où

`ovg58keefc` : 10 caractères de la clé secrète du système de paiement

`_fail` : résultat du traitement de la requête - le paiement n’a pas été effectué ou comporte une erreur.&#x20;

`44` : montant du paiement

{% hint style="warning" %}
Cela dépend du système de paiement. Tous les systèmes de paiement n’envoient pas de callback d’erreur de paiement.
{% endhint %}

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

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

`ovg58keefc` : 10 caractères de la clé secrète du système de paiement

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

`123456` : ID unique du paiement

## Fonction get\_prodamus\_payment\_url dans la Calculatrice

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

Dans le champ Calculatrice, nous affectons à la variable la valeur de la fonction `get_prodamus_payment_url`&#x20;

{% hint style="info" %}
Le nom de la variable est défini par vous-même. Les captures d’écran montrent des exemples de noms de variables.&#x20;
{% endhint %}

Dans cette variable sera enregistrée le lien de paiement. Vous pouvez afficher la variable à l’écran sous forme de lien dans le message ou la placer sur un bouton avec le texte « Payer ».&#x20;

**EXEMPLE de lien de paiement :** <https://payform.ru/7p3JR8/>

{% tabs %}
{% tab title="Calculatrice" %}
Exemple 1 :

<figure><img src="/files/f116e0519f6cad42a395a55c764b3cebaf15ef44" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Description des paramètres" %}
`votre_variable =`` `**`get_prodamus_payment_url(amount, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)`**

**Paramètres de la fonction :**

<table><thead><tr><th width="253">Paramètre</th><th>Valeur du paramètre</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td>montant à payer. Vous pouvez transmettre un entier ou un nombre avec un point. Par exemple 25 ou 52.5  <mark style="color:vert;">(paramètre obligatoire)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nom du produit. <mark style="color:vert;">(paramètre obligatoire)</mark></td></tr><tr><td><strong><code>expired</code></strong></td><td><p>durée de vie du lien de paiement, au format <strong>jj.mm.aaaa</strong> (par exemple 25.01.2021). Vous pouvez aussi, dans le champ « Calculatrice<em>"</em> indiquer : <em>expired = current_date + 2</em> (le lien sera valide 2 jours jusqu’à 00:00).  <code>expired</code> on peut aussi indiquer une date avec une heure précise, séparée par un espace, au format <strong>jj.mm.aaaa hh:mm</strong> (par exemple : <em>25.01.2021 12:23</em>). On peut aussi utiliser des variables standard, par exemple définissons une durée de validité du lien de 30 minutes : </p><p><code>time = current_time + 30</code><br><code>expired = "#{current_date} #{time}"</code><br><br>Pour ignorer ce paramètre, transmettez à la place une paire de guillemets simples ou doubles, ou la valeur None</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td>numéro de téléphone de l’acheteur, facultatif si le paramètre <code>customer_email</code> Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td>email de l’acheteur, facultatif si le paramètre <code>customer_phone</code> Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>discount</code></strong></td><td>montant de la remise. On transmet un nombre entier ou un nombre avec point : 25 ou 63.5   Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>description</code></strong></td><td>description du produit (si non renseigné, se remplit par 'Paiement de la facture order_id') Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p>paramètres supplémentaires qui n’existent pas dans cette fonction.<br>Les paramètres supplémentaires possibles peuvent être consultés via le lien dans la documentation de l’API du système de paiement <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov</a><br><br>Exemple : extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}<br></p><p><em>Pour ignorer ce paramètre, transmettez à la place une paire de guillemets simples/une paire de guillemets doubles ou la valeur None.</em></p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>Chaîne de 50 à 4000 caractères au format</strong> "description de la commande - prix - lien vers la ressource achetée”. </p><p>Par exemple :</p><p>“Cours « Pêche à la brème », prix 4999 roubles, lien vers la page du cours : https://www.lovilescha.ru/courses/poimai_kilogram/". <strong>Obligatoire</strong>, si vous n’avez pas votre propre caisse en ligne, pour la fiscalisation des paiements via Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemple de code à copier" %}
**extra\_params** = {<mark style="color:rouge;">"payments\_limit"</mark>: <mark style="color:rouge;">"3"</mark>}&#x20;

**products\_for\_receipt** = "<mark style="color:rouge;">Cours « Pêche à la brème »</mark>, <mark style="color:rouge;">prix 4999 roubles</mark>, <mark style="color:rouge;">lien vers la page du cours : <https://www.lovilescha.ru/courses/poimai\\_kilogram/>"</mark>&#x20;

**link\_prodamus\_url** = get\_prodamus\_payment\_url(<mark style="color:bleu;">4999</mark>, <mark style="color:rouge;">'Cours « Pêche à la brème »'</mark>, <mark style="color:rouge;">'27.03.2023 17:00', '79167777771'</mark>, <mark style="color:rouge;">'<mail@mail.com>'</mark>, <mark style="color:bleu;">20</mark>, <mark style="color:rouge;">'Meilleur cours du marché'</mark>, extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Si, dans le bloc, plusieurs fonctions permettent d’obtenir le lien et qu’une erreur survient, la valeur de l’erreur sera enregistrée dans la variable  **`error_payment_func`**

\
L’erreur sera enregistrée par la dernière fonction dans la Calculatrice
{% endhint %}

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

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

Pour générer un lien de paiement, il vous suffit de définir dans le champ Calculatrice la valeur de la variable **payment\_sum.** Juste après, la variable **prodamus\_pay\_url**.&#x20;

**EXEMPLE de lien de paiement :**: <https://payform.ru/7p3JR8/>

Cette variable peut être affichée à l’écran sous forme de lien dans le message ou placée sur un bouton avec le texte « Payer ».&#x20;

Avant de déclarer la variable **payment\_sum** vous pouvez également indiquer les variables facultatives suivantes :&#x20;

| Paramètres de la fonction  | Description du paramètre                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **product\_name**          | nom du produit (si non indiqué, se remplit par 'Paiement de la facture order\_id') - la capture d’écran ci-dessous montre où il s’affiche                                                                                                                                                                                                                                                                                                                                       |
| **payment\_description**   | description du produit (si non indiqué, se remplit par 'Paiement de la facture order\_id', voir capture ci-dessous) - la capture d’écran ci-dessous montre où il s’affiche                                                                                                                                                                                                                                                                                                      |
| **discount\_value**        | montant de la remise (par exemple discount\_value = 25 ou discount\_value = 50.25)                                                                                                                                                                                                                                                                                                                                                                                              |
| **customer\_phone**        | numéro de téléphone de l’acheteur, facultatif si le paramètre                                                                                                                                                                                                                                                                                                                                                                                                                   |
| **customer\_email**        | email de l’acheteur                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **link\_expired**          | durée de vie du lien de paiement, au format **jj.mm.aaaa** (par exemple 25.01.2021). Vous pouvez aussi dans le champ "*Calculatrice"* indiquer : *link\_expired = current\_date + 2* (le lien sera valide 2 jours jusqu’à 00:00)                                                                                                                                                                                                                                                |
| **link\_expired**          | <p>on peut aussi indiquer une date avec une heure précise, séparée par un espace, au format <strong>jj.mm.aaaa hh:mm</strong> (par exemple : <em>25.01.2021 12:23</em>). On peut aussi utiliser des variables standard, par exemple définissons une durée de validité du lien de 30 minutes : </p><p>time = current\_time + 30<br>link\_expired = "#{current\_date} #{time}"</p>                                                                                                |
| **currency**               | <p>devise du paiement, par défaut « rub ». <br>Liste complète des arguments : </p><p>rub</p><p>usd</p><p>eur</p><p>kzt<br>Ce paramètre doit être transmis en minuscules.</p>                                                                                                                                                                                                                                                                                                    |
| **payment\_title**         | titre du paiement (jusqu’à 127 caractères). Si non indiqué, le texte suivant est renseigné : “Paiement de la facture payment\_id” (payment\_id - identifiant de la commande dans Salebot)                                                                                                                                                                                                                                                                                       |
| **payment\_description**   | courte description du paiement (jusqu’à 127 caractères)                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **locale**                 | langue de la page de paiement, indiquée au format en-US, fr-XC, etc. Par défaut - ‘ru-Ru’. La liste complète est disponible via le lien <https://developer.paypal.com/api/rest/reference/locale-codes/>                                                                                                                                                                                                                                                                         |
| **products\_for\_receipt** | <p><strong>Chaîne de 50 à 4000 caractères au format</strong> "description de la commande - prix - lien vers la ressource achetée”. </p><p>Par exemple :</p><p>“Cours « Pêche à la brème », prix 4999 roubles, lien vers la page du cours : <https://www.lovilescha.ru/courses/poimai_kilogram/>". </p><p><mark style="color:rouge;"><strong>Obligatoire</strong></mark>, si vous n’avez pas votre propre caisse en ligne, pour la fiscalisation des paiements via Prodamus.</p> |
| **payment\_sum**           | (obligatoire) montant du paiement                                                                                                                                                                                                                                                                                                                                                                                                                                               |

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/3FazAmQkph5i0_iKy4G_HNerzVQP9Bg3_PRB_5rHZQ6vAZB_1Hxv1imi3gJCl7pU_GY7eAiiwZExJA-i4Ps5PgSJt7OXKbSL-GT27gWca_u7rFM8YEsNJ7Z-VVXTAR-jSw_-p2I0" alt=""></div>

{% hint style="success" %}
Variables **discount\_value**, **customer\_phone**, **customer\_email** et **link\_expired** sont également valables pour les abonnements.
{% endhint %}

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

Exemple d’implémentation.

Dans le premier bloc, nous définissons le montant du paiement :

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

Ensuite, nous affichons au bon endroit l’URL, le lien prodamus\_pay\_url :

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

**prodamus\_available\_payment\_methods** est déclaré avant payment\_sum.

Valeurs possibles : &#x20;

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>paiement par carte émise en RF </td></tr><tr><td><strong>ACkz</strong> </td><td>paiement par carte du Kazakhstan </td></tr><tr><td><strong>ACf</strong></td><td>paiement par cartes des pays de la CEI, sauf la RF</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Paiement par carte en EUR depuis tous les pays, sauf la Fédération de Russie et la Biélorussie </td></tr><tr><td><strong>SBP</strong></td><td>Paiement rapide, sans saisie des données de la carte. Pour les cartes russes </td></tr><tr><td><strong>QW</strong> </td><td>Portefeuille Qiwi </td></tr><tr><td><strong>PC</strong></td><td>YooMoney </td></tr><tr><td><strong>GP</strong></td><td>terminal de paiement </td></tr><tr><td><strong>sbol</strong></td><td>Sberbank en ligne <strong>facture</strong> - Paiement par facture <strong>paiement en plusieurs fois</strong> - En plusieurs fois avec Prodamus </td></tr><tr><td><strong>installment_5_21</strong></td><td>En plusieurs fois avec Prodamus sur 3 mois </td></tr><tr><td><strong>installment_6_28</strong></td><td>En plusieurs fois avec Prodamus sur 6 mois </td></tr><tr><td><strong>installment_10_28</strong></td><td>En plusieurs fois avec Prodamus sur 10 mois </td></tr><tr><td><strong>installment_12_28</strong> </td><td>En plusieurs fois avec Prodamus sur 12 mois <strong>installment_0_0_3</strong> - Paiement échelonné de Tinkoff sur 3 mois</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Paiement échelonné de Tinkoff sur 4 mois </td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Paiement échelonné de Tinkoff sur 6 mois </td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Paiement échelonné de Tinkoff sur 10 mois</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Paiement échelonné de Tinkoff sur 12 mois</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Paiement échelonné de Tinkoff sur 24 mois</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Paiement échelonné de Tinkoff sur 36 mois </td></tr><tr><td><strong>credit</strong> </td><td>Crédit de Tinkoff</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td>Paiement échelonné VsegdaDa sur 4 mois (ne fonctionne pas avec available_payment_methods) </td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td>Paiement échelonné de VsegdaDa sur 6 mois</td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td>Paiement échelonné de VsegdaDa sur 10 mois</td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td>Paiement échelonné de VsegdaDa sur 12 mois sans surcoût</td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td>Paiement échelonné de VsegdaDa sur 24 mois</td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td>Paiement échelonné de VsegdaDa sur 36 mois</td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>Paiement échelonné de Sberbank sur 6 mois </td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>Paiement échelonné de Sberbank sur 10 mois</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>Paiement échelonné de Sberbank sur 12 mois</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>Paiement échelonné de Sberbank sur 24 mois</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>Paiement échelonné de Sberbank sur 36 mois</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>Paiement échelonné de la banque OTP sur 6 mois</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Paiement échelonné de la banque OTP sur 10 mois</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Paiement échelonné de la banque OTP sur 12 mois</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Paiement échelonné de la banque OTP sur 24 mois</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Paiement échelonné de la banque OTP sur 36 mois</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Paiement échelonné de la banque MTS sur 6 mois</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Paiement échelonné de la banque MTS sur 10 mois</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Paiement échelonné de la banque MTS sur 12 mois</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>Paiement échelonné de la banque MTS sur 24 mois</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>Paiement échelonné de la banque MTS sur 36 mois</td></tr><tr><td><strong>monetaworld</strong></td><td>Cartes bancaires du monde entier, sauf la Fédération de Russie </td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>En plusieurs fois avec Sber</td></tr></tbody></table>

Il est possible de transmettre plusieurs valeurs en les séparant par une barre verticale. \
Par exemple : prodamus\_available\_payment\_methods = "AC|PC|QW"

**prodamus\_currency** - un autre paramètre supplémentaire pour transmettre le montant dans une devise donnée.\
Valeurs possibles de la devise : \
**kzt** - pour le tenge \
**eur** - pour l'euro \
**usd** - pour le dollar

Le montant indiqué dans le lien sera alors dans la devise spécifiée.

Lors de la réception du callback **payment\_callback** il faut se baser sur le paramètre **currency** et **currency\_sum,** dans lequel se trouveront la devise et le montant dans cette devise.

{% hint style="warning" %} <mark style="color:rouge;">**Important !**</mark> Vérifiez si vous avez sur votre page un moyen de paiement dans la devise requise, car s'il est absent, la redirection se fera vers une page sans moyens de paiement.\
Les moyens se подключent via le support. Vous pouvez voir ceux qui sont activés dans les paramètres de la page ou en générant un lien de paiement
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/eceb284dfb9a0753ccfc4cd5285599fb990db5d0" alt=""><figcaption><p>Paramètres de la page de paiement du système de paiement "Prodamus"</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/7b7366ff668242395159eec1e7b5a9ccf6e3fff1" alt=""><figcaption><p>Moyens de paiement activés pour votre page</p></figcaption></figure></div>

## Comment traiter le résultat

### Paiement réussi

Important ! Après un paiement réussi ou non réussi, des callbacks arriveront au bot, grâce auxquels vous pourrez comprendre qu'un paiement a bien été effectué. Dans le système, vous les voyez comme des messages provenant de l'utilisateur ; pour empêcher l'utilisateur de les envoyer, ils se composent d'une clé secrète et d'un suffixe indiquant le statut, par exemple : 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b6&#x36;**\_success** ou 453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b6&#x36;**\_fail**. De plus, après un paiement réussi, la variable **prodamus\_payment\_completed** est définie sur **True**.

{% hint style="warning" %}
Attention ! Les callbacks arrivent avec un certain délai, donc après l'affichage du lien de paiement à l'utilisateur, nous recommandons d'envoyer un message du type : “Après le paiement, attendez le message confirmant la réussite du paiement”
{% endhint %}

{% hint style="warning" %}
IMPORTANT !\
Pour les liens créés à l'aide du bouton avec la fonction Paiement ou à l'aide de la fonction dans le Calculateur, après le paiement dans le bot <mark style="color:orange;">**AUTOMATIQUEMENT**</mark> un CALLBACK arrivera, composé des caractères de la clé secrète du système de paiement, du mot \_success et, séparé par un espace, du montant du paiement. \
\&#xNAN;*Pour l’utiliser dans les paramètres du schéma, il suffit de le copier.*&#x20;

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

ovg58keefc : clé secrète **en entier**

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

Par exemple, vous pouvez gérer un paiement réussi avec un bloc conditionnel et afficher le message approprié à l'utilisateur :

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

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

{% hint style="warning" %}
Pour effectuer un nouveau paiement, il faut obligatoirement remettre payment\_sum à zéro, puis effacer le lien déjà généré et seulement après cela réaffecter la variable payment\_sum pour obtenir un nouveau lien&#x20;
{% endhint %}

### Désactivation/réactivation de l'abonnement

Il existe également dans Prodamus des notifications concernant l'activation/la désactivation de l'abonnement :

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

1. "L'abonné a désactivé l'abonnement" - si l'abonnement est annulé manuellement (par exemple, l'abonné a refusé l'abonnement).

Peut arriver avant la fin de la période payée en cours. Implique une action à votre discrétion : ignorer, ou mettre sous surveillance pour tenter de récupérer l'abonné.

2. "L'abonné a réactivé l'abonnement" - rétablissement de l'abonnement.&#x20;

Peut arriver si l'abonné a réactivé l'abonnement avant la fin de la période payée en cours. Implique une action à votre discrétion : ignorer, ou supprimer de la liste de surveillance de récupération.

3. "Désactivation de l'abonnement" - si l'abonnement est désactivé après plusieurs tentatives de prélèvement infructueuses

### **Comment enregistrer les valeurs du callback**

Après réception de la notification de paiement réussi, le callback de Prodamus sera enregistré dans la demande du client (variable payment\_callback), avec toutes les données du paiement reçu. Vous pouvez en extraire les données nécessaires et les utiliser comme vous le souhaitez. Exemple de callback :

`{"date": "2021-03-30T11:44:43+03:00", "order_id": "757679", "order_num": "", "domain": "demo.payform.ru", "sum": "14.50", "customer_phone": "+77777777777", "customer_extra": "Ici la description du produit", "payment_type": "Carte plastique Visa, MasterCard, MIR", "commission": "3.5", "commission_sum": "0.51", "attempt": "1", "discount_value": "10.5", "products[0][name]": "Accès aux supports de formation", "products[0][price]": "14.50", "products[0][quantity]": "1", "products[0][sum]": "14.50", "payment_status": "success", "payment_status_description": "Paiement réussi", "payment_init": "manual"}`

Lors de la génération du lien, vous pouvez indiquer les variables **product\_name** et **payment\_description**. Alors, lors de la réception du callback, vous pourrez les récupérer comme ceci :&#x20;

`product = get(payment_callback,'products[0][name]')`&#x20;

`description = get(payment_callback,'customer_extra')`

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

{% hint style="info" %}
Attention : à la variable **payment\_sum** est affectée la valeur de la dernière, après les variables facultatives **payment\_description, product\_name**
{% endhint %}

Le montant peut être obtenu ainsi\
`summa = get(payment_callback,'sum')`

### Quels callbacks sont disponibles

En plus des callbacks principaux concernant les paiements réussis, un message est affiché dans le chat avec l'utilisateur, message que l'utilisateur ne voit pas, avec les textes suivants :

1. L'abonné a désactivé l'abonnement ([plus de détails ici](#deaktivaciya-reaktivaciya-podpiski))
2. L'abonné a réactivé l'abonnement ([plus de détails ici](#deaktivaciya-reaktivaciya-podpiski))
3. Abonnement terminé
4. Paiement non réussi - ajout explicatif (sur la capture d'écran ci-dessus)
5. Notification du prochain prélèvement - date et heure du prochain prélèvement
6. Demande de paiement échelonné avec le statut

Exemples de callbacks dans la conversation avec le client :&#x20;

* **L'abonné a désactivé l'abonnement**
* **L'abonné a réactivé l'abonnement**
* **Abonnement terminé**
* **Paiement non réussi - Fonds insuffisants.**
* **Paiement non réussi - La carte a expiré.**
* **Paiement non réussi - Limite de carte dépassée.**
* **Paiement non réussi - Carte perdue**
* **Paiement non réussi - Erreur système**&#x20;
* **Paiement non réussi - Opération refusée. Veuillez contacter la banque émettrice de la carte.**&#x20;
* **Paiement non réussi - Refus de l'opération par la banque émettrice.**
* **Paiement non réussi - Refus de l'opération par la banque.**&#x20;
* **Notification du prochain prélèvement - jj.mm.aaaa hh:mm**
* **Demande de paiement échelonné approuvée**
* **Demande de paiement échelonné annulée**
* **Demande de paiement échelonné refusée**

Vous pouvez lire plus en détail la description des erreurs ici :

{% embed url="<https://help.prodamus.ru/payform/integracii/tekhnicheskaya-dokumentaciya-po-avtoplatezham/kody-oshibok>" %}
Prodamus : codes d'erreur
{% endembed %}

Si vous le souhaitez, vous pouvez configurer l'envoi d'un message à l'utilisateur. À titre d'exemple, nous enverrons un message indiquant que le prélèvement automatique a échoué.\
\
Pour la notification de **paiement non réussi avec une raison précise**, vous pouvez configurer un bloc de réponse, par exemple, comme ceci :

<div data-with-frame="true"><figure><img src="/files/aa1a4759bcef2a8d7c8fef3d37e89732bef8925f" alt=""><figcaption><p>exemple de bloc pour les notifications de paiement non réussi avec une raison précise</p></figcaption></figure></div>

Pour envoyer un message **à tous les prélèvements échoués, quelle qu'en soit la raison**, vous pouvez configurer comme suit :

<div data-with-frame="true"><figure><img src="/files/a8488ecb8c09c941940637b7ab3abe690494bcc4" alt=""><figcaption><p>exemple de bloc pour les notifications de paiement non réussi avec n'importe quelle explication de la raison</p></figcaption></figure></div>

Et pour tous les callbacks dans lesquels apparaît le texte **Paiement non réussi**, l'utilisateur recevra un message avec le texte que vous avez indiqué.

## Comment créer des paiements par abonnement

### Comment créer un abonnement

Pour créer un abonnement, il faut créer un produit d'abonnement. Instructions détaillées pour le faire : <https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski>

Ensuite, copiez l'id du produit d'abonnement ; ci-dessous, il est indiqué où le trouver :

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Création d&#x27;un produit d&#x27;abonnement"></div>

Pour générer un lien de paiement d'abonnement, vous devez définir la valeur (id du produit d'abonnement) de la variable **prodamus\_subscription**, juste après cela la variable **prodamus\_pay\_url**.&#x20;

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

La variable **prodamus\_pay\_url** peut être affichée à l'écran via un lien ou placée sur un bouton avec le texte "Payer". Le lien ressemble à ceci : <https://payform.ru/7p3JR8/><br>

Le traitement du résultat se fait de la même manière que pour un paiement unique (lire ci-dessus).

Après un abonnement réussi, la variable customer\_phone, correspondant au numéro de téléphone saisi lors du paiement, sera ajoutée à l'utilisateur. Le numéro de téléphone est nécessaire pour la gestion de l'abonnement.<br>

{% hint style="warning" %}
customer\_phone est nécessaire pour la gestion de l'abonnement si customer\_email n'est pas transmis
{% endhint %}

### Comment créer un lien d'abonnement avec la fonction get\_prodamus\_subscription\_url

Voyons une autre façon de générer un lien de paiement pour un produit par abonnement.&#x20;

Nous créons un produit d'abonnement dans le compte Prodamus. Instructions détaillées pour le faire : <https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski>

Ensuite, copiez l'id du produit d'abonnement ; ci-dessous, il est indiqué où le trouver :

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Création d&#x27;un produit d&#x27;abonnement"></div>

Pour obtenir le lien de paiement d'un produit par abonnement dans le Calculateur, nous indiquons la fonction&#x20;

`get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

{% tabs %}
{% tab title="Calculatrice" %}
Exemple 1 : Lien de paiement d'un produit par abonnement

<figure><img src="/files/270e90a0b757fe00c844fdf0f9513f3b67a0a5f3" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="Description des paramètres" %}
`link = get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

**Paramètres de la fonction :**

<table><thead><tr><th width="253">Paramètre</th><th>Valeur du paramètre</th></tr></thead><tbody><tr><td><strong><code>subscription_id</code></strong></td><td><strong>ID du produit d'abonnement</strong>. Vous pouvez copier l'ID dans le compte Prodamus  <mark style="color:vert;">(paramètre obligatoire)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nom du produit. <mark style="color:vert;">(paramètre obligatoire)</mark></td></tr><tr><td><strong><code>expired</code></strong></td><td><p>durée de vie du lien de paiement, au format <strong>jj.mm.aaaa</strong> (par exemple 25.01.2021). Vous pouvez aussi, dans le champ « Calculatrice<em>"</em> indiquer : <em>expired = current_date + 2</em> (le lien sera valide 2 jours jusqu’à 00:00).  <code>expired</code> on peut aussi indiquer une date avec une heure précise, séparée par un espace, au format <strong>jj.mm.aaaa hh:mm</strong> (par exemple : <em>25.01.2021 12:23</em>). On peut aussi utiliser des variables standard, par exemple définissons une durée de validité du lien de 30 minutes : </p><p><code>time = current_time + 30</code><br><code>expired = "#{current_date} #{time}"</code><br><br>Pour ignorer ce paramètre, transmettez à la place une paire de guillemets simples ou doubles, ou la valeur None</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td>numéro de téléphone de l’acheteur, facultatif si le paramètre <code>customer_email</code> Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td>email de l’acheteur, facultatif si le paramètre <code>customer_phone</code> Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>discount</code></strong></td><td>montant de la remise. On transmet un nombre entier ou un nombre avec point : 25 ou 63.5   Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>description</code></strong></td><td>description du produit (si non renseigné, se remplit par 'Paiement de la facture order_id') Pour ignorer ce paramètre, transmettez à la place des guillemets simples ou doubles.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td>paramètres supplémentaires qui n’existent pas dans cette fonction.<br>Les paramètres supplémentaires possibles peuvent être consultés via le lien dans la documentation de l’API du système de paiement <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov</a><br><br>Exemple : <code>extra_params = {"payments_limit": "3"}</code><br><br><em>Pour ignorer ce paramètre, transmettez à la place une paire de guillemets simples/une paire de guillemets doubles ou la valeur None.</em></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>Chaîne de 50 à 4000 caractères au format</strong> "description de la commande - prix - lien vers la ressource achetée”. </p><p>Par exemple :</p><p>“Cours « Pêche à la brème », prix 4999 roubles, lien vers la page du cours : https://www.lovilescha.ru/courses/poimai_kilogram/". </p><p><strong>Obligatoire</strong>, si vous n’avez pas votre propre caisse en ligne, pour la fiscalisation des paiements via Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemple de code à copier" %}
**extra\_params** = {<mark style="color:rouge;">"payments\_limit"</mark>: <mark style="color:rouge;">"3"</mark>}&#x20;

**products\_for\_receipt** = <mark style="color:rouge;">"Cours ‘Pêche à la brème’</mark>, <mark style="color:rouge;">coût de l'abonnement mensuel 2000 roubles</mark>, <mark style="color:rouge;">lien vers la page du cours : <https://www.lovilescha.ru/courses/poimai\\_kilogram/>"</mark>&#x20;

**link\_prodamus\_sub** = get\_prodamus\_subscription\_url(<mark style="color:bleu;">618988</mark>, <mark style="color:rouge;">'Cours ‘Pêche à la brème’</mark>', <mark style="color:rouge;">'27.03.2023 17:02', '79167777771', '<mail@mail.com>'</mark>, <mark style="color:rouge;">20</mark>, <mark style="color:rouge;">'Meilleur cours du marché'</mark>, extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Si, dans le bloc, plusieurs fonctions permettent d’obtenir le lien et qu’une erreur survient, la valeur de l’erreur sera enregistrée dans la variable  **`error_payment_func`**

\
L’erreur sera enregistrée par la dernière fonction dans la Calculatrice
{% endhint %}

### Comment gérer le statut de l'abonnement

{% hint style="info" %}
La méthode fonctionne uniquement sur de vrais abonnements ; en mode démo, il n'y a pas de liaison avec la carte
{% endhint %}

{% hint style="warning" %}
Pour gérer l'abonnement, l'un des paramètres obligatoires customer\_phone ou customer\_email doit être transmis.
{% endhint %}

Pour permettre la désinscription de l'utilisateur de l'abonnement, il faut créer un bloc et appeler la fonction : **<https://store.salebot.pro/function/delete\\_subscription\\_prodamus>**

Avec les paramètres :

**{**\
**"customer\_phone": "#{customer\_phone}",**\
**"id\_subscription":"#{prodamus\_subscription}",**\
**"url":"<https://demo.payform.ru/>", "secret\_key":"453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66",**\
**"switcher":"0"**\
**"profile\_id":"12345"**\
**}**

**url** - URL du formulaire de paiement indiquée dans les paramètres du constructeur\
**secret\_key** - clé secrète des paramètres\
**id\_subscription** - id du produit d'abonnement\
**customer\_phone** - téléphone de l'abonné\
**switcher** = 0 signifie l'arrêt de l'abonnement ; si vous transmettez 1, l'abonnement est réactivé.\
**profile\_id** - ID du profil dans le système Prodamus

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

Si l'ID du profil arrive, sa valeur sera enregistrée dans la variable profile\_id.

profile\_id peut être transmis à la fonction delete\_subscription\_prodamus à la place de customer\_phone ou customer\_email pour annuler l'abonnement.
{% endhint %}

Exemple de configuration du bloc d'abonnement :

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

Veuillez noter que la fonction renvoie status, que nous conservons et pouvons traiter à notre convenance, lors de la désactivation/réactivation réussie **status** égal à **ok**

### Fonction pour gérer l'abonnement

prodamus\_subscription\_switch\_status(subscription\_id, switcher, customer\_phone, customer\_email, profile\_id)

&#x20;**id\_subscription** - id du produit d'abonnement&#x20;

**switcher** = 0 signifie l'arrêt de l'abonnement ; si vous transmettez 1, l'abonnement est réactivé.&#x20;

**customer\_phone** - téléphone de l'abonné - facultatif, si customer\_email est transmis&#x20;

**customer\_email** - email de l'abonné - facultatif, si customer\_phone est transmis

profile\_id - ID du profil dans le système Prodamus

<div data-with-frame="true"><figure><img src="/files/57386ae8b193612f2531eb3fabe22c5a2f7923ef" alt=""><figcaption><p>Exemple d'utilisation de la fonction prodamus_subscription_switch_status</p></figcaption></figure></div>

Exemple : paramètre transmis **customer\_phone,** customer\_email omis\
`stat = prodamus_subscription_switch_status`(`'618117', '0', '75431312321')`

Exemple 2 : paramètre transmis **customer\_email,** customer\_phone omis\
`stat = prodamus_subscription_switch_status('618117', '0', '', 'examp@mail.com')`

{% hint style="success" %}
La fonction renverra ok si tout s'est bien passé ou la description de l'erreur
{% endhint %}

### Gestion des remises dans l'abonnement

La fonction définit le montant de la remise pour les paiements suivants de l'abonnement. La remise peut être définie pour un nombre limité ou illimité de prélèvements.

**prodamus\_subscription\_discount(subscription\_id, discount, customer\_phone, num, profile\_id)**\
**où :**\
**subscription\_id** - ID de l'abonnement\
**discount** - nombre décimal avec une précision de deux chiffres après **le point**, la valeur doit être supérieure à zéro et ne pas dépasser le prix de base de l'abonnement\
**customer\_phone** - numéro de téléphone du client au format : +79999999999 (paramètre facultatif, si la variable customer\_email existe (apparaît après le premier paiement, voir description ci-dessus))\
**num** - nombre de paiements auxquels la remise s'appliquera (paramètre facultatif ; si non transmis, le nombre de paiements avec remise n'est pas limité)

profile\_id - ID du profil dans le système Prodamus\
\
**En cas de succès de la requête, la fonction renverra 'ok' ; si la requête échoue, la fonction renverra sa description.**

{% hint style="warning" %}
Le montant de la remise et l'intervalle ne sont réécrits QUE si la fonction est appelée à nouveau avec de nouvelles valeurs !
{% endhint %}

#### **Exemples :**

1\. Mise en place d'une remise de 1 rouble sur tous les prochains paiements automatiques (le numéro de téléphone n'est pas indiqué, car il sera automatiquement récupéré depuis la variable customer\_phone, et le nombre de prélèvements avec remise est par défaut sur toute la durée de l'abonnement)&#x20;

r = prodamus\_subscription\_discount('624034', '1')

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/_4i_sKKn39tHVdnb47xgj8fxfP_x9UGMWLaierBnpup9LCZMdVT0G9AmIOa8S_uMrVXWQIH6rvZnujCYPGcphkYvwFbCXEh819tWIjGIM4mHvd3afSlPzhZfcWk6D1z1tyBwFrZV" alt="Exemple 1" width="563"></div>

2\. Mise en place d'une remise de 2 roubles sur les 3 prochains prélèvements (le numéro de téléphone est remplacé par des guillemets vides, car il sera automatiquement récupéré depuis la variable customer\_phone)&#x20;

r = prodamus\_subscription\_discount('624034', '2', '', '3')

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/IgutVRIqTFbaof9A14qdQRLCB6oop4mSAIew5s3lz62Kb4YVHdHJEt6GuC7AACStDgRiR1d_XEG1k5Dj7c2M-VNtci16JbklMTEla8_RNWD7wBNeG649g0lnFiMZilhri3phwKr-" alt="Exemple 2" width="563"></div>

3\. Exemple de mise en place d'une remise sous forme de nombre avec une partie décimale jusqu'aux centièmes (séparateur : point), les données numériques sont indiquées sans guillemets, le numéro de téléphone est transmis via une variable

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

r = prodamus\_subscription\_discount(#{prodamus\_subscription}, 10.25, #{customer\_phone}, 3)

<div data-with-frame="true"><img src="https://lh3.googleusercontent.com/xJVbZ3Q5f6LzCsYtuX-JqaKYPc69lS6Wi4yA0ui2vBxmFkXXGIHSqgO2VoK0rzDPdNG-HxVpAnpRcmbZXQ_oSrtT7ijJcQA6ZOwjXLbKP8WsCFBip-4DwRnVHpz-fIPRt_Wldo0h" alt="Exemple 3" width="563"></div>

### Comment définir la date du prochain paiement d'abonnement

Grâce à cette méthode, vous pouvez décaler la date du prochain paiement de l'abonnement. La date ne peut être décalée que vers l'avenir par rapport à la date actuelle définie pour le prochain paiement. Cela augmente ainsi la durée de présence dans le club.

{% hint style="success" %}
Par exemple, cela peut être utilisé comme bonus pour les abonnés.
{% endhint %}

Pour cela, il faut utiliser la fonction :

**prodamus\_subscription\_payment\_date(subscription\_id, date, customer\_phone, profile\_id)**\
**où :**&#x20;

où :

**subscription\_id** - ID de l'abonnement \
**date** - date au format jj.mm.aaaa hh:mm ou jj.mm.aaaa, alors l'heure sera 00:00\
**customer\_phone** - n'est pas obligatoire ; si elle n'est pas transmise, elle sera récupérée depuis la variable customer\_phone ; si elle n'y est pas non plus, la fonction ne fonctionnera pas\
**profile\_id** - ID du profil dans le système Prodamus

## Comment transmettre des paramètres à Prodamus

Pour transmettre à Prodamus les paramètres dont vous avez besoin (par exemple, la date de début de l'abonnement, la désactivation du paiement échelonné, etc.), ajoutez au début du nom de la variable prodamus\_&#x20;

Ainsi, lors de la génération du lien de paiement, ces paramètres seront transmis automatiquement au système de paiement.

## Comment tester le paiement

{% hint style="info" %}
Nous ne testons que le paiement !
{% endhint %}

Afin qu'aucun fonds ne soit débité de votre compte lors des tests d'intégration et de configuration des tunnels de paiement, vous pouvez utiliser des cartes de test&#x20;

{% hint style="warning" %}
Commencez par passer votre page de paiement en mode DÉMO ⤵

N'oubliez pas d'appuyer sur le bouton "Enregistrer"
{% endhint %}

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

#### Pour effectuer un paiement test, vous pouvez utiliser des comptes de test

Cartes de test Sberbank :&#x20;

MIR\
Numéro de carte 2202 2050 0001 2424\
Date d'expiration 05/35\
Code de vérification au dos 669

MasterCard\
Numéro de carte 5469 9801 0004 8525\
Date d'expiration 05/26\
Code de vérification au dos 041\
Code de vérification 3-D Secure 111111

Visa\
Numéro de carte 4006 8009 0096 2514\
Date d'expiration 05/26\
Code de vérification au dos 941\
Code de vérification 3-D Secure 111111

{% hint style="success" %}
&#x20;! Avec les comptes de test, tous les tunnels et intégrations configurés fonctionneront comme lors d'un paiement normal !&#x20;
{% endhint %}

Le formulaire a été testé

{% hint style="danger" %}
Pour accepter des paiements en argent réel, il faut passer le formulaire en mode production. Autrement dit, mettre le bouton du mode démo dans la position afin qu'il devienne rose pâle
{% endhint %}


---

# 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/prodamus-blr.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.
