# 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 ; voici un exemple : `demo.payform.ru`.

La clé secrète peut être obtenue dans l’espace personnel, où il faut également indiquer l’URL vers laquelle les notifications (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 dans l’espace personnel du système de paiement « Prodamus »</p></figcaption></figure></div>

[**Guide détaillé 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 dans les paramètres à deux endroits.

Sur la page principale 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 »** ouvrez 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 d’appuyer sur **« Enregistrer »** bouton.
{% endhint %}

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

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

Ensuite, il suffit 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 %}

La connexion est ainsi 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" %}
[Dans cet article, il est expliqué comment créer un tel bouton.](/doc/fr/chatbot/builder/boutons/bouton-de-paiement.md)
{% endhint %}

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

Lorsque l’on passe à 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 réglages 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 avec le bouton contenant 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 sont 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 »** — en cliquant sur ce bouton, des champs supplémentaires pour créer le lien s’ouvrent :

* Description de la commande
* Réduction 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 abonnement (pour créer un paiement automatique)
* Contenu payé

**Case à cocher « Notification au clic »** — peut être activée pour suivre le passage vers le lien de paiement. Dans ce cas, lorsqu’on clique sur le bouton, un message apparaît dans le dialogue du client dans SaleBot indiquant qu’un passage vers le lien a été effectué.

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

À partir de ce message, on peut configurer la logique de fonctionnement ultérieure du bot.\
De nombreux systèmes de paiement prennent en charge les caisses en ligne cloud, nécessaires 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 lorsqu’on suit 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 renseignés 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 « Réduction »** — ici, vous pouvez indiquer le montant de la réduction en roubles ou en roubles et kopecks. Pour les kopecks, utilisez le point comme séparateur : 50.99\
Sur la page de paiement, le montant **Montant à payer** sera affiché avec la réduction 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 renseigné) — ici, indiquez l’e-mail de l’utilisateur (client). Vous pouvez aussi 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 renseigné) — ici, vous pouvez utiliser une variable contenant le numéro de téléphone de l’acheteur, au format : 79000000000, par exemple : `#{phone}`\
Un e-mail et/ou un téléphone doivent обязательно être renseignés.

**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 abonnement »** — fournissez la valeur de l’ID du produit pour créer un paiement automatique. 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 renseigné pour l’abonnement, le montant du paiement ne sera pas pris en compte. Les informations sur le produit sont prises depuis la fiche produit dans l’espace personnel 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 renseigné 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 le 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, la situation suivante 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 est dans le dialogue, il ne pourra pas effectuer le paiement, et le message suivant s’affichera :

<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 avec la valeur suivante :\
\&#xNAN;**"Erreur : La date d’expiration du lien doit être postérieure à la date actuelle"**.

{% hint style="success" %}
Pour permettre à l’utilisateur d’effectuer le paiement correctement, il est recommandé de traiter ce cas séparément.
{% endhint %}

