# Prodamus (KZ)

## **Як підключити Prodamus**

Для підключення Prodamus вам потрібні URL-адреса платіжної форми та секретний ключ.

URL-адреса платіжної форми надається після реєстрації, її приклад: `demo.payform.ru`.

Секретний ключ можна взяти в особистому кабінеті, там же потрібно вказати URL-адресу, куди будуть надсилатися сповіщення (notification).

<div data-with-frame="true"><figure><img src="/files/a4b805b99cb6852a6ae6e6e255d1b0e2267f8c6f" alt=""><figcaption><p>Секретний ключ у налаштуваннях платіжної форми в особистому кабінеті платіжної системи «Промамус»</p></figcaption></figure></div>

[**Детальна інструкція про те, як це зробити**](https://help.prodamus.ru/payform.ru-onlain-oplaty/prochee/url-dlya-uvedomlenii-i-sekretnyi-klyuch)

Адреса для сповіщень:\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Цю адресу потрібно вказати в налаштуваннях у двох місцях.

На головній сторінці налаштувань можна обрати режим роботи платіжної форми: демо-режим без оплат або режим приймання платежів.

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

Адресу для сповіщень потрібно вказати в налаштуваннях платіжної системи у двох місцях: **«Налаштування форми»** вкладка — для одноразових (звичайних) платежів і **«Підписки»** вкладка — для платежів за підпискою.

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

**Адреса для сповіщень:**\
<https://chatter.mavibot.ai/prodamus\\_callback/result>

Щоб налаштувати роботу з платежами за підпискою, **«Підписки»** перейдіть у вкладку та вкажіть адресу для сповіщень:

<https://chatter.mavibot.ai/prodamus\\_callback/result>

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

{% hint style="warning" %}
**Увага!** Після введення URL-адреси обов’язково **«Зберегти»** натисніть кнопку.
{% endhint %}

Щоб підключити Prodamus, **потрібно перейти до розділу** «Еквайринг».

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

Після цього достатньо ввести в форму наведені вище дані:

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

{% hint style="warning" %}
**Важливо!** Коли вказуєте URL-адресу платіжної форми, **https\://** не додавайте.
{% endhint %}

На цьому підключення завершено. Тепер розгляньмо, як користуватися цим функціоналом.

## Як створити посилання на оплату

### Кнопка з функцією «Оплатити»

**Посилання на оплату можна створити в кнопці з функцією «Оплатити».**

{% hint style="info" %}
[Про те, як створити таку кнопку, розповідається в цій статті.](/doc/uk/chatbot/builder/knopki/knopka-oplati.md)
{% endhint %}

Тепер розгляньмо всі можливі параметри цієї кнопки.

### Обов’язкові параметри кнопки «Оплатити» для Prodamus

**Щоб створити посилання на оплату, у налаштуваннях кнопки потрібно вказати обов’язкові параметри:**\
«Сума», «Назва товару», а також параметр «Оплачений контент» — якщо у вас немає власної онлайн-каси і ви хочете отримати чек від Prodamus.

Під час переходу на сторінку оформлення замовлення інформація про товар і його ціну показується заздалегідь, а клієнт лише вводить свої контактні дані.

Якщо в налаштуваннях кнопки вказано Email та/або телефон користувача, на сторінці оформлення замовлення відображаються контактні дані платника та інформація про товар і його ціну.

<div data-with-frame="true"><figure><img src="/files/8bfb123fb2c4379b97989aa6b268a626b8a0baed" alt="" width="563"><figcaption><p>Вікно налаштувань кнопки</p></figcaption></figure></div>

**Поле «Текст»** — цей текст буде показано в повідомленні на кнопці з посиланням на оплату.

**Поле «Функція»** — щоб створити кнопку з посиланням на оплату, обираємо функцію «Оплатити».

**Поле «Платіжна система»** — у списку будуть показані платіжні системи, підключені до проєкту.\
Якщо до проєкту не підключено жодної платіжної системи, цей тип кнопки буде недоступний.

**Поле «Назва товару» (обов’язкове)** — потрібно вказати точну назву товару. Наприклад: не «Телефон», а «Смартфон Xiaomi, модель …».\
Примітка: у назві товару не можна використовувати подвійні лапки; приберіть їх або замініть на одинарні.

**Поле «Сума» (обов’язкове)** — вказуємо ціну товару.

**Меню «Додаткова інформація»** — при натисканні на цю кнопку відкриваються додаткові поля для створення посилання:

* Опис замовлення
* Знижка в рублях
* Змінна Email покупця
* Змінна номера телефону покупця
* Час дії посилання
* ID товару для підписки (для автоплатежу)
* Оплачений контент

**Чекбокс «Сповіщення про натискання»** — можна увімкнути, щоб відстежувати перехід за посиланням на оплату. У цьому випадку після натискання кнопки в діалог клієнта в Сейлботі прийде повідомлення про те, що було здійснено перехід за посиланням.

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

На основі цього повідомлення можна налаштувати подальшу логіку роботи бота.\
Багато платіжних систем підтримують хмарні онлайн-каси, які потрібні відповідно до вимог 54-ФЗ.

На сайті обраної платіжної системи прочитайте особливості оформлення чеків, щоб не потрапити в неприємну ситуацію з податковою інспекцією.

Ось як виглядає сторінка оплати, що відкривається при переході за посиланням у кнопці «Оплатити»:

<div data-with-frame="true"><figure><img src="/files/b47560772c2dd7f88fd07516eacd132ee7760d0e" alt="" width="375"><figcaption><p>Сторінка оплати: у кнопці заповнені лише основні параметри</p></figcaption></figure></div>

### Додаткові налаштування для створення посилання на оплату

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

**Поле «Опис замовлення»** — інформація, введена в це поле, відображається на сторінці оплати в **Полі додаткових даних** .

**Поле «Знижка»** — тут можна вказати розмір знижки в рублях або рублях і копійках. Для вказання копійок використовуйте крапку як роздільник: 50.99\
На сторінці оплати в **Полі суми до оплати** буде показано суму з урахуванням знижки, а базова ціна товару буде закреслена.

**Поле «Змінна Email покупця»** (необов’язково, якщо вказано номер телефону) — тут вказується Email користувача (клієнта). Також можна використовувати змінну, у якій збережено Email, наприклад: `#{email}`

**Поле «Змінна номера телефону покупця»** (необов’язково, якщо вказано Email) — тут можна використати змінну з номером телефону покупця у форматі: 79000000000, наприклад: `#{phone}`\
Обов’язково має бути Email та/або телефон.

**Поле «Час дії посилання»** — дату можна `вказати у форматі` дд.мм.рррр гг:хх `(наприклад, 25.01.2021 11:00), або встановити час завершення дії посилання через змінну. Наприклад:`

**#{link\_expired}** Поле «ID товару для підписки» [— для автоплатежу вкажіть значення ID товару. Щоб створити підписку, потрібно створити підписковий товар.\
Детальна інструкція:](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Створення та налаштування підписок у Prodamus

**Поле «Оплачений контент»** (умовно обов’язкове) — ці дані потрібні для фіскалізації платежу через Prodamus, якщо у вас немає власної онлайн-каси. У це поле вказуються опис покупки, її ціна та посилання на контент.\
Наприклад: Курс «Плетіння кіс», ціна 3000 рублів, посилання на сторінку курсу: `https://nbu.su/krasota/master-po-pleteniyu-kos/?yclid=13602995275739430911`

### Кнопка з функцією «Оплатити»

Якщо ви вказали час дії посилання, відбувається таке:\
Коли користувач запитує посилання на оплату протягом терміну його дії (тобто поки час посилання ще не минув) і він у діалозі, оплату буде неможливо здійснити, і йому покажеться таке повідомлення:

<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" %}
Термін дії посилання має бути пізніше поточної дати, інакше клієнт не зможе оплатити за цим посиланням.
{% endhint %}

**2. Користувач запитує посилання, якщо воно зараз неактивне**\
У цьому випадку кнопка просто не буде показана. У змінних клієнта `"error_payment_button"` з’явиться змінна, значення якої буде таким:\
\&#xNAN;**"Помилка: Термін дії посилання має бути пізніше поточної дати"**.

{% hint style="success" %}
Щоб користувач міг коректно оплачувати, рекомендується додатково обробляти таку ситуацію.
{% endhint %}

Створіть такий умовний блок:\
Якщо прийде таке повідомлення:\
`error_payment_button == "Помилка: Термін дії посилання має бути пізніше поточної дати"`

Тоді покажіть такий текст:\
\&#xNAN;**"Вибачте, ви не встигли здійснити оплату вчасно, платіжне посилання стало недійсним"**.

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

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

### Автоматично створювані змінні клієнта при використанні кнопки з функцією «Оплатити»

Коли користувач отримує блок із кнопкою «Оплатити», для клієнта автоматично створюються змінні:

**Службова змінна клієнта `__payments`** — ця змінна зберігає суму та ідентифікатор створеного посилання і потрібна для визначення хуку, що приходить від платіжної системи.

{% hint style="danger" %}
Службова змінна клієнта `__payments`— не можна видаляти або змінювати!
{% endhint %}

**`error_payment_button` змінна клієнта** створюється автоматично, якщо під час створення кнопки сталася помилка.\
У цю змінну записується текст помилки або повідомлення про помилку, що прийшло від платіжної системи.

{% hint style="warning" %}
Значення змінних актуальні при переході до наступного блоку.
{% endhint %}

## Як обробити результат

**Успішна оплата**\
Після успішної оплати в бот **АВТОМАТИЧНО ПРИХОДИТЬ КОЛБЕК** який складається з перших 10 символів секретного ключа платіжної системи, `_success` слова та суми оплати.\
Щоб використовувати в налаштуванні схеми, достатньо просто скопіювати його.

Наприклад: `ovg58keefc_success 44`де:

* `ovg58keefc` — перші 10 символів секретного ключа платіжної системи
* `_success` — результат обробки запиту (успішна оплата)
* `44` — сума оплати

{% hint style="info" %}
Користувач НЕ **БАЧИТЬ колбеки**від платіжної системи. Вони відображаються лише у вкладці **«Клієнти»** і видимі оператору.
{% endhint %}

**Приклад використання:**\
**Крок 1.** У блок «Кнопка з оплатою» додаємо кнопки з функцією «Оплатити».\
**Крок 2.** Із цього блоку в полі **Умова зв’язку** вказуємо колбек, який веде до блоку «Успішна оплата».\
Так само, якщо у блоці «Початкова умова» вказати колбек успішної оплати в умові, робота здійснюватиметься аналогічно.

{% hint style="warning" %}
**Важливо:** Обрати «Точна відповідність» або «За наявністю ключових слів».
{% endhint %}

❗️Якщо ви вирішите перевіряти оплату за чітко заданою стрілкою в умові, ретельно продумайте логіку вашої схеми. Якщо клієнт піде далі за блок, що відповідає умові з колбеком, переходу до блоку не відбудеться. Такий спосіб перевірки краще використовувати лише тоді, коли клієнт не змінював своє місце у воронці.

У схемах, де клієнт переміщується між блоками, краще використовувати варіант вказання колбека **«Початкова умова»** у блоці.<br>

<div data-with-frame="true"><figure><img src="/files/ddfb8f935b293b4786a20dca2cb9a21fc9e261de" alt=""><figcaption><p>Колбек про успішну оплату в полі умови блоку.</p></figcaption></figure></div>

### Успішна оплата для товарів з автопідпискою

Після успішної оплати в бот **АВТОМАТИЧНО ПРИХОДИТЬ КОЛБЕК** який складається з перших 10 символів секретного ключа платіжної системи, `_success` слова та ID товару для підписки.

Наприклад: `214009eefc_success 618117`де:

* `009eefc` — перші 10 символів секретного ключа платіжної системи
* `_success` — результат обробки запиту (успішна оплата)
* `618117` — ID товару для підписки

<div data-with-frame="true"><figure><img src="/files/0c4a401154eb77ad9a587a0ed9c858c679a7b5dd" alt=""><figcaption><p>Приклад колбека від Prodamus для товарів з автопідпискою</p></figcaption></figure></div>

**Помилка платежу**\
У разі помилки під час здійснення оплати в бот **АВТОМАТИЧНО ПРИХОДИТЬ КОЛБЕК** який складається з перших 10 символів секретного ключа платіжної системи, `_fail` слова та суми оплати.

Наприклад: `ovg58keefc_fail 44`де:

* `ovg58keefc` — перші 10 символів секретного ключа платіжної системи
* `_fail` — результат обробки запиту (оплату не виконано або сталася помилка)
* `44` — сума оплати

{% hint style="warning" %}
Це залежить від платіжної системи. Не всі платіжні системи надсилають колбек про помилку оплати.
{% endhint %}

Якщо сума, вказана в налаштуваннях кнопки, відрізняється від суми, яку сплатив клієнт, у бот **АВТОМАТИЧНО ПРИХОДИТЬ КОЛБЕК** приходить. Воно складається з перших 10 символів секретного ключа платіжної системи, `_different_amounts` слова та унікального ID платежу.

Наприклад: `ovg58keefc_different_amounts 123456`де:

* `ovg58keefc` — перші 10 символів секретного ключа платіжної системи
* `_different_amounts` — результат обробки запиту (сума оплати відрізняється від суми в посиланні)
* `123456` — унікальний ID платежу

## У калькуляторі `get_prodamus_payment_url` функція

Для створення посилання на оплату **у блоці Калькулятора `get_prodamus_payment_url` функцію** можна використовувати.\
**У полі Калькулятор** присвоюємо змінній значення цієї функції: `get_prodamus_payment_url`.&#x20;

{% hint style="info" %}
Назву змінної ви обираєте самі. На скріншотах наведені приклади назв змінних.
{% endhint %}

У цю змінну буде записане посилання на оплату. Змінну можна показати в повідомленні як посилання або розмістити в кнопці з текстом «Оплатити».

**Приклад посилання на оплату:** [https://payform.kz/7p3JR8/](https://payform.ru/7p3JR8/)

{% tabs %}
{% tab title="Калькулятор" %}
Приклад 1:

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

{% tab title="Опис параметрів" %}
&#x20;`your_variable =`` `**`get_prodamus_payment_url(amount, product_name, expired, customer_phone, customer_email, discount, description, extra_params, products_for_receipt)`**

Параметри функції:

<table><thead><tr><th width="253">Параметр</th><th>Значення параметра</th></tr></thead><tbody><tr><td><strong><code>amount</code></strong></td><td><strong>Сума оплати</strong> — може бути передана як ціле число або число з крапкою. Наприклад: <code>25</code> або <code>52.5</code>. (обов’язковий параметр)</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Назва товару</strong> (обов’язковий параметр)</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Час дії платіжного посилання</strong> — <code>дд.мм.рррр</code> у форматі (наприклад, 25.01.2021).<br>Також у <strong>Калькулятор</strong> полі можна вказати так:<br><code>expired = current_date + 2</code> (посилання буде дійсним 2 дні до 00:00).</p><p>Також можна вказати точний час: <code>вказати у форматі</code> (наприклад, 25.01.2021 12:23).</p><p>Можна використовувати й стандартні змінні, наприклад, встановити дійсність посилання на 30 хвилин:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Якщо хочете пропустити цей параметр, замість нього можна вказати одинарні лапки, подвійні лапки або <code>None</code> значення.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><strong>Номер телефону покупця</strong> — необов’язково, якщо задано <code>customer_email</code> параметр.<br>Якщо хочете пропустити цей параметр, замість нього можна вказати одинарні або подвійні лапки.</td></tr><tr><td><strong><code>customer_email</code></strong></td><td><strong>Email-адреса покупця</strong> — необов’язково, якщо задано <code>customer_phone</code> параметр.<br>Якщо хочете пропустити цей параметр, замість нього можна вказати одинарні або подвійні лапки.</td></tr><tr><td><strong><code>discount</code></strong></td><td><strong>Розмір знижки</strong> — параметр можна передати як ціле число або число з крапкою: <code>25</code> або <code>63.5</code>.<br>Якщо хочете пропустити цей параметр, замість нього можна вказати одинарні або подвійні лапки.</td></tr><tr><td><strong><code>description</code></strong></td><td><strong>Опис товару</strong> (якщо не вказано, автоматично <code>'Оплата рахунку order_id'</code> заповнюється).<br>Якщо хочете пропустити цей параметр, замість нього можна вказати одинарні або подвійні лапки.</td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Додаткові параметри</strong>, параметри, яких немає в цій функції.<br>Доступні додаткові параметри можна переглянути в документації з роботи з API платіжної системи: <a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Prodamus REST API</a></p><p>Наприклад:</p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3", "payment_method": "vsegdada_installment_0_0_6"}
</code></pre><p>Якщо хочете пропустити цей параметр, замість нього можна вказати одинарні/подвійні лапки або <code>None</code> значення.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>Рядок від 50 до 4000 символів</strong> у форматі <code>"опис замовлення - ціна - посилання на ресурс, що купується"</code>.<br>Наприклад:<br><code>“Курс «Ловля ляща», ціна 4999 рублів, посилання на сторінку курсу: https://www.lovilescha.ru/courses/poimai_kilogram/"</code></p><p>Цей параметр обов’язковий, якщо у вас немає власної онлайн-каси, і потрібен для фіскалізації платежу через Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Приклад" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Курс «Ловля ляща», ціна 4999 гривень, посилання на сторінку курсу: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_url = get\_prodamus\_payment\_url( 4999, 'Курс «Ловля ляща»', '27.03.2023 17:00', '79167777771', '<mail@mail.com>', 20, 'Найкращий курс на ринку', extra\_params, products\_for\_receipt

У цьому прикладі:

* `extra_params` — додаткові параметри (наприклад, ліміт платежів).
* `products_for_receipt` — інформація про товар, що відображається в чеку.
* `get_prodamus_payment_url` створюється посилання на оплату за допомогою функції.
  {% endtab %}
  {% endtabs %}

{% hint style="warning" %}
Якщо в блоці є кілька функцій отримання посилання і сталася помилка, значення помилки **`error_payment_func`** записується в змінну.

Помилка записується за останньою функцією в Калькуляторі.
{% endhint %}

## `payment_sum` змінна та створення посилання через додаткові параметри

{% hint style="info" %}
**Увага:** `payment_sum` значення змінної береться з останньої змінної, тобто після необов’язкових змінних: `payment_description`, `product_name` тощо.
{% endhint %}

Для створення посилання на оплату **У полі Калькулятор `payment_sum` достатньо встановити значення змінної**.\
Після цього автоматично **`prodamus_pay_url`** змінна з’являється.

**Приклад посилання на оплату:** `https://payform.ru/7p3JR8/`

Цю змінну можна показати в повідомленні як посилання або розмістити в кнопці з текстом «Оплатити».

`payment_sum` перед оголошенням змінної можна вказати такі необов’язкові змінні:

| Параметри функції          | Опис параметра                                                                                                                                                                                                                                                                                                                                                                                                             |
| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **product\_name**          | **Назва товару** (якщо не вказано, автоматично заповнюється "Оплата рахунку order\_id") — нижче на скріншоті показано, де саме відображається.                                                                                                                                                                                                                                                                             |
| **payment\_description**   | **Опис товару** (якщо не вказано, автоматично `'Оплата рахунку order_id'` заповнюється) — нижче на скріншоті показано, де саме відображається.                                                                                                                                                                                                                                                                             |
| **discount\_value**        | **Розмір знижки** (наприклад, `discount_value = 25` або `discount_value = 50.25`)                                                                                                                                                                                                                                                                                                                                          |
| **customer\_phone**        | **Номер телефону покупця** — необов’язково, якщо задано інший параметр.                                                                                                                                                                                                                                                                                                                                                    |
| **customer\_email**        | Email-адреса покупця                                                                                                                                                                                                                                                                                                                                                                                                       |
| **link\_expired**          | <p><strong>Час дії платіжного посилання</strong> — <code>дд.мм.рррр</code> у форматі (наприклад, 25.01.2021).<br>Також у <strong>Калькулятор</strong> полі можна вказати так:<br><code>link\_expired = current\_date + 2</code> (посилання буде дійсним 2 дні до 00:00).</p>                                                                                                                                               |
| **link\_expired**          | <p>Також можна вказати точний час, формат: <code>вказати у форматі</code> (наприклад, <code>25.01.2021 12:23</code>).<br>Також можна використовувати стандартні змінні, наприклад, встановити дійсність посилання на 30 хвилин:<br>time = current\_time + 30 link\_expired = "#{current\_date} #{time}"</p>                                                                                                                |
| **currency**               | <p><strong>Валюта платежу</strong>, за замовчуванням <code>"rub"</code>.<br>Повний список аргументів:</p><ul><li><code>rub</code></li><li><code>usd</code></li><li><code>eur</code></li><li><code>kzt</code></li></ul><p>Цей параметр слід вказувати малими літерами.</p>                                                                                                                                                  |
| **payment\_title**         | <p><strong>Заголовок платежу</strong> (до 127 символів). Якщо не вказано, автоматично заповнюється таким текстом:<br>“<strong>Оплата рахунку payment\_id</strong>” (<code>payment\_id</code> — ідентифікатор замовлення в MaviBot).</p>                                                                                                                                                                                    |
| **payment\_description**   | **Короткий опис платежу** (до 127 символів)                                                                                                                                                                                                                                                                                                                                                                                |
| **locale**                 | <p><strong>Мова сторінки оплати</strong> — <code>en-US</code>, <code>fr-XC</code> тощо. Значення за замовчуванням — <code>ru-RU</code>.<br>Повний список можна переглянути за цим посиланням</p>                                                                                                                                                                                                                           |
| **products\_for\_receipt** | <p><strong>Рядок від 50 до 4000 символів</strong> у форматі <code>"опис замовлення - ціна - посилання на ресурс, що купується"</code>.<br>Наприклад:<br><code>“Курс «Ловля ляща», ціна 4999 гривень, посилання на сторінку курсу: <https://www.lovilescha.ru/courses/poimai_kilogram/>"</code></p><p>Цей обов’язковий параметр потрібен для фіскалізації платежу через Prodamus, якщо у вас немає власної онлайн-каси.</p> |
| **payment\_sum**           | (обов’язково) сума платежу                                                                                                                                                                                                                                                                                                                                                                                                 |

<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` і `link_expired` змінні також актуальні для підписок.
{% endhint %}

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

**Приклад реалізації.**\
У першому блоці встановлюємо суму платежу:

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

На наступному кроці в потрібному місці виводимо **`prodamus_pay_url`** посилання:

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

**`prodamus_available_payment_methods`** змінна **`payment_sum`** визначається перед оголошенням.\
Можливі значення:

<table><thead><tr><th width="323"></th><th></th></tr></thead><tbody><tr><td><strong>AC</strong></td><td>Оплата карткою, випущеною в РФ</td></tr><tr><td><strong>ACkz</strong> </td><td>Оплата карткою Казахстану</td></tr><tr><td><strong>ACf</strong></td><td>Оплата картками країн СНД, крім РФ</td></tr><tr><td><strong>ACEURNMBX</strong></td><td>Оплата карткою EUR для всіх країн, крім Росії та Білорусі</td></tr><tr><td><strong>SBP</strong></td><td>Швидкий платіж без введення даних картки. Для російських карток</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>Платіжний термінал</td></tr><tr><td><strong>sbol</strong></td><td>Сбербанк Онлайн </td></tr><tr><td><strong>invoice</strong> </td><td>Оплата за рахунком</td></tr><tr><td><strong>installment</strong> </td><td>Розстрочка через Prodamus</td></tr><tr><td><strong>installment_5_21</strong></td><td>Розстрочка на 3 місяці через Prodamus</td></tr><tr><td><strong>installment_6_28</strong></td><td>Розстрочка на 6 місяців через Prodamus</td></tr><tr><td><strong>installment_10_28</strong></td><td>Розстрочка на 10 місяців через Prodamus</td></tr><tr><td><strong>installment_12_28</strong> </td><td>Розстрочка на 12 місяців через Prodamus</td></tr><tr><td><strong>installment_0_0_3</strong></td><td>Розстрочка на 3 місяці через Tinkoff</td></tr><tr><td><strong>installment_0_0_4</strong> </td><td>Розстрочка на 4 місяці через Tinkoff</td></tr><tr><td><strong>installment_0_0_6</strong></td><td>Розстрочка на 6 місяців через Tinkoff</td></tr><tr><td><strong>installment_0_0_10</strong></td><td>Розстрочка на 10 місяців через Tinkoff</td></tr><tr><td><strong>installment_0_0_12</strong></td><td>Розстрочка на 12 місяців через Tinkoff</td></tr><tr><td><strong>installment_0_0_24</strong> </td><td>Розстрочка на 24 місяці через Tinkoff</td></tr><tr><td><strong>installment_0_0_36</strong></td><td>Розстрочка на 36 місяців через Tinkoff</td></tr><tr><td><strong>credit</strong> </td><td>Кредит через Tinkoff</td></tr><tr><td><strong>vsegdada_installment_0_0_4</strong></td><td><strong>Розстрочка на 4 місяці через «ВсегдаДа»</strong> (не працює з available_payment_methods)</td></tr><tr><td>vs<strong>egdada_installment_0_0_6</strong></td><td><strong>Розстрочка на 6 місяців через «ВсегдаДа»</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_10</strong></td><td><strong>Розстрочка на 10 місяців через «ВсегдаДа»</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_12</strong></td><td><strong>Розстрочка на 12 місяців через «ВсегдаДа»</strong> </td></tr><tr><td>vs<strong>egdada_installment_0_0_24</strong></td><td><strong>Розстрочка на 24 місяці через «ВсегдаДа»</strong> </td></tr><tr><td><strong>vsegdada_installment_0_0_36</strong> </td><td><strong>Розстрочка на 36 місяців через «ВсегдаДа»</strong> </td></tr><tr><td><strong>sbrf_installment_0_0_6</strong></td><td>Розстрочка на 6 місяців через Сбербанк</td></tr><tr><td><strong>sbrf_installment_0_0_10</strong></td><td>Розстрочка на 10 місяців через Сбербанк</td></tr><tr><td><strong>sbrf_installment_0_0_12</strong></td><td>Розстрочка на 12 місяців через Сбербанк</td></tr><tr><td><strong>sbrf_installment_0_0_24</strong></td><td>Розстрочка на 24 місяці через Сбербанк</td></tr><tr><td><strong>sbrf_installment_0_0_36</strong> </td><td>Розстрочка на 36 місяців через Сбербанк</td></tr><tr><td><strong>otp_installment_0_0_6</strong></td><td>Розстрочка на 6 місяців через «OTP Банк»</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Розстрочка на 10 місяців через «OTP Банк»</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Розстрочка на 12 місяців через «OTP Банк»</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Розстрочка на 24 місяці через «OTP Банк»</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Розстрочка на 36 місяців через «OTP Банк»</td></tr><tr><td><strong>mts_installment_0_0_6</strong></td><td>Розстрочка на 6 місяців через «МТС Банк»</td></tr><tr><td><strong>mts_installment_0_0_10</strong> </td><td>Розстрочка на 10 місяців через «МТС Банк»</td></tr><tr><td><strong>mts_installment_0_0_12</strong> </td><td>Розстрочка на 12 місяців через «МТС Банк»</td></tr><tr><td><strong>mts_installment_0_0_24</strong></td><td>Розстрочка на 24 місяці через «МТС Банк»</td></tr><tr><td> <strong>mts_installment_0_0_36</strong> </td><td>Розстрочка на 36 місяців через «МТС Банк»</td></tr><tr><td><strong>monetaworld</strong></td><td>Картки світових банків, крім Росії</td></tr><tr><td><strong>sbrf_bnpl</strong></td><td>Розстрочка через Сбер</td></tr></tbody></table>

Кілька значень **через вертикальну риску** дозволено розділяти.\
Наприклад:

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

`prodamus_currency` — це ще один додатковий параметр, який дає змогу вказувати суму в певній валюті.

Можливі валюти:

* `kzt` — для тенге
* `eur` — для євро
* `usd` — для долара

Таким чином, сума, зазначена в посиланні, буде в обраній валюті.

**Колбек `payment_callback` під час отримання** `currency` і `currency_sum` потрібно звернути увагу на параметри, у яких вказані валюта та сума.

{% hint style="warning" %}
Якщо не вказано, відбудеться перехід на сторінку без способів оплати.\
Додати способи оплати можна через підтримку. Додані способи можна перевірити в налаштуваннях сторінки або за посиланням на оплату.
{% endhint %}

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

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

### Як обробити результат

**Успішна оплата**

**Важливо:** після успішної або неуспішної оплати в бот приходять колбеки, за допомогою яких можна визначити, чи оплата пройшла успішно.

Колбеки в системі виглядають як повідомлення від користувача, але користувач не може їх надіслати. Вони мають вигляд поєднання секретного ключа та статусу. Наприклад:

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_success
```

або

```
453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66_fail
```

Після успішної оплати **prodamus\_payment\_completed** змінна `True` приймає значення.

**Примітка:** Колбеки приходять із невеликою затримкою, тому після надсилання користувачеві посилання краще надіслати повідомлення:

> “Після оплати зачекайте, поки платіж успішно завершиться.”

***

**Структура колбеку**

Для посилань, створених через кнопку Оплати або функцію в Калькуляторі, після оплати в бот автоматично приходить колбек. Його склад:

```
<секретний_ключ>_success <сума_платежу>
```

Наприклад:

```
ovg58keefc_success
```

* `ovg58keefc` — повний секретний ключ платіжної системи
* `_success` — результат обробки запиту (успішна оплата)

***

**Практичне застосування**

Успішну оплату можна обробити через умовний блок і показати користувачеві відповідне повідомлення.

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

{% hint style="danger" %}
Тип порівняння має бути "Full match" / "Повний збіг"

Щоб здійснити повторну оплату, обов’язково потрібно **payment\_sum** обнулити змінну та видалити раніше створене посилання. Лише після цього **payment\_sum** можна присвоїти змінній нове значення й отримати оновлене посилання.
{% endhint %}

#### Деактивація/реактивація підписки

Також у системі Prodamus є повідомлення про те, що підписку активовано або призупинено:

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

**«Підписку вимкнув користувач»** — якщо підписку було зупинено вручну (наприклад, у разі відмови від підписки).\
Це повідомлення може надійти до завершення поточного оплаченого періоду. Дії залежать від вашого рішення: ігнорувати, взяти під контроль або спробувати повернути користувача.

**«Підписку повторно активував користувач»** — підписку відновлено.\
Це повідомлення може надійти, якщо користувач відновив підписку до завершення поточного оплаченого періоду. Дії залежать від вашого рішення: ігнорувати або виключити з моніторингу.

**«Деактивація підписки»** — якщо підписку було зупинено після кількох невдалих оплат.

### Збереження значень із колбеку

Після отримання повідомлення про успішну оплату **payment\_callback** у змінну записується колбек від Prodamus, у якому є всі дані про платіж. Ці дані можна зберегти та використовувати у потрібному вам вигляді.

Приклад колбеку:

```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": "Товар",
  "payment_type": "Пластикова картка Visa, MasterCard, МІР",
  "commission": "3.5",
  "commission_sum": "0.51",
  "attempt": "1",
  "discount_value": "10.5",
  "products[0][name]": "Доступ до навчальних матеріалів",
  "products[0][price]": "14.50",
  "products[0][quantity]": "1",
  "products[0][sum]": "14.50",
  "payment_status": "success",
  "payment_status_description": "Успішна оплата",
  "payment_init": "manual"
}
```

Під час створення посилання **product\_name** і **payment\_description** можна вказати змінні. Тоді при отриманні колбеку їх можна взяти так:

```python
product = get(payment_callback,'products[0][name]')
description = get(payment_callback,'customer_extra')
```

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

{% hint style="info" %}
Увага: **payment\_sum** у змінну записується останнє значення, яке **розташовується після** необов’язкових змінних: **payment\_description**, **product\_name**.
{% endhint %}

Суму можна отримати так:

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

### **Доступні колбеки**

Окрім основних колбеків успішної оплати, у чат також приходять такі повідомлення, невидимі для користувача:

<details>

<summary>колбеки</summary>

* Підписник деактивував підписку ([детальніше тут](#deaktivaciya-reaktivaciya-podpiski))
* Підписник реактивував підписку ([детальніше тут](#deaktivaciya-reaktivaciya-podpiski))
* Підписку завершено
* Неуспішна оплата - примітка з поясненням (на скриншоті вище)
* Сповіщення про майбутнє списання - дата та час майбутнього списання
* Заявка на розстрочку зі статусом

</details>

<details>

<summary><strong>Приклади колбеків у діалозі з клієнтом</strong></summary>

* **Підписник деактивував підписку**
* **Підписник реактивував підписку**
* **Підписку завершено**
* **Неуспішна оплата - Недостатньо коштів.**
* **Неуспішна оплата - Термін дії картки закінчився.**
* **Неуспішна оплата - Перевищено ліміт по картці.**
* **Неуспішна оплата - Картку втрачено**
* **Неуспішна оплата - Системна помилка**&#x20;
* **Неуспішна оплата - Операцію відхилено. Зверніться до банку, який випустив картку.**&#x20;
* **Неуспішна оплата - Відмова в проведенні операції банком-емітентом.**
* **Неуспішна оплата - Відмова в проведенні операції банком.**&#x20;
* **Сповіщення про майбутнє списання - дд.мм.рррр гг:хх**
* **Заявку на розстрочку схвалено**
* **Заявку на розстрочку скасовано**
* **Заявку на розстрочку відхилено**

</details>

За бажанням можна налаштувати надсилання будь-якого повідомлення користувачеві. Наприклад, повідомлення у разі невдачі автоматичного платежу.

Для повідомлення про невдалий платіж за конкретною причиною можна налаштувати блоки відповіді так:

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

Щоб надсилати повідомлення про всі невдалі платежі, незалежно від причини, можна налаштувати так:

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

У всіх колбеках, якщо в тексті **«Платіж не вдався»** є ці слова, користувачеві надсилається повідомлення з текстом, який ви вкажете.

## **Як оплатити за підпискою**

### **Як створити підписку**

Щоб створити підписку, спочатку потрібно **створити підписний товар** .\
Повна інструкція: [Як створити та налаштувати підписку](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)

Після цього копіюємо **ID** підписного товару. Наприклад, нижче показано, звідки його взяти:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Створення підписного товару"></div>

Щоб створити посилання для оплати підписки, **prodamus\_subscription** у змінну потрібно **ID** встановити підписний товар. Після цього автоматично **prodamus\_pay\_url** змінна з’являється.

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

Переклад українською:

`prodamus_pay_url` змінну можна вивести на екран як посилання або розмістити на кнопці з текстом «Оплатити». Приклад посилання: <https://payform.kz/7p3JR8/>

Обробка результату виконується так само, як і для разової оплати (як вище прочитали).

Після успішної підписки користувачеві додається **customer\_phone** змінна, введена під час оплати. Номер телефону потрібен для керування підпискою.

Якщо **customer\_email** не вказано, для керування підпискою **customer\_phone** обов’язково.

### **`get_prodamus_subscription_url` як створити посилання на підписку за допомогою функції**

Розгляньмо інший спосіб створення посилання для оплати товару за підпискою.

1. У кабінеті Продамус створюється підписний товар.\
   Повну інструкцію можна переглянути за посиланням:\
   [Як створити та налаштувати підписку](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)
2. Після цього копіюємо **ID** підписного товару. Наприклад, нижче показано, звідки його взяти:

<div data-with-frame="true"><img src="https://lh5.googleusercontent.com/YuaI5KhrMPHNozN0JNOE9kD_Jcw7a8LE6GigaM0vrVtmsDBvlHvK8GCX5IcNvaJuSQE8iWWYl0KCgR5JpYpcp9Sa2531RGDYWVLjhE72ipScrpodUWeb4KDrECRbBhz4kO-3lMvs" alt="Створення підписного товару"></div>

Для отримання посилання для оплати товару за підпискою в Калькуляторі вказуємо функцію&#x20;

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

{% tabs %}
{% tab title="Калькулятор" %}
**Приклад 1:** Посилання для оплати товару за підпискою

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

{% tab title="Опис параметра" %}
`link = get_prodamus_subscription_url`(subscription\_id, product\_name, expired, customer\_phone, customer\_email, discount, description, extra\_params, products\_for\_receipt)

Параметри функції:

<table><thead><tr><th width="253">Параметр</th><th>Значення параметра</th></tr></thead><tbody><tr><td><strong><code>subscription_id</code></strong></td><td><strong>ID підписного продукту</strong> — можна скопіювати з кабінету Prodamus (обов’язковий параметр).</td></tr><tr><td><strong><code>product_name</code></strong></td><td><strong>Назва товару</strong> (обов’язковий параметр).</td></tr><tr><td><strong><code>expired</code></strong></td><td><p><strong>Час дії платіжного посилання</strong> — у форматі дд.мм.рррр (наприклад, 25.01.2021).</p><p>Також можна вказати у полі «Калькулятор»:</p><pre class="language-python"><code class="lang-python">expired = current_date + 2  # посилання буде дійсне 2 дні, до 00:00
</code></pre><p><code>expired</code> параметр можна також вказати з точним часом, формат: дд.мм.рррр гг:хх (наприклад, 25.01.2021 12:23).</p><p>Можна також використовувати стандартні змінні, наприклад, встановити термін дії посилання на 30 хвилин:</p><pre class="language-python"><code class="lang-python">time = current_time + 30
expired = "#{current_date} #{time}"
</code></pre><p>Якщо ви хочете пропустити цей параметр, замість нього вкажіть одинарні або подвійні лапки, або <code>None</code> значення.</p></td></tr><tr><td><strong><code>customer_phone</code></strong></td><td><p><strong>Номер телефону платника</strong> — необов’язково, якщо задано <code>customer_email</code> параметр.</p><p>Якщо ви хочете пропустити цей параметр, замість нього вкажіть одинарні або подвійні лапки.</p></td></tr><tr><td><strong><code>customer_email</code></strong></td><td><p><strong>Email платника</strong> — необов’язково, якщо задано <code>customer_phone</code> параметр.</p><p>Якщо ви хочете пропустити цей параметр, замість нього вкажіть одинарні або подвійні лапки.</p></td></tr><tr><td><strong><code>discount</code></strong></td><td><p><strong>Розмір знижки</strong> — параметр можна вказати як ціле або десяткове число: 25 або 63.5.</p><p>Якщо ви хочете пропустити цей параметр, замість нього вкажіть одинарні або подвійні лапки.</p></td></tr><tr><td><strong><code>description</code></strong></td><td><p><strong>Опис товару</strong> — якщо не вказано, за замовчуванням <code>'Оплата рахунку order_id'</code> заповнюється.</p><p>Якщо ви хочете пропустити цей параметр, замість нього вкажіть одинарні або подвійні лапки.</p></td></tr><tr><td><strong><code>extra_params</code></strong></td><td><p><strong>Додаткові параметри</strong>, це параметри, яких немає в цій функції.<br>Можливі додаткові параметри можна переглянути в документації API платіжної системи:<br><a href="https://help.prodamus.ru/payform/integracii/rest-api/instrukcii-dlya-samostoyatelnaya-integracii-servisov">Інструкція Prodamus REST API</a></p><p><strong>Приклад:</strong></p><pre class="language-python"><code class="lang-python">extra_params = {"payments_limit": "3"}
</code></pre><p>Якщо ви хочете пропустити цей параметр, замість нього вкажіть одинарні/подвійні лапки або <code>None</code> значення.</p></td></tr><tr><td><strong><code>products_for_receipt</code></strong> </td><td><p><strong>рядок із 50–4000 символів</strong>, формат: <code>"опис замовлення - ціна - посилання на ресурс, що купується"</code></p><p>Приклад:<br>Курс «Лящоловний курс», ціна 4999 тенге, посилання на сторінку курсу: <a href="https://www.lovilescha.ru/courses/poimai_kilogram/">https://www.lovilescha.ru/courses/poimai_kilogram/</a>.</p><p>Цей параметр <strong>обов’язковий</strong>, якщо у вас немає власної онлайн-каси, і потрібен для фіскалізації платежів через Prodamus.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Приклад коду для копіювання" %}
extra\_params = {"payments\_limit": "3"}&#x20;

products\_for\_receipt = "Курс ‘Лящоловний курс’, щомісячна підписка 2000 тенге, посилання на сторінку курсу: <https://www.lovilescha.ru/courses/poimai\\_kilogram/"&#x20>;

link\_prodamus\_sub = get\_prodamus\_subscription\_url(618988, 'Курс ‘Лящоловний курс’', '27.03.2023 17:02', '79167777771', '<mail@mail.com>', 20, 'Найкращий курс на ринку', extra\_params, products\_for\_receipt)
{% endtab %}
{% endtabs %}

{% hint style="warning" %}
Якщо в блоці під час отримання посилання через кілька функцій сталася помилка, **значення помилки `error_payment_func` у змінну** записується.

Помилка записується за останньою функцією в Калькуляторі.
{% endhint %}

### **Як керувати статусом підписки**

Цей метод призначений лише для реальних підписок, у деморежимі прив’язки картки немає.

Для керування підпискою обов’язково **`customer_phone`** або **`customer_email`** має бути переданий один із параметрів.

Щоб відписати користувача від підписки, потрібно створити блок і викликати таку функцію:\
[delete\_subscription\_prodamus](https://store.salebot.pro/function/delete_subscription_prodamus)

**Приклад параметрів:**

```json
{
  "customer_phone": "#{customer_phone}",
  "id_subscription":"#{prodamus_subscription}",
  "url":"https://demo.payform.ru/",
  "secret_key":"453e8fba8b7cef9ce58dc6e18e25b39ad5a05748175a3f205f2b084acbfc3b66",
  "switcher":"0",
  "profile_id":"12345"
}
```

* `url` — URL платіжної форми, взятий із налаштувань у конструкторі
* `secret_key` — секретний ключ, взятий із налаштувань
* `id_subscription` — ID підписного продукту
* `customer_phone` — телефон власника підписки
* `switcher` — керування підпискою: `0` — зупинити підписку, `1` — повторно активувати підписку
* `profile_id` — ID профілю в системі Prodamus

**Примітка:**\
Якщо ID профілю передається, він **`profile_id`** зберігається в змінну.\
`profile_id` функції **`customer_phone`** або **`customer_email`** замість нього й можна зупинити підписку.

**Приклад:** налаштування блоків підписки

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

Зверніть увагу, що функція **status** повертає, його можна зберегти та обробити на власний розсуд. Під час успішної зупинки або повторної активації підписки **status = ok** буде.

### Функція для керування підпискою

prodamus\_subscription\_switch\_status(subscription\_id, switcher, customer\_phone, customer\_email, profile\_id) Параметри:

subscription\_id – ID підписного продукту

switcher – керування підпискою: 0 – зупинити підписку, 1 – повторно активувати підписку

customer\_phone – телефон власника підписки; необов’язковий, якщо вказано customer\_email

customer\_email – email власника підписки; необов’язковий, якщо вказано customer\_phone

profile\_id – ID профілю в системі Prodamus

<div data-with-frame="true"><figure><img src="/files/6cffdb5815e8a491b43c01dd789c2532d610f828" alt=""><figcaption><p>Приклад використання функції prodamus_subscription_switch_status</p></figcaption></figure></div>

Переклад українською:

**Приклад 1:** `customer_phone` параметр зазначено, `customer_email` пропущено:

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

**Приклад 2:** `customer_email` параметр зазначено, `customer_phone` пропущено:

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

{% hint style="success" %}
Функція, якщо всі операції успішно завершено, **`ok`** повертає або, якщо сталася помилка, повертає її опис.
{% endhint %}

## Керування знижками в підписці

Ця функція встановлює розмір знижки на наступні платежі за підпискою. Знижка **обмежену або необмежену** кількість платежів.

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

Параметри:

* `subscription_id` — ID підписки
* `discount` — десяткове число з точністю до двох знаків після крапки; значення має бути більшим за нуль і не перевищувати базову вартість підписки
* `customer_phone` — номер телефону клієнта, формат: `+79999999999` (необов’язково, якщо `customer_email` є змінна; вона з’являється після першого платежу)
* `num` — кількість платежів, для яких застосовується знижка (необов’язково; якщо не вказано, знижка застосовується до всіх платежів)
* `profile_id` — ID профілю в системі Prodamus

Якщо запит успішно виконано, функція `'ok'` повертає; якщо сталася помилка, функція повертає її опис.

{% hint style="warning" %}
**Розмір знижки та інтервал перезаписуються лише за повторного виклику функції з новими значеннями!**
{% endhint %}

**Приклади:**

**1. Дати знижку 1₽ на всі наступні автоплатежі** (номер телефону не вказується, оскільки він автоматично `customer_phone` береться зі змінної; сума знижки за замовчуванням застосовується до всього строку підписки):

```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. Приклад знижки 2₽ на наступні 3 платежі** (номер телефону передано порожніми лапками, оскільки він автоматично `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. Приклад вказання знижки десятковим дробом** (роздільник — крапка, значення вказуються без лапок), номер телефону можна передати через змінну.

<div data-with-frame="true"><figure><img src="/files/6fd993a7652588b3f90a2c5c16348e661be23d2e" 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>

## **Як встановити дату наступного платежу за підпискою**

За допомогою цього способу можна перенести дату наступного платежу за підпискою. Дату можна переносити лише з поточної встановленої дати наступного платежу **«у майбутнє»** таким чином збільшуючи термін участі в клубі.

Наприклад, це можна використати як бонус для підписників.

Для цього потрібно скористатися такою функцією:

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

Параметри:

* `subscription_id` — ідентифікатор підписки
* `date` — дата у форматі дд.мм.рррр гг:хх або дд.мм.рррр; якщо вказано лише дд.мм.рррр, час буде 00:00
* `customer_phone` — необов’язково; якщо не вказано, `customer_phone` береться зі змінної; якщо не знайдено, функція не працюватиме
* `profile_id` — ID профілю в системі Prodamus

### Як передавати параметри в Prodamus

Щоб передати потрібні параметри (наприклад, дату початку підписки, вимкнення розстрочки тощо) в систему Prodamus, додайте до назви змінної **`prodamus_`** префікс.

Після цього, коли ви створюватимете платіжне посилання, параметри з цієї змінної автоматично передаватимуться до платіжної системи.

## Як протестувати платіж

{% hint style="info" %}
Тестуємо лише платіж!
{% endhint %}

Під час налаштування інтеграції та платіжних воронок, щоб з вашого рахунку не списувалися кошти **можна використовувати тестові картки**.

{% hint style="warning" %}
Спочатку переведіть вашу платіжну сторінку **у ДЕМО-режим** ⤵\
Не забудьте натиснути кнопку «Зберегти».
{% endhint %}

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

#### Для виконання тестового платежу можна використовувати тестові рахунки.

**Тестові картки Сбербанку:**

**МІР**\
Номер картки: 2202 2050 0001 2424\
Термін дії: 05/35\
Код перевірки на звороті (CVV): 669

**MasterCard**\
Номер картки: 5469 9801 0004 8525\
Термін дії: 05/26\
Код перевірки на звороті (CVV): 041\
Код перевірки 3-D Secure: 111111

**Visa**\
Номер картки: 4006 8009 0096 2514\
Термін дії: 05/26\
Код перевірки на звороті (CVV): 941\
Код перевірки 3-D Secure: 111111

{% hint style="success" %}
❗️Під час оплати через тестові рахунки всі налаштовані воронки та інтеграції **працюватимуть так само, як і під час звичайної оплати**❗️
{% endhint %}

Форму перевірено

{% hint style="danger" %}
Для приймання реальних платежів форма **має бути переведена в робочий режим.** Тобто перемикач демо-режиму потрібно **встановити в яскраво-червоний** стан.
{% 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/uk/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.
