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

# Prodamus (KZ)

## **Comment connecter Prodamus**

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

L’URL du formulaire de paiement est fournie après l’inscription ; son exemple : `demo.payform.ru`.

La clé secrète peut être obtenue dans votre espace personnel, où vous devez également indiquer l’URL vers laquelle les notifications seront envoyées.

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

[**Guide complet sur la manière de procéder**](https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch)

Adresse pour les notifications:\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

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

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

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

L’adresse pour les notifications doit être indiquée à deux endroits dans les paramètres du système de paiement : **« Configuration du formulaire »** onglet — pour les paiements uniques (classiques) et **« Abonnements »** onglet — pour les paiements par abonnement.

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

**Adresse pour les notifications :**\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Pour configurer le travail avec les paiements par abonnement, **« Abonnements »** allez dans l’onglet et indiquez 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, n’oubliez pas de **« Enregistrer »** cliquer sur le bouton.
{% endhint %}

Pour connecter Prodamus, **« Acquiring »** section.

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

il suffit ensuite de saisir les données mentionnées ci-dessus dans le formulaire :

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

{% hint style="warning" %}
**Important !** Lorsque vous indiquez l’URL du formulaire de paiement, **https\://** ne l’ajoutez pas.
{% endhint %}

L’intégration est donc terminée. Voyons maintenant comment utiliser cette fonctionnalité.

## Comment créer un lien de paiement

### Bouton avec la fonction « Payer »

**Un lien de paiement peut être créé dans un bouton avec la fonction « Payer ».**

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

Voyons maintenant tous les paramètres possibles de ce bouton.

### Paramètres obligatoires du bouton « Payer » pour Prodamus

**Pour créer un lien de paiement, il faut indiquer les paramètres obligatoires dans les réglages du bouton :**\
« 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.

Lors du passage à la page de commande, les informations sur le produit et son prix sont affichées à l’avance, et le client ne saisit que ses coordonnées.

Si l’e-mail et/ou le téléphone de l’utilisateur sont indiqués dans les paramètres du bouton, 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é dans le message du bouton avec le lien de paiement.

**Champ « Fonction »** — pour créer un bouton donnant un lien de paiement, nous choisissons la fonction « Payer ».

**Champ « Système de paiement »** — les systèmes de paiement connectés au projet seront affichés dans la liste.\
Si aucun système de paiement n’est connecté au projet, ce type de bouton ne sera pas disponible.

**Champ « Nom du produit » (obligatoire)** — il faut indiquer le nom exact du produit. Par exemple : pas « Téléphone », mais « Smartphone Xiaomi, modèle … ».\
Remarque : les guillemets doubles ne peuvent pas être utilisés dans le nom du produit ; supprimez-les ou remplacez-les par des guillemets simples.

**Champ « Montant » (obligatoire)** — nous indiquons le prix du produit.

**Menu « Informations supplémentaires »** — lorsque vous cliquez sur ce bouton, des champs supplémentaires s’ouvrent pour créer le lien :

* Description de la commande
* Remise en roubles
* Variable de l’e-mail de l’acheteur
* Variable du numéro de téléphone de l’acheteur
* Durée de validité du lien
* ID du produit pour l’abonnement (pour les paiements automatiques)
* Contenu payé

**Case à cocher « Notification au clic »** — peut être sélectionnée pour suivre l’ouverture du lien de paiement. Dans ce cas, lorsqu’on clique sur le bouton, un message est envoyé dans le dialogue du client dans SaleBot, indiquant qu’un passage sur le lien a eu lieu.

<div data-with-frame="true"><figure><img src="/files/51ea93d2a93d85f7d6569484f0c86e7888274787" alt="" width="431"><figcaption></figcaption></figure></div>

Sur la base de ce message, il est possible de configurer la logique de fonctionnement ultérieure du bot.\
De nombreux systèmes de paiement prennent en charge les caisses en ligne cloud, requises conformément à la loi 54-FZ.

Lisez sur le site du système de paiement choisi les particularités de l’émission des reçus, afin d’éviter des problèmes avec l’administration fiscale.

Voici à quoi ressemble la page de paiement qui s’ouvre après avoir suivi le lien dans le bouton « Payer » :

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

### Paramètres supplémentaires pour créer un 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 **Données supplémentaires** champ.

**Champ « Remise »** — ici, vous pouvez indiquer le montant de la remise en roubles ou en roubles et kopecks. Pour les kopecks, utilisez un point comme séparateur : 50.99\
Sur la page de paiement, le **Montant à payer** champ affichera la remise prise en compte, et le prix principal du produit sera barré.

**Champ « Variable de l’e-mail de l’acheteur »** (facultatif, si un numéro de téléphone est fourni) — ici est indiqué l’e-mail de l’utilisateur (client). Vous pouvez également utiliser une variable contenant l’e-mail, par exemple : `#{email}`

**Champ « Variable du numéro de téléphone de l’acheteur »** (facultatif, si l’e-mail est fourni) — ici, vous pouvez utiliser une variable indiquant le numéro de téléphone de l’acheteur, au format : 79000000000, par exemple : `#{phone}`\
Il faut obligatoirement un e-mail et/ou un téléphone.