Créez un bloc conditionnel comme suit :\
Si le message suivant est reçu :\
`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 effectuer le paiement à temps, le lien de paiement n’était plus valide"**.

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

Lorsqu’un 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 est nécessaire pour identifier le webhook provenant du système de paiement.

{% hint style="danger" %}
Variable client système `__payments`Ne pas supprimer ni modifier !
{% endhint %}

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

{% hint style="warning" %}
Les valeurs des variables deviennent à jour lors 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** qui se compose des 10 premiers caractères de la clé secrète du système de paiement, `_success` du mot et du montant du paiement.\
Pour l’utiliser dans la configuration du schéma, il suffit de le copier.

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 requête (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 visibles par l’opérateur.
{% endhint %}

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

{% hint style="warning" %}
**Important :** Choisir l’option « Correspondance exacte » ou « Contient des mots-clés ».
{% endhint %}

❗️Si vous décidez de vérifier le paiement dans la flèche indiquée par condition exacte, réfléchissez bien à la logique de votre schéma. Si le client quitte le bloc qui est franchi par callback selon la condition, le passage au bloc n’aura pas lieu. Il est préférable d’utiliser cette méthode de vérification uniquement si le client n’a pas changé de position dans l’entonnoir.

Dans les schémas où le client se déplace entre les blocs, il est plus efficace d’utiliser l’option consistant à indiquer le callback dans le bloc **« Condition initiale »** .<br>

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

### Paiement réussi pour les produits avec abonnement automatique

Après un paiement réussi, le bot reçoit **UN CALLBACK AUTOMATIQUE** qui se compose 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 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**\
En cas d’erreur lors de l’exécution du paiement, le bot reçoit **UN CALLBACK AUTOMATIQUE** qui se compose 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 requête (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’erreur de paiement.
{% endhint %}

Si le montant indiqué dans les réglages du bouton diffère du montant payé par le client, le bot reçoit **UN CALLBACK AUTOMATIQUE** . 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’ID 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 requête (le montant du paiement diffère du montant indiqué dans le lien)
* `123456` — l’ID 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 Calculateur,** 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 noms de variables.
{% endhint %}

Le lien de paiement sera écrit dans cette variable. Vous pouvez afficher la variable comme lien dans un message ou la placer 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 comme un entier ou comme un 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 ce qui suit :<br><code>expired = current_date + 2</code> (le lien sera valide pendant 2 jours jusqu’à 00:00).</p><p>Il est également possible d’indiquer une heure exacte : <code>jj.mm.aaaa hh:mm</code> (par exemple, 25.01.2021 12:23).</p><p>Vous pouvez aussi utiliser des variables standard, par exemple pour fixer 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 voulez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple, un guillemet double ou <code>None</code> 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 le paramètre <code>customer_email</code> est fourni.<br>Si vous voulez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou un guillemet double.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Adresse e-mail de l’acheteur</strong> — facultatif, si le paramètre <code>customer_phone</code> est fourni.<br>Si vous voulez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou un guillemet double.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>Montant de la réduction</strong> — le paramètre peut être fourni comme un entier ou comme un nombre avec un point : <code>25</code> ou <code>63.5</code>.<br>Si vous voulez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou un guillemet double.</td></tr><tr><td><strong><code>description</code></strong></td><td><strong>Description du produit</strong> (si non indiqué, sera rempli automatiquement par <code>'Paiement de la facture order_id'</code> ).<br>Si vous voulez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple ou un guillemet double.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Paramètres supplémentaires</strong>, paramètres absents de cette fonction.<br>Les paramètres supplémentaires disponibles peuvent être consultés dans la documentation de travail avec 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 voulez omettre ce paramètre, vous pouvez mettre à la place un guillemet simple/double ou <code>None</code> 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 et 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 tenge, 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éé via la fonction.
  {% endtab %}
  {% endtabs %}

{% hint style="warning" %}
Si plusieurs fonctions de génération de lien sont présentes dans le bloc et qu’une erreur survient, la valeur de l’erreur sera écrite dans la variable **`error_payment_func`** .

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

## `payment_sum` création du lien via la variable et des 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` et autres.
{% endhint %}

Pour créer un lien de paiement, **Dans le champ Calculateur, `payment_sum` il suffit de définir la valeur de la variable**.\
Après cela, **`prodamus_pay_url`** la variable apparaîtra automatiquement.

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

Vous pouvez afficher cette variable comme lien dans un message ou la placer dans un bouton avec le texte « Payer ».

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

