# Prodamus (RU)

{% hint style="success" %}
Disponible uniquement sur 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:green;">**URL du formulaire de paiement**</mark> vous la recevez après l’inscription, elle <mark style="color:green;">**a la forme suivante : demo.payform.ru**</mark>

La clé secrète peut être obtenue dans l’espace personnel ; c’est également là qu’il faut renseigner l’URL pour les 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 pour les 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 pour les notifications doit être renseignée dans les paramètres du système de paiement à deux endroits : onglet Paramètres du formulaire — pour les paiements ordinaires et onglet Abonnements — pour les paiements par abonnement.&#x20;

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

Adresse pour les 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 pour les 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 « Acquiring »

<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 mentionné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 doit être indiquée SANS https\://&#x20;
{% endhint %}

La connexion est maintenant terminée. Voyons maintenant 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 **DE L’UN** des méthodes disponibles :

* [Bouton avec la fonction Paiement ](#knopka-s-funkciei-oplata)ou
* [Fonction get\_prodamus\_payment\_url dans le Calculateur](#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) (version obsolète mais fonctionnelle)
  {% endhint %}

## Bouton avec la fonction Paiement

{% hint style="info" %}
[Le lien de paiement peut être créé dans un bouton avec la fonction « Paiement ». La manière de créer un tel bouton est décrite dans cet article](/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 le lien de paiement, il faut indiquer dans les paramètres du bouton <mark style="color:red;">**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 souhaitez recevoir un reçu de Prodamus.&#x20;

Lors du passage à 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, alors 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 indiqué sur le bouton avec le lien de paiement dans le message

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

**champ Système de paiement.** La liste affiche les systèmes de paiement connectés au projet

{% 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 s’ouvriront pour générer le lien

* 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 Avec notification de clic.** Pour suivre le passage via le lien de paiement, vous pouvez cocher la case. Dans ce cas, lorsqu’un clic sur le bouton est effectué, une notification arrivera dans la conversation avec le client dans Salebot indiquant qu’un passage par le lien a eu lieu

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

Cette notification peut être utilisée pour configurer la logique de fonctionnement ultérieure du bot.&#x20;

{% 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 d’émission des reçus sur le site du système de paiement choisi afin d’éviter une situation gênante avec l’administration fiscale.
{% endhint %}

Voici à quoi ressemble la page de paiement qui s’ouvre lors du passage par 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 indiquées 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 kopecks. Pour indiquer un montant avec des kopecks, utilisez un point comme séparateur : 50.99\
Sur la page de paiement, le champ Montant à payer affichera le montant avec la remise prise en compte, et le prix initial du produit sera barré.&#x20;

**Champ Variable avec l’email de l’acheteur** (facultatif, si le numéro de téléphone est transmis) Dans ce champ, indiquez l’email de l’utilisateur (client). Vous pouvez indiquer 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 transmis). Dans ce champ, vous pouvez indiquer la variable dans laquelle est enregistré le numéro de téléphone de l’acheteur au format 79000000000\
Par exemple, #{phone}

{% hint style="danger" %}
L’email et/ou le téléphone doivent обязательно ê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 pour l’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 d’abonnement, le montant du paiement n’est pas pris en compte. Les données du produit seront obtenues à partir de la fiche produit dans le compte 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 d’abonnement**, alors, dans le callback lors d’un paiement réussi, l’ID de ce produit sera transmis
{% endhint %}

**Champ Contenu payé** (conditionnellement obligatoire). Ces données sont nécessaires pour la fiscalisation du paiement par 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 cheveux », 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 à l’administration fiscale.

#### Bouton avec la fonction Paiement

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

1. Lorsque l’utilisateur a demandé le lien de paiement pendant sa période d’activité (c’est-à-dire avant l’expiration de sa durée de vie) 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 durée de validité 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 durée de validité 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 séparément.&#x20;
{% endhint %}

Comment faire ?

Créez un bloc avec une condition, dans lequel vous indiquerez, si une notification de ce type est reçue, error\_payment\_button == "Erreur : La durée de validité 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>Dialogue dans la section « Clients »</p></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/71e3c1f4eb81a9e6b6f53b82a83895747664814c" alt=""><figcaption><p>Configuration 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 créées automatiquement :

Variable système du client **`__payments`** , qui stocke le montant et l’identifiant du lien créé, nécessaire pour identifier le webhook 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`** créée si une erreur s’est produite 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 du système de paiement avec l’erreur.

{% hint style="warning" %}
Les valeurs des variables deviennent effectives 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 apparaissent uniquement dans l’onglet Clients et sont visibles par l’opérateur.
{% endhint %}

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

Étape 2. Dans le champ Condition de liaison de ce bloc vers le bloc « Paiement réussi », indiquez 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 directement sur la flèche selon la condition, réfléchissez à la logique de votre schéma. Si le client quitte le bloc avec 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 seulement lorsque le client ne change pas de position dans l’entonnoir (sa place dans le schéma).\
Dans les schémas où le client se déplace entre les blocs, il est préférable d’utiliser l’option avec indication du 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:green;">**séparé par un espace, de l’ID du produit d’abonnement**</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 d’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:blue;">**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 s’est terminé par 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 en cas d’erreur de paiement.
{% endhint %}

Si le montant indiqué dans les paramètres du bouton <mark style="color:blue;">**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 payé diffère du montant dans le lien)

`123456` : ID unique du paiement

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

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

Dans le champ Calculateur, nous attribuons à la variable la valeur de la fonction `get_prodamus_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 %}

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

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

{% tabs %}
{% tab title="Calculateur" %}
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 une valeur entière ou décimale. Par exemple 25 ou 52.5  <mark style="color:green;">(paramètre obligatoire)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nom du produit. <mark style="color:green;">(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 également, dans le champ "Calculateur<em>"</em> indiquer : <em>expired = current_date + 2</em> (le lien sera valable 2 jours jusqu’à 00:00).  <code>expired</code> vous pouvez également indiquer une date avec l’heure exacte, séparée par un espace, au format <strong>jj.mm.aaaa hh:mm</strong> (par exemple : <em>25.01.2021 12:23</em>). Vous pouvez également utiliser des variables standard, par exemple définissons la durée de validité du lien à 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 ou un nombre avec un 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 indiquée, remplie avec '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 - coût - 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:red;">"payments\_limit"</mark>: <mark style="color:red;">"3"</mark>}&#x20;

**products\_for\_receipt** = "<mark style="color:red;">Cours « Pêche à la brème »</mark>, <mark style="color:red;">prix 4999 roubles</mark>, <mark style="color:red;">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:blue;">4999</mark>, <mark style="color:red;">'Cours « Pêche à la brème »'</mark>, <mark style="color:red;">'27.03.2023 17:00', '79167777771'</mark>, <mark style="color:red;">'<mail@mail.com>'</mark>, <mark style="color:blue;">20</mark>, <mark style="color:red;">'Le meilleur cours du marché'</mark>, extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Si plusieurs fonctions de génération de lien sont présentes dans le bloc et qu’une erreur s’est produite, 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 le Calculateur
{% 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 attribuée la valeur de la dernière, après les variables facultatives **payment\_description, product\_name** etc.&#x20;
{% endhint %}

Pour générer le lien de paiement, il vous suffit de définir dans le champ Calculateur 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 un message ou placée sur un bouton avec le texte « Payer ».&#x20;

Avant la déclaration de 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é, rempli avec 'Paiement de la facture order\_id') — la capture ci-dessous montre où il s’affiche                                                                                                                                                                                                                                                                                                                                               |
| **payment\_description**   | description du produit (si non indiquée, remplie avec 'Paiement de la facture order\_id', voir capture ci-dessous) — la capture 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 également, dans le champ "*Calculateur"* indiquer : *link\_expired = current\_date + 2* (le lien sera valable 2 jours jusqu’à 00:00)                                                                                                                                                                                                                                        |
| **link\_expired**          | <p>vous pouvez également indiquer une date avec l’heure exacte, séparée par un espace, au format <strong>jj.mm.aaaa hh:mm</strong> (par exemple : <em>25.01.2021 12:23</em>). Vous pouvez également utiliser des variables standard, par exemple définissons la durée de validité du lien à 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é, rempli avec le texte : “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 sous la forme 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 - coût - 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:red;"><strong>Obligatoire</strong></mark>, si vous n’avez pas votre propre caisse en ligne, pour la fiscalisation des paiements via Prodamus.</p> |
| **payment\_sum**           | montant du paiement (obligatoire)                                                                                                                                                                                                                                                                                                                                                                                                                                            |

<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" %}
Les 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 à l’endroit souhaité 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ée avant la déclaration de 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 Russie </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 Russie</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Paiement en EUR par carte de tous les pays, sauf la 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>Qiwi wallet </td></tr><tr><td><strong>PC</strong></td><td>Юmoney </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>invoice</strong> - Paiement sur facture <strong>installment</strong> - Paiement en plusieurs fois par Prodamus </td></tr><tr><td><strong>installment_5_21</strong></td><td>Paiement en plusieurs fois par Prodamus sur 3 mois </td></tr><tr><td><strong>installment_6_28</strong></td><td>Paiement en plusieurs fois par Prodamus sur 6 mois </td></tr><tr><td><strong>installment_10_28</strong></td><td>Paiement en plusieurs fois par Prodamus sur 10 mois </td></tr><tr><td><strong>installment_12_28</strong> </td><td>Paiement en plusieurs fois par Prodamus sur 12 mois <strong>installment_0_0_3</strong> - Paiement échelonné par Tinkoff sur 3 mois</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Paiement échelonné par Tinkoff sur 4 mois </td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Paiement échelonné par Tinkoff sur 6 mois </td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Paiement échelonné par Tinkoff sur 10 mois</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Paiement échelonné par Tinkoff sur 12 mois</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Paiement échelonné par Tinkoff sur 24 mois</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Paiement échelonné par 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é « OTP Bank » sur 6 mois</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Paiement échelonné « OTP Bank » sur 10 mois</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Paiement échelonné « OTP Bank » sur 12 mois</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Paiement échelonné « OTP Bank » sur 24 mois</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Paiement échelonné « OTP Bank » sur 36 mois</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Paiement échelonné « MTS Bank » sur 6 mois</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Paiement échelonné « MTS Bank » sur 10 mois</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Paiement échelonné « MTS Bank » sur 12 mois</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>Paiement échelonné « MTS Bank » sur 24 mois</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>Paiement échelonné « MTS Bank » sur 36 mois</td></tr><tr><td><strong>monetaworld</strong></td><td>Cartes des banques du monde, sauf la Russie </td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Paiement en plusieurs fois par Sber</td></tr></tbody></table>

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

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

Alors, le montant indiqué dans le lien sera 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 lesquels se trouveront la devise et le montant dans cette devise.

{% hint style="warning" %} <mark style="color:red;">**Important !**</mark> Vérifiez s’il existe sur votre page un mode de paiement dans la devise souhaitée, car s’il est absent, la redirection se fera vers une page sans méthodes de paiement.\
Les méthodes sont activées via le support. Les méthodes activées peuvent être consultées 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>Options de paiement connectées à 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 dans le bot, grâce auxquels vous pourrez savoir qu’un paiement a été effectué avec succès. Dans le système, ces callbacks apparaissent comme des messages de l’utilisateur ; pour éviter qu’un utilisateur puisse les envoyer, ils sont composés de la clé secrète et d’un suffixe d’état, 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 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, veuillez attendre 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 **dans son intégralité**

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

Par exemple, vous pouvez traiter un paiement réussi avec un bloc conditionnel et afficher un message correspondant à 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 est impératif de remettre payment\_sum à zéro, ainsi que le lien précédemment généré, puis de redéfinir la variable payment\_sum pour obtenir un nouveau lien&#x20;
{% endhint %}

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

Dans Prodamus, il existe également des notifications concernant l’activation/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é s’est désabonné).

Peut arriver avant la fin de la période payée en cours. Cela implique une action à votre discrétion - ignorer ou mettre sous surveillance, tenter de reconquérir 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. Cela implique une action à votre discrétion - ignorer ou supprimer de la liste de suivi du retour.

3. "Désactivation de l’abonnement" - si l’abonnement est désactivé après plusieurs prélèvements échoués

### **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 à votre convenance. 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 des 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 attribué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 sur le paiement réussi, un message s’affiche 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. L’abonnement est terminé
4. Paiement non réussi - avec une note explicative (comme sur la capture ci-dessus)
5. Notification d’un prélèvement à venir - date et heure du prochain prélèvement
6. Demande de paiement échelonné avec le statut

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

* **L’abonné a désactivé l’abonnement**
* **L’abonné a réactivé l’abonnement**
* **L’abonnement est terminé**
* **Paiement non réussi - Fonds insuffisants.**
* **Paiement non réussi - Carte expirée.**
* **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 d’exécuter l’opération par la banque émettrice.**
* **Paiement non réussi - Refus d’exécuter l’opération par la banque.**&#x20;
* **Notification d’un prélèvement à venir - jj.mm.aaaa hh:mm**
* **La demande de paiement échelonné est approuvée**
* **La demande de paiement échelonné est annulée**
* **La demande de paiement échelonné est rejetée**

Pour en savoir plus sur la description des erreurs, lisez 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. Par 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 spécifique**, vous pouvez configurer un bloc avec une 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 spécifique</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 contenant 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, nous copions 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’un produit d’abonnement"></div>

Pour générer le lien de paiement de l’abonnement, vous devez définir la valeur (id du produit d’abonnement) de la variable **prodamus\_subscription**, juste après, 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 sous forme de lien ou placée sur un bouton avec le texte « Payer ». Le lien a la forme suivante : <https://payform.ru/7p3JR8/><br>

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

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

{% hint style="warning" %}
customer\_phone est nécessaire pour gérer 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 d’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, nous copions 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’un produit d’abonnement"></div>

Pour obtenir un 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="Calculateur" %}
Exemple 1 : Lien de paiement pour un produit d’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>. L’ID peut être obtenu en le copiant dans le compte Prodamus  <mark style="color:green;">(paramètre obligatoire)</mark> </td></tr><tr><td><strong><code>product_name</code></strong></td><td>Nom du produit. <mark style="color:green;">(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 également, dans le champ "Calculateur<em>"</em> indiquer : <em>expired = current_date + 2</em> (le lien sera valable 2 jours jusqu’à 00:00).  <code>expired</code> vous pouvez également indiquer une date avec l’heure exacte, séparée par un espace, au format <strong>jj.mm.aaaa hh:mm</strong> (par exemple : <em>25.01.2021 12:23</em>). Vous pouvez également utiliser des variables standard, par exemple définissons la durée de validité du lien à 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 ou un nombre avec un 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 indiquée, remplie avec '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 - coût - 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:red;">"payments\_limit"</mark>: <mark style="color:red;">"3"</mark>}&#x20;

**products\_for\_receipt** = <mark style="color:red;">"Cours « Pêche à la brème »</mark>, <mark style="color:red;">prix de l’abonnement mensuel 2000 roubles</mark>, <mark style="color:red;">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:blue;">618988</mark>, <mark style="color:red;">'Cours « Pêche à la brème »</mark>', <mark style="color:red;">'27.03.2023 17:02', '79167777771', '<mail@mail.com>'</mark>, <mark style="color:red;">20</mark>, <mark style="color:red;">'Le meilleur cours du marché'</mark>, extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Si plusieurs fonctions de génération de lien sont présentes dans le bloc et qu’une erreur s’est produite, 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 le Calculateur
{% 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 pouvoir désabonner l’utilisateur, 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 issue des paramètres\
**id\_subscription** - id du produit d’abonnement\
**customer\_phone** - téléphone de l’abonné\
**switcher** = 0 correspond à 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 un ID de profil est transmis, 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>

Notez que la fonction renvoie un status, que nous enregistrons et pouvons traiter à notre convenance ; lors de la désactivation/réactivation réussie **status** est égal à **'ok'**

### Fonction de gestion de 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 correspond à 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 appliquée à 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 allant jusqu’à 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 est illimité)

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

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

#### **Exemples :**

1\. Application d’une remise de 1 r sur tous les paiements automatiques suivants (le numéro de téléphone n’est pas indiqué, car il sera automatiquement repris depuis la variable customer\_phone, et le nombre de prélèvements remisés par défaut correspond à 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\. Application d’une remise de 2 r sur les 3 prochains prélèvements (le numéro de téléphone est remplacé par des guillemets vides, car il sera automatiquement repris 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 d’application d’une remise sous forme d’un 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 la 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 de l’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 le futur » par rapport à la date actuellement définie du prochain paiement. Cela permet ainsi d’augmenter la durée de séjour 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)**&#x20;

où :

**subscription\_id** - identifiant de l’abonnement \
**date** - date au format jj.mm.aaaa hh:mm ou jj.mm.aaaa, auquel cas l’heure sera 00:00\
**customer\_phone** - non obligatoire ; si non transmis, sera repris depuis la variable customer\_phone ; si elle ne le contient pas non plus, la fonction ne s’exécutera 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 de l’échelonnement, etc.), ajoutez prodamus\_ au début du nom de la variable&#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 testons uniquement le paiement !
{% endhint %}

Afin que des fonds ne soient pas débités de votre compte lors des tests d’intégration et de configuration des tunnels de vente pour le paiement, vous pouvez utiliser des cartes de test&#x20;

{% hint style="warning" %}
Commencez par mettre 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;

МИР\
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" %}
! Lors d’un paiement avec des comptes de test, tous les tunnels et intégrations configurés fonctionneront comme lors d’un paiement normal !&#x20;
{% endhint %}

Le formulaire est testé

{% hint style="danger" %}
Pour accepter des paiements en argent réel, il faut mettre le formulaire en mode opérationnel. Autrement dit, basculer le curseur du mode démo de manière à ce qu’il devienne rouge pâle
{% endhint %}


---

# Agent Instructions: Querying This Documentation

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

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

```
GET https://docs.mavibot.ai/doc/fr/integrations/payment/prodamus/prodamus-ru.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.