**Champ « Durée de validité du lien »** — la date `jj.mm.aaaa hh:mm` peut être indiquée au format (par exemple, 25.01.2021 11:00) ou la date d’expiration du lien peut être définie via une variable. Par exemple : `#{link_expired}`

**Champ « ID du produit pour l’abonnement »** — pour créer un paiement automatique, indiquez l’ID du produit. Pour créer un abonnement, il faut créer un produit d’abonnement.\
Guide complet : [Création et configuration des abonnements Prodamus](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Si un ID de produit est fourni pour l’abonnement, le montant du paiement n’est pas pris en compte. Les informations sur le produit sont récupérées depuis la fiche produit dans l’espace Prodamus.\
Le numéro de téléphone indiqué lors du paiement sera nécessaire pour gérer l’abonnement.\
Si un ID de produit est fourni pour l’abonnement, en cas de paiement réussi, l’ID de ce produit sera transmis dans le callback.

**Champ « Contenu payé »** (conditionnellement obligatoire) — ces données sont nécessaires pour fiscaliser le paiement via Prodamus, si vous n’avez pas votre propre caisse en ligne. Dans ce champ, indiquez la description de l’achat, son prix et un lien vers le contenu.\
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`

### Bouton avec la fonction « Payer »

Si vous indiquez la durée de validité du lien, le scénario suivant se produit :\
Si l’utilisateur demande le lien de paiement pendant sa période de validité (c’est-à-dire avant l’expiration du lien) et qu’il se trouve dans le dialogue, le paiement sera impossible, et le message suivant lui sera affiché :

<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="" width="563"><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 payer avec ce lien.
{% endhint %}

**2. Lorsque l’utilisateur demande le lien, s’il n’est pas actif à ce moment-là**\
Dans ce cas, le bouton ne s’affichera tout simplement pas. Dans les variables du client, `"error_payment_button"` la variable apparaîtra, et sa valeur sera la suivante :\
\&#xNAN;**"Erreur : la date d’expiration du lien doit être postérieure à la date actuelle"**.

{% hint style="success" %}
Pour que l’utilisateur puisse effectuer le paiement correctement, il est recommandé de gérer ce cas séparément.
{% endhint %}

Créez le bloc conditionnel suivant :\
Si le message suivant arrive :\
`error_payment_button == "Erreur : la date d’expiration du lien doit être postérieure à la date actuelle"`

Alors affichez le texte suivant :\
\&#xNAN;**"Désolé, vous n’avez pas pu payer à temps, le lien de paiement était invalide"**.

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

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

### Variables client créées automatiquement lors de l’utilisation du bouton avec la fonction « Payer »

Dès que l’utilisateur reçoit un bloc avec le bouton « Payer », des variables sont automatiquement créées pour le client :

**Variable client système `__payments`** — cette variable stocke le montant et l’identifiant du lien créé, et elle est nécessaire pour identifier le webhook provenant du système de paiement.

{% hint style="danger" %}
Variable client système `__payments`Ne peut pas être supprimé ni modifié !
{% endhint %}

**`error_payment_button` variable client** est créée automatiquement si une erreur survient lors de la création du bouton.\
Cette variable contient le texte de l’erreur ou la réponse d’erreur du système de paiement.

{% hint style="warning" %}
Les valeurs des variables deviennent actives au moment du passage au bloc suivant.
{% endhint %}

## Comment traiter le résultat

**Paiement réussi**\
Après un paiement réussi, le bot reçoit **UN CALLBACK AUTOMATIQUE** composé des 10 premiers caractères de la clé secrète du système de paiement, `_success` du mot et du montant du paiement.\
Il suffit simplement de le copier pour l’utiliser dans la configuration du schéma.

Par exemple : `ovg58keefc_success 44`, où :

* `ovg58keefc` — les 10 premiers caractères de la clé secrète du système de paiement
* `_success` — le résultat du traitement de la demande (paiement réussi)
* `44` — le montant du paiement

{% hint style="info" %}
L’utilisateur ne VOIT PAS les **callbacks (notifications) provenant du système de paiement**. Ils sont affichés uniquement dans l’onglet **« Clients »** et sont visibles par l’opérateur.
{% endhint %}

**Exemple d’utilisation :**\
**Étape 1.** Ajoutons des boutons avec la fonction « Payer » au bloc « Avec bouton de paiement ».\
**Étape 2.** Dans ce bloc, vers le bloc « Paiement réussi » **Condition de liaison** champ, nous indiquons le callback.\
De même, si le callback de paiement réussi est indiqué dans la condition du bloc « Condition initiale », le fonctionnement se fera de manière analogue.

{% hint style="warning" %}
**Important :** faire le choix « Correspondance exacte » ou « Présence des mots-clés ».
{% endhint %}

❗️Si vous décidez de vérifier le paiement sur la flèche indiquée par condition exacte, réfléchissez bien à la logique de votre schéma. Si le client quitte le bloc où la condition est traitée avec le callback, il n’y aura pas de passage au bloc suivant. Il est préférable d’utiliser cette méthode de vérification uniquement si le client ne change pas de position dans le tunnel.

Dans les schémas où le client se déplace entre les blocs, il est plus pratique d’utiliser le callback **« Condition initiale »** dans le bloc.<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

Après un paiement réussi, le bot reçoit **UN CALLBACK AUTOMATIQUE** composé des 10 premiers caractères de la clé secrète du système de paiement, `_success` du mot et de l’ID du produit d’abonnement.

Par exemple : `214009eefc_success 618117`, où :

* `009eefc` — les 10 premiers caractères de la clé secrète du système de paiement
* `_success` — le résultat du traitement de la demande (paiement réussi)
* `618117` — l’ID du produit d’abonnement

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

**Paiement en erreur**\
En cas d’erreur lors de l’exécution du paiement, le bot reçoit **UN CALLBACK AUTOMATIQUE** composé des 10 premiers caractères de la clé secrète du système de paiement, `_fail` du mot et du montant du paiement.

Par exemple : `ovg58keefc_fail 44`, où :

* `ovg58keefc` — les 10 premiers caractères de la clé secrète du système de paiement
* `_fail` — le résultat du traitement de la demande (paiement non effectué ou erreur)
* `44` — le 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’échec du paiement.
{% endhint %}

Si le montant indiqué dans les paramètres du bouton diffère du montant payé par le client, le bot recevra **UN CALLBACK AUTOMATIQUE** un callback. Il se compose des 10 premiers caractères de la clé secrète du système de paiement, `_different_amounts` du mot et de l’identifiant unique du paiement.

Par exemple : `ovg58keefc_different_amounts 123456`, où :

* `ovg58keefc` — les 10 premiers caractères de la clé secrète du système de paiement
* `_different_amounts` — le résultat du traitement de la demande (le montant du paiement diffère du montant du lien)
* `123456` — l’identifiant unique du paiement

## Dans le calculateur, `get_prodamus_payment_url` fonction

Pour créer un lien de paiement, **dans le bloc Calculateur `get_prodamus_payment_url` fonction** peut être utilisée.\
**Dans le champ du Calculateur,** nous attribuons à la variable la valeur de cette fonction : `get_prodamus_payment_url`.&#x20;

{% hint style="info" %}
Vous choisissez vous-même le nom de la variable. Les captures d’écran montrent des exemples de nommage des variables.
{% endhint %}

Le lien de paiement sera écrit dans cette variable. La variable peut être affichée dans un message comme lien ou placée dans un bouton avec le texte « Payer ».

**Exemple de lien de paiement :** [https://payform.kz/7p3JR8/](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" %}
&#x20;`your_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><strong>Montant du paiement</strong> — peut être fourni sous forme d’entier ou de nombre décimal séparé par un point. Par exemple : <code>25</code> ou <code>52.5</code>. (paramètre obligatoire)</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Nom du produit</strong> (paramètre obligatoire)</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Durée de validité du lien de paiement</strong> — <code>jj.mm.aaaa</code> au format (par exemple, 25.01.2021).<br>De plus, <strong>Calculateur</strong> dans le champ, vous pouvez indiquer :<br><code>expired = current_date + 2</code> (le lien sera valable pendant 2 jours jusqu’à 00:00).</p><p>Il est également possible d’indiquer une heure précise : <code>jj.mm.aaaa hh:mm</code> (par exemple, 25.01.2021 12:23).</p><p>Vous pouvez également utiliser des variables standard, par exemple, définir la validité du lien à 30 minutes :</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Si vous souhaitez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple, un guillemet double ou <code>None</code> comme valeur.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><strong>Numéro de téléphone de l’acheteur</strong> — facultatif, si <code>customer_email</code> paramètre est fourni.<br>Si vous souhaitez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou double.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Adresse e-mail de l’acheteur</strong> — facultatif, si <code>customer_phone</code> paramètre est fourni.<br>Si vous souhaitez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou double.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>Montant de la remise</strong> — le paramètre peut être fourni sous forme d’entier ou de nombre avec un point : <code>25</code> ou <code>63.5</code>.<br>Si vous souhaitez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou double.</td></tr><tr><td><strong><code>description</code></strong></td><td><strong>Description du produit</strong> (si non spécifié, le champ <code>'Paiement de la facture order_id'</code> sera rempli automatiquement).<br>Si vous souhaitez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou double.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Paramètres supplémentaires</strong>, paramètres qui ne figurent pas dans cette fonction.<br>Les paramètres supplémentaires disponibles peuvent être consultés 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">Prodamus REST API</a></p><p>Par exemple :</p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}
</code></pre><p>Si vous souhaitez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple/double ou <code>None</code> comme valeur.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>chaîne de 50 à 4000 caractères</strong> au format <code>"description de la commande - prix - lien vers la ressource achetée"</code>.<br>Par exemple :<br><code>“Cours ‘Pêche à la brème’, prix 4999 roubles, lien vers la page du cours : https://www.lovilescha.ru/courses/poimai_kilogram/"</code></p><p>Ce paramètre est obligatoire si vous n’avez pas votre propre caisse en ligne ; il est nécessaire pour fiscaliser le paiement via Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemple" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Cours ‘Pêche à la brème’, prix 4999 tenges, lien vers la page du cours : <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_url = get\_prodamus\_payment\_url( 4999, 'Cours ‘Pêche à la brème’', '27.03.2023 17:00', '79167777771', '<mail@mail.com>', 20, 'Le meilleur cours du marché', extra\_params, products\_for\_receipt

Dans cet exemple :

* `extra_params` — paramètres supplémentaires (par exemple, limite de paiement).
* `products_for_receipt` — informations sur le produit affichées sur le reçu.
* `get_prodamus_payment_url` Le lien de paiement est créé à l’aide de la fonction.
  {% endtab %}
  {% endtabs %}

{% hint style="warning" %}
Si le bloc contient plusieurs fonctions d’obtention de lien et qu’une erreur se produit, la valeur d’erreur **`error_payment_func`** sera écrite dans la variable.

L’erreur est écrite dans le calculateur pour la dernière fonction.
{% endhint %}

## `payment_sum` création du lien via la variable et les paramètres supplémentaires

{% hint style="info" %}
**Attention :** `payment_sum` la valeur de la variable est prise à partir de la dernière variable, c’est-à-dire après les variables facultatives : `payment_description`, `product_name` etc.
{% endhint %}

Pour créer un lien de paiement, **Dans le champ du Calculateur, `payment_sum` il suffit de définir la valeur de la variable**.\
Ensuite, la variable **`prodamus_pay_url`** apparaît automatiquement.

**Exemple de lien de paiement :** `https://payform.ru/7p3JR8/`

Cette variable peut être affichée dans un message comme lien ou placée dans un bouton avec le texte « Payer ».

`payment_sum` Avant de déclarer la variable, vous pouvez indiquer les variables facultatives suivantes :

| Paramètres de la fonction  | Description du paramètre                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **product\_name**          | **Nom du produit** (si non spécifié, le champ « Paiement de la facture order\_id » sera rempli automatiquement) – indiqué dans la capture d’écran ci-dessous.                                                                                                                                                                                                                                                                                                         |
| **payment\_description**   | **Description du produit** (si non spécifié, le champ `'Paiement de la facture order_id'` sera rempli automatiquement) – indiqué dans la capture d’écran ci-dessous.                                                                                                                                                                                                                                                                                                  |
| **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 un autre paramètre est fourni.                                                                                                                                                                                                                                                                                                                                                                                 |
| **customer\_email**        | Adresse e-mail de l’acheteur                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| **link\_expired**          | <p><strong>Durée de validité du lien de paiement</strong> — <code>jj.mm.aaaa</code> au format (par exemple, 25.01.2021).<br>De plus, <strong>Calculateur</strong> dans le champ, vous pouvez indiquer :<br><code>link\_expired = current\_date + 2</code> (le lien sera valable pendant 2 jours jusqu’à 00:00).</p>                                                                                                                                                   |
| **link\_expired**          | <p>Il est également possible d’indiquer une heure précise, format : <code>jj.mm.aaaa hh:mm</code> (par exemple, <code>25.01.2021 12:23</code>).<br>Vous pouvez également utiliser des variables standard, par exemple, pour définir la durée de validité du lien à 30 minutes :<br>time = current\_time + 30 link\_expired = "#{current\_date} #{time}"</p>                                                                                                           |
| **currency**               | <p><strong>Devise du paiement</strong>, par défaut <code>"rub"</code>.<br>Liste complète des arguments :</p><ul><li><code>rub</code></li><li><code>usd</code></li><li><code>eur</code></li><li><code>kzt</code></li></ul><p>Ce paramètre doit être indiqué en minuscules.</p>                                                                                                                                                                                         |
| **payment\_title**         | <p><strong>Titre du paiement</strong> (jusqu’à 127 caractères). Si non spécifié, il sera rempli automatiquement avec le texte suivant :<br>“<strong>Paiement de la facture payment\_id</strong>” (<code>payment\_id</code> — identifiant de commande dans MaviBot).</p>                                                                                                                                                                                               |
| **payment\_description**   | **Brève description du paiement** (jusqu'à 127 caractères)                                                                                                                                                                                                                                                                                                                                                                                                            |
| **locale**                 | <p><strong>Langue de la page de paiement</strong> — <code>en-US</code>, <code>fr-XC</code> etc. s'affiche au format. La valeur par défaut est <code>ru-RU</code>.<br>La liste complète est disponible via le lien</p>                                                                                                                                                                                                                                                 |
| **products\_for\_receipt** | <p><strong>chaîne de 50 à 4000 caractères</strong> au format <code>"description de la commande - prix - lien vers la ressource achetée"</code>.<br>Par exemple :<br><code>« Cours ‘Pêche au brème’, prix 4999 tenges, lien vers la page du cours : <https://www.lovilescha.ru/courses/poimai_kilogram/> »</code></p><p>C'est un paramètre obligatoire, nécessaire pour la fiscalisation du paiement via Prodamus si vous n'avez pas votre propre caisse en ligne.</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="" width="563"></div>

{% hint style="success" %}
`discount_value`, `customer_phone`, `customer_email` et `link_expired` les variables sont également pertinentes 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>

À l'étape suivante, là où c'est nécessaire **`prodamus_pay_url`** nous affichons le lien :

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

**`prodamus_available_payment_methods`** variable **`payment_sum`** est définie avant la publication.\
Valeurs possibles :

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>Paiement par carte émise en Fédération de 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 Fédération de Russie</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Paiement par carte EUR de tous les pays, sauf la Russie et la Biélorussie</td></tr><tr><td><strong>SBP</strong></td><td>Paiement rapide, sans saisir les 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>Ю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 </td></tr><tr><td><strong>invoice</strong> </td><td>Paiement sur facture</td></tr><tr><td><strong>installment</strong> </td><td>Paiement échelonné via Prodamus</td></tr><tr><td><strong>installment_5_21</strong></td><td>Paiement échelonné sur 3 mois via Prodamus</td></tr><tr><td><strong>installment_6_28</strong></td><td>Paiement échelonné sur 6 mois via Prodamus</td></tr><tr><td><strong>installment_10_28</strong></td><td>Paiement échelonné sur 10 mois via Prodamus</td></tr><tr><td><strong>installment_12_28</strong> </td><td>Paiement échelonné sur 12 mois via Prodamus</td></tr><tr><td><strong>installment_0_0_3</strong></td><td>Paiement échelonné sur 3 mois via Tinkoff</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Paiement échelonné sur 4 mois via Tinkoff</td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Paiement échelonné sur 6 mois via Tinkoff</td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Paiement échelonné sur 10 mois via Tinkoff</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Paiement échelonné sur 12 mois via Tinkoff</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Paiement échelonné sur 24 mois via Tinkoff</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Paiement échelonné sur 36 mois via Tinkoff</td></tr><tr><td><strong>credit</strong> </td><td>Crédit via Tinkoff</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td><strong>Paiement échelonné sur 4 mois via « ВсегдаДа »</strong> (ne fonctionne pas avec available_payment_methods)</td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td><strong>Paiement échelonné sur 6 mois via « ВсегдаДа »</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>Paiement échelonné sur 10 mois via « ВсегдаДа »</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>Paiement échelonné sur 12 mois via « ВсегдаДа »</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>Paiement échelonné sur 24 mois via « ВсегдаДа »</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>Paiement échelonné sur 36 mois via « ВсегдаДа »</strong> </td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>Paiement échelonné sur 6 mois via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>Paiement échelonné sur 10 mois via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>Paiement échelonné sur 12 mois via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>Paiement échelonné sur 24 mois via Sberbank</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>Paiement échelonné sur 36 mois via Sberbank</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>Paiement échelonné sur 6 mois via OTP Bank</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Paiement échelonné sur 10 mois via OTP Bank</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Paiement échelonné sur 12 mois via OTP Bank</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Paiement échelonné sur 24 mois via OTP Bank</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Paiement échelonné sur 36 mois via OTP Bank</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Paiement échelonné sur 6 mois via MTS Bank</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Paiement échelonné sur 10 mois via MTS Bank</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Paiement échelonné sur 12 mois via MTS Bank</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>Paiement échelonné sur 24 mois via MTS Bank</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>Paiement échelonné sur 36 mois via MTS Bank</td></tr><tr><td><strong>monetaworld</strong></td><td>Cartes des banques mondiales, sauf la Russie</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Paiement en plusieurs fois via Sber</td></tr></tbody></table>

Plusieurs valeurs **séparées par une barre verticale** sont autorisées.\
Exemple :

```python
prodamus_available_payment_methods = "AC|PC|QW"
```

`prodamus_currency` est un autre paramètre additionnel qui permet d'afficher le montant dans une devise donnée.

Devises possibles :

* `kzt` — pour le tenge
* `eur` — pour l'euro
* `usd` — pour le dollar

Ainsi, le montant indiqué dans le lien sera dans la devise choisie.

**Callback `payment_callback` à la réception de** `currency` et `currency_sum` il faut prêter attention aux paramètres, dans lesquels la devise et le montant sont indiqués.

{% hint style="warning" %}
Si non indiqué, il redirige vers la page sans moyens de paiement.\
Les moyens de paiement peuvent être ajoutés via le support. Les méthodes activées peuvent être vérifiées dans les paramètres de la page ou en créant un lien de paiement.
{% endhint %}

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

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

### Comment traiter le résultat

**Paiement réussi**

**Important :** Après un paiement réussi ou échoué, des callbacks arrivent au bot, grâce auxquels vous pouvez déterminer si le paiement a été effectué avec succès.

Les callbacks apparaissent dans le système comme des messages venant de l'utilisateur, mais l'utilisateur ne peut pas les envoyer. Ils se présentent sous la forme d'une clé secrète et d'un statut. Par exemple :

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success
```

ou

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail
```

Après un paiement réussi **prodamus\_payment\_completed** la variable `True` prend automatiquement la valeur

**Remarque :** Les callbacks arrivent avec un léger retard, il est donc préférable d'envoyer un message à l'utilisateur après avoir envoyé le lien :

> « Après le paiement, veuillez attendre la confirmation de la réussite du paiement. »

***

**Structure du callback**

Pour les liens créés via le bouton Paiement ou via la fonction du Calculateur, un callback est envoyé automatiquement au bot après le paiement. Il contient :

```
<clé_secrète>_success <montant_du_paiement>
```

Par exemple :

```
ovg58keefc_success
```

* `ovg58keefc` — clé secrète complète du système de paiement
* `_success` — le résultat du traitement de la demande (paiement réussi)

***

**Utilisation pratique**

Vous pouvez traiter un paiement réussi via un bloc conditionnel et afficher à l'utilisateur le message approprié.

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

{% hint style="danger" %}
Le type de comparaison doit être "Full match" / "Correspondance exacte"

Pour effectuer un nouveau paiement, il faut impérativement **payment\_sum** remettre la variable à zéro et supprimer le lien précédemment créé. Ce n'est qu'ensuite que **payment\_sum** vous pouvez attribuer une nouvelle valeur à la variable et obtenir le lien mis à jour.
{% endhint %}

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

De plus, dans le système Prodamus, il existe des notifications indiquant si l'abonnement a été activé ou arrêté :

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

**« L'abonnement a été désactivé par l'utilisateur »** — si l'abonnement est arrêté manuellement (par exemple, en cas de désabonnement).\
Cette notification peut arriver avant la fin de la période actuellement payée. L'action dépend de votre décision : ignorer, mettre sous surveillance ou tenter de reconquérir l'utilisateur.

**« L'abonnement a été réactivé par l'utilisateur »** — l'abonnement a été rétabli.\
Cette notification peut arriver si l'utilisateur rétablit l'abonnement avant la fin de la période actuellement payée. L'action dépend de votre décision : ignorer ou retirer de la liste de surveillance.

**« Désactivation de l'abonnement »** — si l'abonnement est arrêté après plusieurs paiements échoués.

### Enregistrement des valeurs à partir du callback

Après la réception d'une notification de paiement réussi **payment\_callback** la variable reçoit un callback de Prodamus contenant toutes les données du paiement. Vous pouvez enregistrer ces données et les utiliser comme vous le souhaitez.

Exemple de callback :

```json
{
  "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": "Produit",
  "payment_type": "Carte bancaire 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 création du lien **product\_name** et **payment\_description** les variables peuvent être indiquées. Dans ce cas, lorsqu'un callback arrive, vous pouvez les récupérer ainsi :

```python
product = get(payment_callback,'products[0][name]')
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 : **payment\_sum** la variable reçoit la dernière valeur, qui **des variables optionnelles** se place après : **payment\_description**, **product\_name**.
{% endhint %}

Le montant peut être récupéré ainsi :

```python
summa = get(payment_callback, 'sum')
```

### **Callbacks disponibles**

En plus des principaux callbacks de paiement réussi, les messages suivants arrivent dans le chat sans être visibles par l'utilisateur :

<details>

<summary>callbacks</summary>

* L'abonné a désactivé l'abonnement ([plus de détails ici](#deaktivaciya-reaktivaciya-podpiski))
* L'abonné a réactivé l'abonnement ([plus de détails ici](#deaktivaciya-reaktivaciya-podpiski))
* L'abonnement est terminé
* Paiement échoué - message supplémentaire avec explication (sur la capture ci-dessus)
* Notification d'un prochain prélèvement - date et heure du prochain prélèvement
* Demande de paiement échelonné avec le statut

</details>

<details>

<summary><strong>Exemples de callbacks dans la conversation avec le client</strong></summary>

* **L'abonné a désactivé l'abonnement**
* **L'abonné a réactivé l'abonnement**
* **L'abonnement est terminé**
* **Paiement échoué - fonds insuffisants.**
* **Paiement échoué - la carte a expiré.**
* **Paiement échoué - limite de carte dépassée.**
* **Paiement échoué - carte perdue**
* **Paiement échoué - erreur système**&#x20;
* **Paiement échoué - opération refusée. Veuillez contacter la banque émettrice de la carte.**&#x20;
* **Paiement échoué - opération refusée par la banque émettrice.**
* **Paiement échoué - opération refusée par la banque.**&#x20;
* **Notification d'un 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**

</details>

Si vous le souhaitez, vous pouvez configurer l'envoi de n'importe quel message à l'utilisateur. Par exemple, envoyer un message en cas d'échec du paiement automatique.

Pour un paiement échoué spécifique, vous pouvez configurer les blocs de réponse au message selon la raison comme suit :

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

Pour envoyer un message à tous les paiements é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></figcaption></figure></div>

Dans tous les callbacks, si le texte contient **« Paiement échoué »** l'utilisateur recevra un message avec le texte que vous avez défini.

## **Comment effectuer un paiement par abonnement**

### **Comment créer un abonnement**

Pour créer un abonnement, il faut d'abord **produit d'abonnement** à créer.\
Instructions complètes : [Comment créer et configurer un abonnement](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)

Ensuite, nous copions le **ID** du produit d'abonnement. Par exemple, ci-dessous est indiqué où le récupérer :

<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 créer un lien de paiement d'abonnement, **prodamus\_subscription** la variable du produit d'abonnement **ID** doit être renseignée. Ensuite, automatiquement **prodamus\_pay\_url** apparaît automatiquement.

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

Traduction en français (style commercial) :

`prodamus_pay_url` la variable peut être affichée à l'écran comme lien ou placée sur un bouton portant le texte « Payer ». Exemple de lien : <https://payform.kz/7p3JR8/>

Le traitement du résultat s'effectue comme pour un paiement unique (comme lu ci-dessus).

Après un abonnement réussi, le numéro de téléphone saisi lors du paiement **customer\_phone** est ajouté à l'utilisateur. Le numéro de téléphone est nécessaire pour gérer l'abonnement.

Si **customer\_email** n'est pas renseigné, pour gérer l'abonnement **customer\_phone** est obligatoire.

### **`get_prodamus_subscription_url` comment créer un lien vers un abonnement avec la fonction**

Examinons une autre méthode pour créer un lien de paiement d'abonnement pour un produit.

1. Depuis le compte Prodamus, un produit d'abonnement est créé.\
   Les instructions complètes sont disponibles via le lien :\
   [Comment créer et configurer un abonnement](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Ensuite, nous copions le **ID** du produit d'abonnement. Par exemple, ci-dessous est indiqué où le récupérer :

<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 un lien de paiement d'un produit par abonnement, dans le Calculateur, 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 par abonnement

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

{% tab title="Description du paramètre" %}
`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> — peut être copié depuis le compte Prodamus (paramètre obligatoire).</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Nom du produit</strong> (paramètre obligatoire).</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Durée de validité du lien de paiement</strong> — au format jj.mm.aaaa (par exemple, 25.01.2021).</p><p>Peut également être indiqué dans le champ « Calculateur » :</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # le lien sera valable pendant 2 jours, jusqu'à 00:00
</code></pre><p><code>expired</code> Le paramètre peut également être défini avec l'heure exacte, format : jj.mm.aaaa hh:mm (par exemple, 25.01.2021 12:23).</p><p>Vous pouvez également utiliser des variables standard, par exemple définir la durée de validité du lien à 30 minutes :</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Si vous souhaitez omettre ce paramètre, utilisez à la place des guillemets simples ou doubles, ou <code>None</code> comme valeur.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><p><strong>Numéro de téléphone du payeur</strong> — facultatif, si <code>customer_email</code> si le paramètre</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place des guillemets simples ou doubles.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>E-mail du payeur</strong> — facultatif, si <code>customer_phone</code> si le paramètre</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place des guillemets simples ou doubles.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>Montant de la remise</strong> — le paramètre peut être donné comme entier ou décimal : 25 ou 63,5.</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place des guillemets simples ou doubles.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Description du produit</strong> — si non renseigné, par défaut <code>'Paiement de la facture order_id'</code> sera renseigné.</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place des guillemets simples ou doubles.</p></td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Paramètres supplémentaires</strong>, ce sont des paramètres absents de cette fonction.<br>Les paramètres additionnels possibles peuvent être consultés dans la documentation API du système de paiement :<br><a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Guide API REST de Prodamus</a></p><p><strong>Exemple :</strong></p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3"}
</code></pre><p>Si vous souhaitez omettre ce paramètre, mettez à la place des guillemets simples/doubles ou <code>None</code> comme valeur.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>une chaîne de 50 à 4000 caractères</strong>, format : <code>"description de la commande - prix - lien vers la ressource achetée"</code></p><p>Exemple :<br>Cours « Pêche au brème », prix 4999 tenges, lien vers la page du cours : <a href="https://www.lovilescha.ru/courses/poimai_kilogram/">https://www.lovilescha.ru/courses/poimai_kilogram/</a>.</p><p>Ce paramètre <strong>obligatoire</strong>, est nécessaire pour fiscaliser les paiements via Prodamus si vous n'avez pas votre propre caisse en ligne.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Exemple de code à copier" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Cours ‘Pêche au brème’, prix de l'abonnement mensuel 2000 tenges, lien vers la page du cours : <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_sub = get\_prodamus\_subscription\_url(618988, 'Cours ‘Pêche au brème’', '27.03.2023 17:02', '79167777771', '<mail@mail.com>', 20, 'Le meilleur cours du marché', extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Si, dans le bloc, une erreur survient lors de la récupération du lien via plusieurs fonctions, **la valeur d'erreur `error_payment_func` dans la variable** sera écrite.

L’erreur est écrite dans le calculateur pour la dernière fonction.
{% endhint %}

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

Cette méthode est réservée aux abonnements réels ; en mode démo, il n'y a pas de liaison de carte.

Pour gérer un abonnement, il faut impérativement **`customer_phone`** ou **`customer_email`** l'un des paramètres

doit être renseigné.\
[delete\_subscription\_prodamus](https://store.salebot.pro/function/delete_subscription_prodamus)

**Exemple de paramètres :**

```json
{
  "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, obtenu à partir des paramètres du constructeur
* `secret_key` – clé secrète obtenue à partir des paramètres
* `id_subscription` – ID du produit d’abonnement
* `customer_phone` – téléphone du titulaire de l’abonnement
* `switcher` – gestion de l’abonnement : `0` – suspendre l’abonnement, `1` – réactiver l’abonnement
* `profile_id` – ID du profil dans le système Prodamus

**Remarque :**\
Si l’ID du profil est fourni, il est **`profile_id`** enregistré dans la variable.\
`profile_id` à la fonction **`customer_phone`** ou **`customer_email`** peut être transmis à la place, ce qui permet de suspendre l’abonnement.

**Exemple :** configuration des blocs d’abonnement

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

Notez que la fonction **status** renvoie, vous pouvez la sauvegarder et la traiter comme vous le souhaitez. Lors de la suspension ou de la réactivation réussie de l’abonnement, **status = ok** sera.

### Fonction de gestion de l’abonnement

prodamus\_subscription\_switch\_status(subscription\_id, switcher, customer\_phone, customer\_email, profile\_id) Paramètres :

subscription\_id – ID du produit d’abonnement

switcher – gestion de l’abonnement : 0 – suspendre l’abonnement, 1 – réactiver l’abonnement

customer\_phone – téléphone du titulaire de l’abonnement ; facultatif si customer\_email est renseigné

customer\_email – adresse e-mail du titulaire de l’abonnement ; facultatif si customer\_phone est renseigné

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>

Traduction en français (style commercial) :

**Exemple 1 :** `customer_phone` paramètre est fourni, `customer_email` a été omis :

```python
stat = prodamus_subscription_switch_status('618117', '0', '75431312321')
```

**Exemple 2 :** `customer_email` paramètre est fourni, `customer_phone` a été omis :

```python
stat = prodamus_subscription_switch_status('618117', '0', '', 'examp@mail.com')
```

{% hint style="success" %}
La fonction, si toutes les opérations se terminent avec succès, **`ok`** renvoie 'ok' ou, en cas d’erreur, renvoie sa description.
{% endhint %}

## Gestion des remises sur l’abonnement

Cette fonction définit le montant de la remise sur les prochains paiements de l’abonnement. La remise **peut être limitée ou illimitée** en nombre de paiements.

```python
prodamus_subscription_discount(subscription_id, discount, customer_phone, num, profile_id)
```

Paramètres :

* `subscription_id` – ID de l’abonnement
* `discount` – nombre décimal avec une précision de deux chiffres après la virgule ; 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, format : `+79999999999` (facultatif, si `customer_email` la variable existe ; elle apparaît après le premier paiement)
* `num` – nombre de paiements auxquels la remise s’applique (facultatif ; si non indiqué, la remise s’applique à tous les paiements)
* `profile_id` – ID du profil dans le système Prodamus

Si la requête est exécutée avec succès, la fonction `'ok'` renvoie ; en cas d’erreur, la fonction renvoie la description de l’erreur.

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

**Exemples :**

**1. Accorder une remise de 1₽ sur tous les prochains paiements automatiques** (le numéro de téléphone n’est pas indiqué, car il est automatiquement `customer_phone` récupéré à partir de la variable ; le montant de la remise s’applique par défaut à toute la durée de l’abonnement) :

```python
r = prodamus_subscription_discount('624034', '1')
```

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

**2. Exemple d’octroi d’une remise de 2₽ sur les 3 prochains paiements** (le numéro de téléphone est donné entre guillemets vides, car il est automatiquement `customer_phone` récupéré à partir de la variable) :

```python
r = prodamus_subscription_discount('624034', '2', '', '3')
```

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

**3. Exemple d’affichage de la remise en nombre décimal** (le séparateur est un point, les valeurs sont indiquées sans guillemets), le numéro de téléphone peut être fourni 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="" width="563"></div>

## **Comment définir la date du prochain paiement de l’abonnement**

Cette méthode permet de décaler la date du prochain paiement de l’abonnement. La date ne peut être décalée que par rapport à la date du prochain paiement actuellement définie **« vers le futur »** vers l’avant, ce qui permet d’augmenter la durée d’adhésion au club.

Par exemple, cela peut être utilisé comme bonus pour les abonnés.

Pour cela, il faut utiliser la fonction suivante :

```python
prodamus_subscription_payment_date(subscription_id, date, customer_phone, profile_id)
```

Paramètres :

* `subscription_id` – identifiant de l’abonnement
* `date` – date au format jj.mm.aaaa hh:mm ou jj.mm.aaaa ; si seule la date jj.mm.aaaa est fournie, l’heure sera 00:00
* `customer_phone` – facultatif ; si non indiqué, `customer_phone` est récupéré à partir de la variable ; si elle n’est pas trouvée, la fonction ne fonctionnera pas
* `profile_id` – ID du profil dans le système Prodamus

### Comment envoyer des paramètres à Prodamus

Pour envoyer les paramètres nécessaires (par exemple, la date de début de l’abonnement, la désactivation du paiement échelonné, etc.) au système Prodamus, ajoutez au nom de la variable **`prodamus_`** le préfixe.

Ensuite, lors de la création du lien de paiement, les paramètres de cette variable seront automatiquement envoyés au système de paiement.

## Comment tester le paiement

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

Afin d’éviter que de l’argent soit débité de votre compte lors de la configuration de l’intégration et des tunnels de paiement **vous pouvez utiliser des cartes de test**.

{% hint style="warning" %}
D’abord, mettez 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>

#### Vous pouvez utiliser des comptes de test pour effectuer un paiement test.

**Cartes de test de Sberbank :**

**MIR**\
Numéro de carte : 2202 2050 0001 2424\
Date d’expiration : 05/35\
Code de vérification au dos (CVV) : 669

**MasterCard**\
Numéro de carte : 5469 9801 0004 8525\
Date d’expiration : 05/26\
Code de vérification au dos (CVV) : 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 (CVV) : 941\
Code de vérification 3-D Secure : 111111

{% hint style="success" %}
❗️Lors d’un paiement via des comptes de test, tous les tunnels et intégrations configurés **fonctionnent comme pour un paiement normal**❗️
{% endhint %}

Formulaire vérifié

{% hint style="danger" %}
Pour accepter des paiements réels, le formulaire **doit passer en mode** fonctionnement. Autrement dit, le commutateur du mode démo doit être **rouge clair** réglé sur l’état.
{% 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/prodamus.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.