| Paramètres de la fonction  | Description du paramètre                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **product\_name**          | **Nom du produit** (si non indiqué, sera automatiquement rempli par "Paiement de la facture order\_id") – la capture d’écran ci-dessous montre où il est affiché.                                                                                                                                                                                                                                                                                             |
| **payment\_description**   | **Description du produit** (si non indiqué, sera rempli automatiquement par `'Paiement de la facture order_id'` sera rempli) – la capture d’écran ci-dessous montre où il est affiché.                                                                                                                                                                                                                                                                        |
| **discount\_value**        | **Montant de la réduction** (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 ce qui suit :<br><code>link\_expired = current\_date + 2</code> (le lien sera valide pendant 2 jours jusqu’à 00:00).</p>                                                                                                                                |
| **link\_expired**          | <p>Vous pouvez également indiquer une heure exacte, au format : <code>jj.mm.aaaa hh:mm</code> (par exemple, <code>25.01.2021 12:23</code>).<br>Vous pouvez aussi utiliser des variables standard, par exemple pour fixer 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 fourni en minuscules.</p>                                                                                                                                                                                  |
| **payment\_title**         | <p><strong>Titre du paiement</strong> (jusqu’à 127 caractères). Si non indiqué, il sera automatiquement rempli avec le texte suivant :<br>“<strong>Paiement de la facture payment\_id</strong>” (<code>payment\_id</code> — identifiant de la 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. Le format de présentation. La valeur par défaut est <code>ru-RU</code>.<br>La liste complète est disponible via ce 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 à la brème », prix 4999 tenge, lien vers la page du cours : <https://www.lovilescha.ru/courses/poimai_kilogram/>"</code></p><p>Ce paramètre obligatoire est nécessaire pour fiscaliser le 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 de mise en œuvre.**\
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, au besoin, **`prodamus_pay_url`** le lien est affiché :

<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 de déclarer.\
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 РФ</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 РФ</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>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 </td></tr><tr><td><strong>invoice</strong> </td><td>Paiement par 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 « Vsegdada »</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 « Vsegdada »</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>Paiement échelonné sur 10 mois via « Vsegdada »</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>Paiement échelonné sur 12 mois via « Vsegdada »</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>Paiement échelonné sur 24 mois via « Vsegdada »</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>Paiement échelonné sur 36 mois via « Vsegdada »</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 la « Banque OTP »</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Paiement échelonné sur 10 mois via la « Banque OTP »</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Paiement échelonné sur 12 mois via la « Banque OTP »</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Paiement échelonné sur 24 mois via la « Banque OTP »</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Paiement échelonné sur 36 mois via la « Banque OTP »</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Paiement échelonné sur 6 mois via la « Banque MTS »</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Paiement échelonné sur 10 mois via la « Banque MTS »</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Paiement échelonné sur 12 mois via la « Banque MTS »</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, à l’exception de la Russie</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Paiement échelonné via Sber</td></tr></tbody></table>

Plusieurs valeurs **par la barre verticale** sont autorisées à être séparées.\
Par exemple :

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

`prodamus_currency` — c’est un autre paramètre supplémentaire 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 faire attention aux paramètres, où la devise et le montant sont indiqués.

{% hint style="warning" %}
Si ce n’est pas indiqué, la redirection se fera vers une page sans méthodes de paiement.\
Les méthodes de paiement peuvent être ajoutées via le support. Vous pouvez voir les méthodes ajoutées dans les paramètres de la page ou en testant le 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 sont envoyés 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 combinaison 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 délai, il est donc préférable d’envoyer le message à l’utilisateur après l’envoi du lien :

> « Après avoir effectué le paiement, attendez la confirmation de 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 se compose de :

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

Par exemple :

```
ovg58keefc_success
```

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

***

**Utilisation pratique**

Vous pouvez traiter un paiement réussi via un bloc conditionnel et afficher au 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 complète"

Pour effectuer un paiement à nouveau, il est nécessaire de **payment\_sum** mettre la variable à zéro et supprimer le lien précédemment créé. Ce n’est qu’ensuite qu’il est possible de **payment\_sum** attribuer une nouvelle valeur à la variable et d’obtenir un lien mis à jour.
{% endhint %}

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

De plus, dans le système Prodamus, il existe des notifications concernant l’activation ou l’arrêt de l’abonnement :

<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).\
Ce message peut arriver avant la fin de la période payée en cours. L’action dépend de votre décision : ignorer, surveiller ou tenter de récupérer l’utilisateur.

**« L’abonnement a été réactivé par l’utilisateur »** — l’abonnement a été rétabli.\
Ce message peut arriver avant la fin de la période payée en cours si l’utilisateur rétablit son abonnement. 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 réception d’un message de paiement réussi **payment\_callback** la variable contiendra un callback de Prodamus, avec toutes les données de 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 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 création du lien **product\_name** et **payment\_description** les variables peuvent être indiquées. Dans ce cas, lorsqu’un callback arrive, elles peuvent être récupérées comme suit :

```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 prendra la dernière valeur, qui se trouve **après les variables** non obligatoires : **payment\_description**, **product\_name**.
{% endhint %}

Le montant peut être récupéré comme suit :

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

### **Callbacks disponibles**

En plus des callbacks principaux de paiement réussi, les messages suivants apparaîtront dans le chat et ne seront pas 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 non réussi - avec une note explicative (comme sur la capture ci-dessus)
* Notification d’un prélèvement à venir - date et heure du prochain prélèvement
* Demande de paiement échelonné avec le statut

</details>

<details>

<summary><strong>Exemples de callbacks dans une 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 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**

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

Vous pouvez configurer des blocs de réponse au message pour un échec de paiement selon une cause précise 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é »** un message avec le texte que vous avez défini sera envoyé à l’utilisateur.

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

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

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

Ensuite, nous copions **l’ID** du produit d’abonnement. Par exemple, ci-dessous il 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’un produit d’abonnement"></div>

Pour créer un lien de paiement d’abonnement, **prodamus\_subscription** la variable doit contenir **l’ID** l’ID du produit d’abonnement. Après cela, automatiquement **prodamus\_pay\_url** la variable apparaîtra automatiquement.

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

Traduction en français (style professionnel) :

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

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

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

Si **customer\_email** n’est pas fourni, alors pour gérer l’abonnement **customer\_phone** est obligatoire.

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

Voyons une autre méthode pour créer un lien de paiement par abonnement pour un produit.

1. Un produit d’abonnement est créé dans l’espace personnel Prodamus.\
   Le guide complet peut être consulté via ce 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 **l’ID** du produit d’abonnement. Par exemple, ci-dessous il 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’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 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 l’espace 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 aussi être indiqué dans le champ « Calculateur » :</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # le lien sera valable 2 jours, jusqu’à 00:00
</code></pre><p><code>expired</code> le paramètre peut aussi être indiqué avec l’heure exacte, format : jj.mm.aaaa hh:mm (par exemple, 25.01.2021 12:23).</p><p>Vous pouvez aussi utiliser des variables standard, par exemple pour 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, mettez à la place une simple ou double apostrophe, ou <code>None</code> valeur.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><p><strong>Numéro de téléphone de l’acheteur</strong> — facultatif, si le paramètre <code>customer_email</code> si le paramètre est fourni.</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place une simple ou double apostrophe.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>E-mail de l’acheteur</strong> — facultatif, si le paramètre <code>customer_phone</code> si le paramètre est fourni.</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place une simple ou double apostrophe.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>Montant de la réduction</strong> — le paramètre peut être fourni comme entier ou décimal : 25 ou 63.5.</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place une simple ou double apostrophe.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Description du produit</strong> — si non renseigné, <code>'Paiement de la facture order_id'</code> est rempli par défaut.</p><p>Si vous souhaitez omettre ce paramètre, mettez à la place une simple ou double apostrophe.</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 dans cette fonction.<br>Les paramètres supplémentaires 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 Prodamus REST API</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 une simple/double apostrophe ou <code>None</code> 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 tenge, 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>est obligatoire</strong>, il 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 tenge, 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" %}
S’il y a une erreur dans le bloc lors de la récupération du lien via plusieurs fonctions, **la valeur de l’erreur `error_payment_func` sera enregistrée** dans la variable.

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

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

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

Pour gérer l’abonnement, il est impératif que **`customer_phone`** ou **`customer_email`** l’un des paramètres soit fourni.

Pour désinscrire un utilisateur de l’abonnement, il faut créer un bloc et appeler la fonction suivante :\
[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` — l’URL du formulaire de paiement, obtenue depuis les paramètres du constructeur
* `secret_key` — la clé secrète obtenue depuis les paramètres
* `id_subscription` — l’ID du produit d’abonnement
* `customer_phone` — le téléphone du titulaire de l’abonnement
* `switcher` — gestion de l’abonnement : `0` — arrêter l’abonnement, `1` — réactiver l’abonnement
* `profile_id` — l’ID du profil dans le système Prodamus

**Remarque :**\
Si l’ID du profil est présent, il est **`profile_id`** enregistré dans la variable.\
`profile_id` à la fonction **`customer_phone`** ou **`customer_email`** et peut être utilisé pour arrêter l’abonnement.

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

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

Veuillez noter que la fonction **status** renvoie, vous pouvez le sauvegarder et le traiter comme vous le souhaitez. Lors de l’arrêt 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 – arrêter 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 professionnel) :

