> For the complete documentation index, see [llms.txt](https://docs.mavibot.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mavibot.ai/doc/ru/integrations/payment/prodamus-blr/prodamus.md).

# Prodamus (KZ)

## **Как подключить Prodamus**

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

URL платежной формы выдается после регистрации, его пример: `demo.payform.ru`.

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

<div data-with-frame="true"><figure><img src="/files/8d302c9de7a1e333b4d7555454034ce82bd1a026" 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/1d249a8d5fba98afe445935ff738d7e3fe5695a3" alt=""><figcaption></figcaption></figure></div>

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

<div data-with-frame="true"><figure><img src="/files/4685097cb7ac3e7aa0378e05f39f55cf9010326c" 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/22a90f5ddfd4740d183670579715d0d69f553504" alt=""><figcaption></figcaption></figure></div>

{% hint style="warning" %}
**Внимание!** После ввода URL обязательно **«Сохранить»** кнопку.
{% endhint %}

Чтобы подключить Prodamus, **«Эквайринг»** раздел.

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

После этого достаточно ввести указанные выше данные в форму:

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

{% hint style="warning" %}
**Важно!** При указании URL платежной формы **https\://** не добавляйте.
{% endhint %}

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

## Как сделать ссылку на оплату

### Кнопка с функцией «Оплатить»

**Ссылку на оплату можно сделать в кнопке с функцией «Оплатить».**

{% hint style="info" %}
[О том, как сделать такую кнопку, рассказано в этой статье.](/doc/ru/chatbot/builder/knopki/platezhnaya-knopka.md)
{% endhint %}

Теперь рассмотрим все возможные параметры этой кнопки.

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

**Для создания ссылки на оплату в настройках кнопки необходимо указать обязательные параметры:**\
«Сумма», «Название товара», а также параметр «Оплаченный контент» — если у вас нет собственной онлайн-кассы и вы хотите получать чек от Prodamus.

При переходе на страницу оформления заказа заранее отображается информация о товаре и его цене, а клиент вводит только свои контактные данные.

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

<div data-with-frame="true"><figure><img src="/files/f9994b4e3424be7a6a35123e217ac74f7a1d2940" alt="" width="563"><figcaption><p>Окно настроек кнопки</p></figcaption></figure></div>

**«Мәтін» өрісі** — этот текст отображается в сообщении на кнопке со ссылкой на оплату.

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

**«Поле платежной системы»** — подключенные к проекту платежные системы отображаются в списке.\
Если к проекту не подключена ни одна платежная система, этот тип кнопки будет недоступен.

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

**«Поле Сумма» (обязательное)** — указываем стоимость товара.

**Меню «Дополнительная информация»** — при нажатии на эту кнопку будут доступны дополнительные поля для создания ссылки:

* Описание заказа
* Скидка в рублях
* Переменная Email покупателя
* Переменная номера телефона покупателя
* Время действия ссылки
* ID товара для подписки (для автоплатежа)
* Оплаченный контент

**Чекбокс «Уведомлять о нажатии»** — можно отметить, чтобы отслеживать переход по ссылке на оплату. В этом случае при нажатии на кнопку в диалог клиента в SaleBot придет сообщение о том, что был совершен переход по ссылке.

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

По этому сообщению можно настроить дальнейшую логику работы бота.\
Многие платежные системы поддерживают облачные онлайн-кассы, которые необходимы в соответствии с требованиями 54-ФЗ.

Изучите на сайте выбранной платежной системы особенности оформления чеков, чтобы не иметь проблем с налоговой инспекцией.

Вот как выглядит страница оплаты, которая открывается при переходе по ссылке в кнопке «Оплатить»:

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

### Дополнительные настройки для создания ссылки на оплату

<div data-with-frame="true"><figure><img src="/files/844b49782db85b264906fd998e8975464fcd117e" 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 товара для автоплатежа. Для создания подписки нужно создать подписочный товар.\
Подробная инструкция: [Создание и настройка подписок Prodamus](https://help.prodamus.ru/payform/rekurrent-i-kluby/kak-sozdat-i-nastroit-podpiski)\
Если для подписки указан ID товара, сумма оплаты не учитывается. Данные о товаре берутся из карточки товара в кабинете Prodamus.\
Указанный в оплате номер телефона будет необходим для управления подпиской.\
Если для подписки указан ID товара, при успешной оплате в колбэке будет передан ID этого товара.

**«Поле Оплаченный контент»** (условно обязательное) — эти данные нужны для фискализации оплаты через 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/ef06842b25ddb2cd749c96de52b9147e85d31572" alt=""><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/d845aa4e9c0cdf3380a6517c99d46b24c918c2a4" 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/52618ffbe43ab9d6b638b2849e14f6a42fd1439f" 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/d3e50490ad5338cea75af9039effa73e27a98c95" 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/bf587b4eba974d6f2b49eae1845d292a411a645b" 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/b6cb7e6d673121489297a4b2a4e1b8a57028de7b" alt="" width="524"><figcaption></figcaption></figure></div>

**Пример реализации.**\
В первом блоке задаём сумму платежа:

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

На следующем шаге в нужном месте **`prodamus_pay_url`** выводим ссылку:

<div data-with-frame="true"><figure><img src="/files/be8038242f8b597eb385d8b893fdea4bc7729d09" 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 месяцев через «ОТП Банк»</td></tr><tr><td><strong>otp_installment_0_0_10</strong></td><td>Рассрочка на 10 месяцев через «ОТП Банк»</td></tr><tr><td><strong>otp_installment_0_0_12</strong> </td><td>Рассрочка на 12 месяцев через «ОТП Банк»</td></tr><tr><td><strong>otp_installment_0_0_24</strong></td><td>Рассрочка на 24 месяца через «ОТП Банк»</td></tr><tr><td><strong>otp_installment_0_0_36</strong></td><td>Рассрочка на 36 месяцев через «ОТП Банк»</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/94ab54a6b2c590e3460fddd79762b3faa3d4cf35" alt="" width="563"><figcaption></figcaption></figure></div>

<div data-with-frame="true"><figure><img src="/files/9c4c5245f67ca0a4d722bcb25df01762d79a0888" 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/614bd00d0a1c0f4d52605baa83f13d859b7ddb22" 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/a83e168500dc994f132f156fcde83fdc9016eab9" 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/1678538d98d710b20c9aa9417e9b69e6fec0a6b3" 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/749b88fb56544be55340a30e0a1ce34f050bf801" alt=""><figcaption></figcaption></figure></div>

Чтобы отправлять сообщение на все неуспешные платежи независимо от причины, можно настроить следующим образом:

<div data-with-frame="true"><figure><img src="/files/a4433cd4a3a628662c5cbe9c69599b221c8dad1e" 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** установить ID подписного товара. После этого автоматически **prodamus\_pay\_url** появится переменная.

<div data-with-frame="true"><figure><img src="/files/3532d383ef4bdf1974684bbc96fcf600adc65f30" 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/be323373571cf68ccefb834e80d8436f683fccd3" 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> — можно скопировать в кабинете Продамус (обязательный параметр).</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 профиля в системе Продамус

**Примечание:**\
Если приходит ID профиля, он **`profile_id`** сохраняется в переменной.\
`profile_id` в функцию **`customer_phone`** или **`customer_email`** может быть передан вместо него, и подписку можно остановить.

**Пример:** настройка блоков подписки

<div data-with-frame="true"><figure><img src="/files/30b85a2e063b93c43a57def92d001f154bff5865" 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 профиля в системе Продамус

<div data-with-frame="true"><figure><img src="/files/a485610f18f908dfca29eefe35dd81ff87746bab" 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 профиля в системе Продамус

Если запрос выполнен успешно, функция `'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/5355ab4abe138d1e2edd364b5e1daa1551d88968" 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_`** добавьте префикс.

После этого при создании платежной ссылки параметры из этой переменной будут автоматически отправлены в платёжную систему.

## Как протестировать платеж

{% hint style="info" %}
Тестируем только платёж!
{% endhint %}

Чтобы при настройке интеграции и платёжных воронок с вашего счёта не списывались деньги, **можно использовать тестовые карты**.

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

<div data-with-frame="true"><figure><img src="/files/622a1c2a4d8cb97b0f3058c5160b36535ef06d50" 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
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

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

```
GET https://docs.mavibot.ai/doc/ru/integrations/payment/prodamus-blr/prodamus.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