**Exemple 1 :** `customer_phone` le paramètre est fourni, `customer_email` omis :

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

**Exemple 2 :** `customer_email` le paramètre est fourni, `customer_phone` omis :

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

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

## Gestion des remises sur l’abonnement

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

```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 deux chiffres après la virgule ; la valeur doit être supérieure à zéro et ne pas dépasser le coût de base de l’abonnement
* `customer_phone` — numéro de téléphone du client, format : `+79999999999` (facultatif, si `customer_email` la variable est présente ; 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` — l’ID du profil dans le système Prodamus

Si la requête est exécutée avec succès, la fonction `'ok'` sera retourné ; en cas d’erreur, la fonction renverra 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 appelée à nouveau 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 récupéré automatiquement à partir de la variable `customer_phone` ; 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₽ pour les 3 prochains paiements** (le numéro de téléphone est fourni avec des guillemets vides, car il est récupéré automatiquement à partir de la variable `customer_phone` ) :

```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 sous forme décimale** (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 d’abonnement**

Cette méthode permet de décaler la date du prochain paiement d’abonnement. La date ne peut être décalée que de la date du prochain paiement actuellement définie **« vers le futur »** afin d’augmenter la durée de participation 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 seul jj.mm.aaaa est fourni, l’heure sera 00:00
* `customer_phone` — facultatif ; si non renseigné, `customer_phone` est récupéré depuis la variable ; si introuvable, 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 de l’échelonnement, etc.) au système Prodamus, ajoutez **`prodamus_`** comme préfixe au nom de la variable.

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 %}

Lors de la configuration de l’intégration et des tunnels de paiement, afin de ne pas prélever d’argent sur votre compte, **vous pouvez utiliser des cartes de test**.

{% hint style="warning" %}
Tout d’abord, passez votre page de paiement **en MODE DÉMO** ⤵\
N’oubliez pas de cliquer sur le bouton « Enregistrer ».
{% endhint %}

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

#### Pour effectuer un paiement de test, vous pouvez utiliser des comptes de 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 %}

Le formulaire a été vérifié

{% hint style="danger" %}
Pour accepter les paiements réels, le formulaire **doit être passé en** mode de fonctionnement. **Autrement dit, le commutateur du mode démo doit être réglé sur** rouge vif
{% 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.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.
