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

# Robokassa (KZ)

## Как настроить Robokassa

Рассмотрим как реализовать прием оплат в боте через сервис Robokassa.

1. Создайте интернет-магазин в личном кабинете сервиса Robokassa и укажите данные технические настройки:

\- Алгоритм расчета хеша: MD5\
\- Result Url: <https://chatter.mavibot.ai/robokassa\\_callback/result\\>
\- Метод отсылки данных по Result Url: GET\
\- Success Url: <https://chatter.mavibot.ai/robokassa\\_callback/success\\>
\- Метод отсылки данных по Success Url: GET\
\- Fail Url: <https://chatter.mavibot.ai/robokassa\\_callback/fail\\>
\- Метод отсылки данных по Fail Url: GET

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

{% hint style="warning" %}
Создайте тестовые пароли и первоначальную настройку проводите в тестовом режиме.
{% endhint %}

## Как подключить Robokassa к MaviBot?

Перейдите в раздел "Эквайринг" и нажмите "Подключить" на плашке Робокассы:

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

и заполните форму в открывшемся оне:

1. **Поле Идентификатор магазина —** Shop ID, который вы можете найти в настройках магазина в личном кабинете Robobkassa.
2. Пароли #1, пароль #2 — уникальные сгенерированные последовательности цифр+букв.&#x20;
3. **поле Ставка НДС.** Необходимо указать подходящий код для передачи значения НДС. Это поле устанавливает налоговую ставку в ККТ. Определяется для каждого вида товара по отдельности, но за все единицы конкретного товара вместе.

Применяется со значениями:

* Без НДС.
* НДС по ставке 0%.
* НДС по ставке 5%
* НДС чека по расчетной ставке 12%.
* НДС чека по расчетной ставке 16%.

## Как сформировать ссылку на оплату

{% hint style="success" %}
Сформировать ссылку на оплату в блоке можно **ОДНИМ ИЗ** из доступных способов:

* [Кнопка с функцией Оплата ](#knopka-s-funkciei-oplata)или
* [Функция get\_robokassa\_payment\_url в Калькуляторе](#funkciya-get_robokassa_payment_url-v-kalkulyatore) или
* [Создание ссылки с помощью переменной payment\_sum  и дополнительных параметров](#sozdanie-ssylki-s-pomoshyu-peremennoi-payment_sum-i-dopolnitelnykh-parametrov) (устаревшая работающая версия)
  {% endhint %}

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

Ссылку на оплату можно создавать в кнопке с функцией "Оплата".&#x20;

{% hint style="info" %}
Как создать кнопку с функцией "Оплата" рассказали здесь
{% endhint %}

Рассмотрим все возможные параметры данной кнопки. О том как создавать кнопку с функцией Оплата  рассказано в этой статье:

### **Обязательные параметры кнопки Оплата**

Для формирования ссылки на оплату в настройках кнопки  необходимо указать  <mark style="color:зелёный;">**обязательные параметры: Сумма  и Наименование товара.**</mark>

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

**поле Сумма.**  В этом поле указываем стоимость товара в рублях

**поле Наименование товара.**  В этом поле можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Максимальная длина — 100 символов. Эта информация отображается в интерфейсе Robokassa и в Электронной квитанции, которую получает клиент после успешного платежа.&#x20;

{% hint style="danger" %}
**НЕЛЬЗЯ** использовать **двойные кавычки** в наименовании товара: удалите или замените на одинарные кавычки.&#x20;
{% endhint %}

**чекбокс Автоплатеж.** Для подключения автоплатежа&#x20;

**чекбокс С уведомление о клике.** Для отслеживания перехода по ссылке для оплаты можно поставить галочку. В таком случае, при клике по кнопке в диалог с клиентом в Сейлбот придет уведомление о том, что был совершен переход по ссылке

На данное уведомление можно настраивать дальнейшую логику работы бота.

{% hint style="info" %}
Многие платежные системы поддерживают облачные онлайн-кассы, они необходимы по 54-ФЗ.\
Прочитайте особенности оформления чеков на сайте выбранной платежной системы, чтобы не попасть в неловкую ситуацию с налоговой инспекцией.
{% endhint %}

### **Для формирования чека**

**меню Данные для формирования чека.** При клике откроется выпадающее меню с параметрами для формирования чека:

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

**поле Название товара**. <mark style="color:красный;">**Обязательное для формирования чека.**</mark>&#x20;

{% hint style="danger" %}
**НЕЛЬЗЯ** использовать **двойные кавычки** в Названии товара: удалите или замените на одинарные кавычки.&#x20;
{% endhint %}

**поле Полная сумма в рублях.** В данном поле необходимо указать сумму к оплате с учетом  количества товаров. Если количество равно 1, то Полная сумма в рублях равна значению в поле Сумма в обязательном поле настройки кнопки

**поле Количество.** Количество или вес товара. Передать можно целое или дробное число через точку. Пример, 5 или 10.3

### Переменные клиента, которые будут созданы автоматически при использовании кнопки с функцией Оплата

Как только пользователь получит блок с кнопкой "Оплата" автоматически будут созданы переменные клиента:

<div data-with-frame="true"><figure><img src="/files/fafdb19e83fdf3ad176016c16de05cdaf30e1042" alt="" width="563"><figcaption><p>Рис. 9. переменная payments</p></figcaption></figure></div>

Служебная переменная клиента **`__payments`** , которая хранит сумму, идентификатор созданной ссылки, нужна для идентификации хука от платежной системы.

{% hint style="danger" %}
Служебную переменную клиента \_\_payments НЕЛЬЗЯ удалять или изменять!
{% endhint %}

Переменная клиента **`error_payment_button`** создается, если при формировании кнопки возникла ошибка.

В значение переменной error\_payment\_button запишется либо текст ошибки, либо ответ платежной системы с ошибкой.

{% hint style="warning" %}
Значение переменных становятся актуальными при переходе в следующий блок&#x20;
{% endhint %}

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

{% hint style="warning" %}
Обращаем внимание!

Robokassa отсылает уведомление только по успешным транзакциям по параметру Result URL. <mark style="color:красный;">**Коллбэков о неуспешных платежах в сервисе Robokassa нет.**</mark>&#x20;

Fail URL - это только страница неуспешной оплаты, куда будет переадресован плательщик в случае возникновения кодовой ошибки на платежной странице.&#x20;
{% endhint %}

**Успешный платеж.**

После того, как вы верно настроите оплату и сформируете ссылку для проведения платежа, протестируйте созданные настройки. Если оплата пройдет успешно, то в диалог клиента (раздел "Клиенты") <mark style="color:оранжевый;">**АВТОМАТИЧЕСКИ**</mark> придет КОЛЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова \_success и через пробел сумма платежа. **Коллбэк генерируется автоматически**, его не надо составлять самим или запрашивать в поддержке платежной системы,

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

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

Например: `ovg58keefc_success 2999`, где:&#x20;

ovg58keefc : 10 символов секретного ключа платежной системы

\_success : результат обработки запроса (успешный платеж)

2999 : сумма платежа

Отработка блока:

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

Колбек:

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

{% hint style="info" %}
Коллбэки (уведомления) от платежной системы пользователь НЕ ВИДИТ. Они отображаются только во вкладке "Клиенты" и видны оператору/администратору.
{% endhint %}

### Пример настройки реакции на коллбэк

В  блоке с условием (это может быть как блок "Стартовое условие", так и блок "Не состояние с условием") необходимо указать коллбэк, который приходит при оплате.&#x20;

{% hint style="warning" %}
Важно: выбор соответствия Полное совпадение  или По наличию ключевых слов
{% endhint %}

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

Далее при оплате клиенту будет приходить сообщение из блока, в котором настроена реакция на коллбэк:

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

**Платеж с ошибкой**

Если сумма указанная в настройках кнопки <mark style="color:синий;">**отличается от суммы, которую клиент оплатил**</mark>,  в бота <mark style="color:оранжевый;">**АВТОМАТИЧЕСКИ**</mark> придет КОЛЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова \_different\_amounts и через пробел уникальный ID платежа

Например: `ovg58keefc_different_amounts 123456` , где:&#x20;

`ovg58keefc` : 10 символов секретного ключа платежной системы

`_different_amounts` : результат обработки запроса (сумма оплаты отличается от суммы в ссылке)

`123456` : уникальный ID платежа

## Функция get\_robokassa\_payment\_url в Калькуляторе

Для формирования ссылки на оплату можно воспользоваться функцией `get_robokassa_payment_url` в Калькуляторе блоке.

В поле Калькулятор  переменной присвоим значение функции `get_robokassa_payment_url`&#x20;

{% hint style="info" %}
Название переменной задаете самостоятельно.  На скринах примеры названия переменных.&#x20;
{% endhint %}

В эту переменную запишется ссылка на оплату. Переменную можно вывести на экран ссылкой в сообщении или разместить в кнопке с текстом "Оплатить".&#x20;

**ПРИМЕР ссылки на оплату:**: `https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=test_salebot&OutSum=800&InvId=1412&IsTest=1&SignatureValue=0427369c3bd068bae30935f896060dda`

{% hint style="info" %}
Многие платежные системы поддерживают облачные онлайн-кассы, они необходимы по 54-ФЗ.\
Прочитайте особенности оформления чеков на сайте выбранной платежной системы, чтобы не попасть в неловкую ситуацию с налоговой инспекцией.
{% endhint %}

{% tabs %}
{% tab title="Калькулятор" %}
Пример 1:&#x20;

<div data-with-frame="true"><figure><img src="/files/b693a9fa71e3ccf912b053e5b69cf3c49d0dff69" alt=""><figcaption></figcaption></figure></div>
{% endtab %}

{% tab title="Описание параметров" %}
`get_robokassa_payment_url(amount, description, products_for_receipt, recurrent, currency)`

#### Параметры функции:

<table><thead><tr><th width="190">Параметр</th><th>Значение параметра</th></tr></thead><tbody><tr><td><strong><code>сумма к оплате</code></strong></td><td><p><mark style="color:по умолчанию;background-color:blue;">Сумма к оплате.</mark>  В этом поле указываем стоимость товара в рублях. </p><p><strong>(Обязательный параметр)</strong></p></td></tr><tr><td><strong><code>описание</code></strong></td><td><mark style="color:по умолчанию;background-color:blue;">Наименование товара.</mark>  В этом поле можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Максимальная длина — 100 символов. Эта информация отображается в интерфейсе Robokassa и в Электронной квитанции, которую получает клиент после успешного платежа. <br><strong>(Обязательный параметр)</strong></td></tr><tr><td><p><strong><code>products_for_</code></strong></p><p><strong><code>receipt</code></strong></p></td><td><p><mark style="color:по умолчанию;background-color:blue;">Параметры для формирования чеков.</mark> </p><p>Подробнее читайте <a href="#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment">здесь.</a> </p></td></tr><tr><td><strong><code>автоплатеж</code></strong></td><td><mark style="color:по умолчанию;background-color:blue;">Подключение автоплатежа.</mark> Если автоплатеж включен, то передать значение 1, если отключен передайте значение None</td></tr><tr><td><strong><code>валюта</code></strong></td><td><p><mark style="color:по умолчанию;background-color:blue;">Трехбуквенный код валюты.</mark></p><p>Необходимо передавать значение строго по параметрам, принимаемым сервисом Robokassa.<br>USD - доллар;<br>EUR - евро;<br>KZT - тенге.</p></td></tr></tbody></table>
{% endtab %}

{% tab title="Пример кода для копирования" %} <mark style="color:зелёный;">Пример 1: Ссылка на оплату без чека</mark>\
\
`res = get_robokassa_payment_url(100, 'Купи меня')`

<mark style="color:зелёный;">Пример 2: Ссылка на оплату с чеком</mark>\
\
`receipt = [{"name":"DDDDDDDD","amount":"44","quantity":"1","vat_code":"5","method":"full_payment","object":"commodity"}]`

`res = get_robokassa_payment_url(100, 'Купи меня', receipt, '3', 1, 1)`
{% endtab %}
{% endtabs %}

{% hint style="info" %}
Переменную можно вывести на экран ссылкой в сообщении или разместить в кнопке с текстом, например, "Купить".&#x20;
{% endhint %}

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

\
Ошибка запишется по последней функции в Калькуляторе
{% endhint %}

После того, как вы верно настроите оплату и сформируете ссылку для проведения платежа, протестируйте созданные настройки.&#x20;

## Как добавить описание платежа

Вы можете добавить описание к платежу, установив переменную **payment\_description**

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

Это описание будет отображаться в форме оплаты, а также на чеке.

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

Если оплата пройдет успешно, то в диалог клиента (раздел "Клиенты") <mark style="color:оранжевый;">**АВТОМАТИЧЕСКИ**</mark> придет КОЛЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова \_success и через пробел сумма платежа. **Коллбэк генерируется автоматически**, его не надо составлять самим или запрашивать в поддержке платежной системы,&#x20;

Например: `ovg58keefc_success 1500`, где:&#x20;

ovg58keefc : 10 символов секретного ключа платежной системы

\_success : результат обработки запроса (успешный платеж)

1500 : сумма платежа

{% hint style="success" %}
Обращаем внимание!&#x20;

Колбек виден только вам в диалоге с клиентом.&#x20;

Клиенту колбек не виден, но вы можете настроить реакцию на успешную обработку платежа.
{% endhint %}

### Пример

Настройки блока с функцией `get_robokassa_payment_url:`

1. Если выдаете ссылку в тексте:

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

{% hint style="warning" %}
Важно!&#x20;

Ссылка на оплату является уникальной: ее нельзя скопировать и потом направлять другим клиентам!&#x20;

Направляйте ссылку на оплату через переменную в боте (см. рис. 17).&#x20;
{% endhint %}

Коллбэк при успешной оплате:

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

2. Ссылка в кнопке:

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

Отработка блока:

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

Коллбэк при успешной оплате:

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

## Создание ссылки с помощью переменной payment\_sum  и дополнительных параметров

Принимать оплату вы также можете генерируя ссылку с помощью переменной payment\_sum, в которой достаточно указать сумму платежа.&#x20;

{% hint style="info" %}
**Обратите внимание:** переменной **payment\_sum** присваивается значение последней, после необязательных переменных **payment\_description, product\_name** и т.д.&#x20;
{% endhint %}

Для генерации ссылки на оплату, вам необходимо установить значение переменной **payment\_sum**, сразу после этого появится переменная **robokassa\_pay\_url.** Эту переменную можно вывести на экран ссылкой или разместить на кнопке с текстом "Оплатить".&#x20;

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

**ПРИМЕР отработки блоки (ссылки на оплату):**

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

{% hint style="warning" %}
Важно!&#x20;

Ссылка на оплату является уникальной: ее нельзя скопировать и потом направлять другим клиентам!&#x20;

Направляйте ссылку на оплату через переменную в боте
{% endhint %}

Чтобы передавать ссылку в кнопке, укажите переменную в кнопке в поле url:

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

### Результат оплаты при формировании ссылки на оплату через payment\_sum

После успешной оплаты в бот придет коллбэк. Этот коллбэк в системе вы видите как сообщение от пользователя, чтобы их не мог отправить пользователь, они состоят из первого пароля от сервиса Robokassa и приписки со статусом success, например: **qxgZ7zkNX4HHnG8UpZ61\_success.**

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

Также после успешной оплаты переменная **robokassa\_payment\_completed** устанавливается в **True.**

Этот коллбэк **НЕ ВИДИТ** пользователь, они отображаются только оператору

{% hint style="danger" %}
Тип сравнения должен быть "**Полное совпадение**"
{% endhint %}

{% hint style="warning" %}
Для совершения повторного платежа обязательно необходимо обнулить **payment\_sum**, ранее сформированную ссылку и уже после переназначить переменную payment\_sum для получения свежей ссылки\
\
Пример обнуления переменных: \
robokassa\_pay\_url=''\
payment\_sum=0
{% endhint %}

После завершения оплаты клиенту добавится переменная **robokassa\_callback\_data**, содержащая данные ответа платежной системы по совершенной операции. Из полученного словаря можно извлечь необходимые данные при помощи метода **get**.

## Как создать тестовую схему

Пример схемы, которая позволит протестировать и быстро начать работу с сервисом Robokassa:

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

На рисунке показан пример первого блока, в котором пользователя спрашивают, сколько он хочет оплатит&#x44C;**.**

На рисунке ниже настройки стрелки, в ней должен быть включен переключатель "Пользователь вводит данные" и в поле вписана переменная **payment\_sum:**

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

Далее в следующем блоке оплаты добавьте кнопку и установите в строку url переменную **robokassa\_pay\_url:**

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

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

Схема отработает следующим образом:

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

При клике на кнопку сумма, которую прописал клиент, будет доступна к оплате.

После оплаты придет коллбэк, на который также можно настроить реакцию.&#x20;

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

{% hint style="info" %}
Важно!&#x20;

Колбека о неуспешной оплате в Robokassa не существует.
{% endhint %}

Для этого добавьте еще один блок с условием, а в строке с условием пропишите коллбэк вида "**qxgZ7zkNX4HHnG8UpZ61\_success":**

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

{% hint style="info" %}
Тип проверки обязательно поставьте "Полное совпадение"
{% endhint %}

Схема будет отрабатывать следующим образом:

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

## Как сформировать запрос на фискализацию

### В кнопке с функцией “Оплата”

При создании кнопки в выпадающем меню “Данные для формирования чека”, заполните поля “Название товара”, “Полная сумма в рублях”, “Количество”, “Ставка НДС”, “Система налогообложения”.

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

Подробнее в разделе "[Для формирования чека](#dlya-formirovaniya-cheka)".

### С помощью переменной payment\_sum

Так как генерация ссылки производится в момент, когда вы установили значение переменной payment\_sum, вам необходимо задать переменные products\_for\_receipt и robokassa\_sno.

{% hint style="warning" %}
Важно:&#x20;

* при формировании ссылки через переменную payment\_sum, система налогообложения задаётся в переменной robokassa\_sno.
* payment\_sum должна быть равна общей стоимости всех товаров (сумма всех параметров sum).
  {% endhint %}

Пример:

session\_timeout = 7200

product\_name = Первый платеж

robokassa\_sno = osn

products\_for\_receipt = \[{"name": "Наименование товара", "quantity": 2, "sum": 2, "tax": "none"}, {"name": "Наименование товара 2", "quantity": 1, "sum": 6, "tax": "none"}]

payment\_sum = 10

### Для функций get\_robokassa\_payment\_url и robokassa\_recurrent\_payment

При вызове функций **get\_robokassa\_payment\_url** или функции **robokassa\_recurrent\_payment** передайте в качестве аргументов переменные **taxation** и **products\_for\_receipt** согласно описанию ниж&#x435;**.**

Функции подготовят ссылку с учётом товарной номенклатуры и сформируют запрос на фискализацию.

{% hint style="warning" %}
Важно:

Переменные **taxation** и **products\_for\_receipt** должны задаваться для каждого отдельного платежа.

Сервис Robokassa не хранит данные параметры и не сможет провести фискализацию платежей, для которых не была передана номенклатура.
{% endhint %}

1. **products\_for\_receipt** - массив, содержащий товарную номенклатуру.&#x20;

Каждая единица товара должна быть представлена в виде словаря, содержащего параметры **name, quantity, sum, tax, payment\_method, payment\_object и nomenclature\_code**.

\
&#x20;<mark style="color:красный;">**!**</mark>**&#x20;products\_for\_receipt** нужно указать в следующем формате:

\[

{"name": "Наименование товара", "quantity": "Количество товара", "sum": "Стоимость товара", "tax": "Ставка НДС"},

{"name": "Наименование товара 2", "quantity": "Количество товара 2", "sum": "Стоимость товара", "tax": "Ставка НДС"}

]

где,&#x20;

1\) **наименование товара** - наименование товара. Если в наименовании товара вы используете специальные символы, например кавычки, то их обязательно необходимо экранировать.

2\) **количество** - количество или вес товара (целое или дробное число через точку)

3\) **сумма** или **сумма к оплате** (*обязательный, два варианта имени*) - полная сумма в рублях за все количество данного товара с учетом всех возможных скидок, бонусов и специальных цен.

4\) **НДС** или **код НДС** - (обязательный, два варианта имени, значение зависит от имени) - ставка НДС. Этот параметр устанавливает налоговую ставку в ККТ.

{% tabs %}
{% tab title="Значения для tax:   " %}

<table data-full-width="true"><thead><tr><th width="272"> Значение</th><th>Описание</th></tr></thead><tbody><tr><td>без НДС</td><td>без НДС</td></tr><tr><td>НДС по ставке 0%</td><td>НДС по ставке 0%</td></tr><tr><td>НДС по ставке 5%</td><td>НДС по ставке 5%</td></tr><tr><td>НДС по ставке 12%</td><td>НДС по ставке 12%</td></tr><tr><td>НДС по ставке 16%</td><td>НДС по ставке 16%</td></tr></tbody></table>
{% endtab %}

{% tab title="Значение для vat\_code:" %}

<table><thead><tr><th width="209">Значения</th><th> Описание</th></tr></thead><tbody><tr><td>'1' </td><td>Без НДС</td></tr><tr><td>'2' </td><td>НДС по ставке 0%</td></tr><tr><td>'8'</td><td>НДС по ставке 5%</td></tr><tr><td>'15'</td><td>НДС по ставке 12%</td></tr><tr><td>'14'</td><td>НДС по ставке 16%</td></tr></tbody></table>
{% endtab %}
{% endtabs %}

5\) **метод** или **способ расчёта** - (два варианта имени, необязательный параметр) признак способа расчёта.&#x20;

<table><thead><tr><th width="345" align="center">Возможные значения параметра:</th><th>Что подразумевает значение: </th></tr></thead><tbody><tr><td align="center">предоплата 100%. Полная предварительная оплата до момента передачи предмета расчёта</td><td>предоплата 100%. Полная предварительная оплата до момента передачи предмета расчёта</td></tr><tr><td align="center">предоплата. Частичная предварительная оплата до момента передачи предмета расчёта</td><td>предоплата. Частичная предварительная оплата до момента передачи предмета расчёта</td></tr><tr><td align="center">аванс</td><td>аванс</td></tr><tr><td align="center">полный расчёт. Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчёта; </td><td>полный расчёт. Полная оплата, в том числе с учетом аванса (предварительной оплаты) в момент передачи предмета расчёта;</td></tr><tr><td align="center">частичный расчёт и кредит. Частичная оплата предмета расчёта в момент его передачи с последующей оплатой в кредит; </td><td>частичный расчёт и кредит. Частичная оплата предмета расчёта в момент его передачи с последующей оплатой в кредит;</td></tr><tr><td align="center">передача в кредит. Передача предмета расчёта без его оплаты в момент его передачи с последующей оплатой в кредит; </td><td>передача в кредит. Передача предмета расчёта без его оплаты в момент его передачи с последующей оплатой в кредит;</td></tr><tr><td align="center">оплата кредита. Оплата предмета расчёта после его передачи с оплатой в кредит (оплата кредита).</td><td>оплата кредита. Оплата предмета расчёта после его передачи с оплатой в кредит (оплата кредита).</td></tr></tbody></table>

6\) **предмет расчёта** или **предмет расчёта** - (два варианта имени, необязательный параметр) предмет расчета (если не передать, будет товар)

<table><thead><tr><th width="328" align="center">Возможные значения параметра</th><th>Что подразумевает значение</th></tr></thead><tbody><tr><td align="center"><strong>товар</strong></td><td>Товар. О реализуемом товаре, за исключением подакцизного товара (наименование и иные сведения, описывающие товар)</td></tr><tr><td align="center"><strong>подакцизный товар</strong> </td><td>Подакцизный товар. О реализуемом подакцизном товаре (наименование и иные сведения, описывающие товар)</td></tr><tr><td align="center"><strong>работа</strong></td><td>Работа. О выполняемой работе (наименование и иные сведения, описывающие работу)</td></tr><tr><td align="center"><strong>услуга</strong></td><td>Услуга. Об оказываемой услуге (наименование и иные сведения, описывающие услугу)</td></tr><tr><td align="center"><strong>ставка азартной игры</strong></td><td>Ставка азартной игры. О приеме ставок при осуществлении деятельности по проведению азартных игр</td></tr><tr><td align="center"><strong>выигрыш азартной игры</strong></td><td>выигрыш азартной игры. О выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению азартных игр</td></tr><tr><td align="center"><strong>лотерея</strong></td><td>лотерейный билет. О приеме денежных средств при реализации лотерейных билетов, электронных лотерейных билетов, приеме лотерейных ставок при осуществлении деятельности по проведению лотерей</td></tr><tr><td align="center"><strong>выигрыш лотереи</strong></td><td>выигрыш лотереи. О выплате денежных средств в виде выигрыша при осуществлении деятельности по проведению лотерей</td></tr><tr><td align="center"><strong>интеллектуальная деятельность</strong> </td><td>предоставление результатов интеллектуальной деятельности. О предоставлении прав на использование результатов интеллектуальной деятельности или средств индивидуализации</td></tr><tr><td align="center"><strong>платеж</strong></td><td>платеж. Об авансе, задатке, предоплате, кредите, взносе в счет оплаты, пени, штрафе, вознаграждении, бонусе и ином аналогичном предмете расчета</td></tr><tr><td align="center"><strong>агентское вознаграждение</strong> </td><td>агентское вознаграждение. О вознаграждении пользователя, являющегося платежным агентом (субагентом), банковским платежным агентом (субагентом), комиссионером, поверенным или иным агентом;</td></tr><tr><td align="center"><strong>составной</strong></td><td>составной предмет расчета. О предмете расчета, состоящем из предметов, каждому из которых может быть присвоено значение выше перечисленных признаков</td></tr><tr><td align="center"><strong>иной</strong></td><td>иной предмет расчета. О предмете расчета, не относящемуся к выше перечисленным предметам расчета</td></tr><tr><td align="center"><strong>имущественное право</strong></td><td>имущественное право</td></tr><tr><td align="center"><strong>внереализационный доход</strong></td><td>внереализационный доход</td></tr><tr><td align="center"><strong>страховые взносы</strong></td><td>страховые взносы</td></tr><tr><td align="center"><strong>торговый сбор</strong></td><td>торговый сбор</td></tr><tr><td align="center"><strong>курортный сбор</strong></td><td>курортный сбор</td></tr></tbody></table>

7\) **код маркировки** - (условно обязательный) маркировка товара: передаётся в том виде, как она напечатана на упаковке товара.&#x20;

{% hint style="warning" %}
Параметр является обязательным только для тех магазинов, которые продают товары, подлежащие обязательной маркировке.&#x20;

Код маркировки расположен на упаковке товара, рядом со штрих-кодом или в виде QR-кода.
{% endhint %}

{% hint style="warning" %}
Важно! Для фискализации важно передать параметры чека.&#x20;

Верный формат чека передается таким образом:

rec = \[{"name": "Пакет 1 месяц", "quantity": 1, "sum": 4800, "tax": "none"}]

response = robokassa\_recurrent\_payment(4800, 'Обучение в Лётной школе Авиатор', 'ru', rec, 'osn')

где необходимо подставить свои данные.&#x20;
{% endhint %}

## Формирование чека при приеме оплаты в Курсах на странице курса

Нужно выбрать в разделе "Оплата" в настройках курса платежную систему Robokassa:

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

Заполните в разделе "Эквайринг" в настройках платежной системы (если не сделали это ранее) поле "Ставка НДС".

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

## Какие могут быть ошибки

#### Код ошибки 40

«Повторная оплата счета с тем же номером невозможна».

После успешного платежа необходимо перевести диалог в блок "Конец сбора данных", чтобы сформировался новый номер платежа.

#### Код ошибки 34

«Услуга рекуррентных платежей не разрешена магазину».

#### Код ошибки 31

«Неверная сумма платежа».

Такая ошибка может возникнуть при переадресации клиента на платежную страницу для выставления счета. Она означает, что вы не передаете нам сумму, на которую необходимо провести платеж, либо передаете сумму, равную нулю.

#### Код ошибки 29

«Неверный параметр Signature»

Здесь причин может быть несколько, но все они связаны со скриптом, отвечающим за инициализацию оплаты (а конкретнее, его часть, которая формирует параметр Signature по формуле, состоящей из переменных). Эта ошибка встречается довольно часто, и вот 3 возможные причины:

* **Первая:** некорректный Идентификатор магазина (MerchantLogin);
* **Вторая:** неверный Пароль 1 (MerchantPass1);
* **Третья:** вы используете дополнительные параметры (sh&#x70;**\_**), которые добавлены в программный код кассы, но не занесены в формулу подсчета - или наоборот, в формуле подсчета они указаны, а в коде нет. Если таковые используются, передавайте их в алфавитном порядке – как в параметрах на оплату, так и в формуле подсчета Signature.

Важный момент! Если вы работаете в тестовом режиме, передавая параметр IsTest=1 или включая его галочкой в настройках модуля/бота, используйте только тестовую пару технических паролей (закладка «Технические настройки» карточки вашего магазина).

#### Код ошибки 23

«Тестовый платёж не может быть создан. У магазина отсутствуют настройки тестовых параметров».

Это значит, что перед проведением тестового платежа вы не заполнили все необходимые данные в блоке «Параметры проведения тестовых платежей» закладки «Технические настройки».

#### Код ошибки 25

«Магазин не активирован».

Эта ошибка встречается нередко, и здесь могут быть 2 причины.

* **Первая:** это действительно так – и необходимо активировать магазин, а лишь потом выставлять счет.
* **Вторая:** вы неверно указали Идентификатор магазина в технических настройках на сайте. Посмотреть правильный можно в разделе «Мои магазины» Личного кабинета. Перейдите в закладку «Технические настройки» и найдите поле «Идентификатор магазина». Скопируйте идентификатор и введите его в настройках сайта.

## **Как проводить автоматические платежи сервиса Robokassa**

Пошаговая инструкция подключения автоплатежей для сервиса **Robokassa**

**Шаг 1. Включить автоплатежи в кнопке оплаты**

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

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

Далее в настройках кнопки найдите чекбокс "Автоплатежи" и активируйте его:

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

Если вы хотите принимать автоплатежи во всех кнопках на оплату, то включить автоплатежи можно в настройках подключения платежной системы:

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

**Шаг 2. Провести обычный платёж.**\
\
Далее нужно провести обычный платеж (получить ссылку на оплату и чтоб клиент ее оплатил), как описано выше. После успешного платежа у клиента появится переменная **robokassa\_previous\_invoice\_id** с идентификатором платежа.

{% hint style="warning" %}
Переменная **robokassa\_previous\_invoice\_id** обязательна для последующих платежей.\
\
Если ее удалить, следующий автоплатеж провести НЕ получится.
{% endhint %}

{% hint style="danger" %}
Обращаем внимание!&#x20;

<mark style="color:красный;">**Отключите**</mark> чекбокс "**Платежи в тестовом режиме**" (если он у вас активный), иначе переменная robokassa\_previous\_invoice\_id с идентификатором платежа не будет сформирована!&#x20;

![](/files/6e380586f705d82f203902e605c51aa38734c3c3)
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/3f8e258eb4ec3dd4f957e0ae1e549462912e5fec" alt=""><figcaption><p>Пример формирования ссылки для обычного платежа</p></figcaption></figure></div>

<div data-with-frame="true"><img src="https://lh4.googleusercontent.com/FGVcl0wzMK3_ldq7OxHe3653Q3buEgR29657HixPQ6xUrqoa2E2TpG3yCRdF5oDgj69VhnQRlZJZG_wjnnwQyIjkHRTQ8nr-Jzwyo99CtaiOT5JUuiMLuE2Jm3MDTBxKXJoD02gr=s0" alt=""></div>

**Шаг 3. Планируем автосписание**

От блока Успешная оплата планируем стрелку с таймером к блоку с автоплатежом. Для примера запланируем следующий платеж через 30 дней.&#x20;

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

Чтобы прошёл автоплатеж в нужном блоке в поле Калькулятор, нужно добавить вызов функции **robokassa\_recurrent\_payment**, передав в неё параметры в указанном порядке:&#x20;

1. **сумма к оплате** - сумма к оплате (стоимость товара в рублях)
2. **описание** - наименование товара. В этом поле можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Максимальная длина — 100 символов. Эта информация отображается в интерфейсе Robokassa и в Электронной квитанции, которую получает клиент после успешного платежа.&#x20;
3. **страна** - доменная зона (‘ru’ или ‘kz’)
4. **products\_for\_receipt** - параметры для формирования чеков.

{% hint style="info" %}
Подробнее в разделе "Как сформировать запрос на фискализацию -> [Для функций get\_robokassa\_payment\_url и robokassa\_recurrent\_payment](#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment)
{% endhint %}

5. **taxation** - система налогообложения.&#x20;

{% hint style="info" %}
Подробнее в разделе "Как сформировать запрос на фискализацию -> [Для функций get\_robokassa\_payment\_url и robokassa\_recurrent\_payment](#dlya-funkcii-get_robokassa_payment_url-i-robokassa_recurrent_payment)
{% endhint %}

Пример запроса на автоплатеж:

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

{% hint style="warning" %}
При выполнении автоплатежа не должно быть ссылки на оплату робокассы и переменной **payment\_sum**!
{% endhint %}

*<mark style="color:синий;">Шаг 4. Планируем регулярные списания и настраиваем возможность отказаться от автоплатежей.</mark>*\
\
Для регулярного повтора платежей планируем  петлю - стрелку с задержкой, например, 30 дней.

<div data-with-frame="true"><figure><img src="/files/bba366d739ec649bb46e36ed0db261a2f291f04a" alt=""><figcaption><p>Петля - повторный переход в блок Автоплатёж</p></figcaption></figure></div>

Если у вас предусмотрена возможность отмены автоплатежей, то для того, чтобы следующий платеж не был выполнен необходимо удалить у клиента  переменную `robokassa_previous_invoice_id`\
\
Для этого в поле Калькулятор удаляем переменную:\
\
`robokassa_previous_invoice_id = ""`

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

### Обычный платеж при включенных автоплатежах

Если включены автоплатежи, но нужна ссылка без подписки (без автоплатежей), то до формирования ссылки нужно задать переменную robokassa\_manual\_recurrent\_disable со значением 1\
\
В поле Калькулятор объявим переменную:\
`robokassa_manual_recurrent_disable = 1`

<div data-with-frame="true"><figure><img src="/files/5f269804c7b166543835312e0cea2393b0341716" alt=""><figcaption><p>Настройки блока для формирования ссылки на обычный платеж при включенных Автоплатежах</p></figcaption></figure></div>

{% hint style="info" %}
Внимание!&#x20;

Коллбэк при автоплатежах идентичен коллбэку, который приходит при успешных оплатах.&#x20;

Как настроить реакцию на коллбэк, рассказали в разделе "[Как обработать результат](#kak-obrabotat-rezultat)"
{% endhint %}

## Какие требования сервиса Robokassa к чат-ботам

Официальный ответ сервиса Robokassa:

> Вы можете разместить товар на маркете с описанием и ценником и принимать оплату в боте, можете сделать одностраничник с описанием, ценником, контактными данными и указанием, что доставка товара/оказания услуги электронное. У нас должна быть привязка к товару на маркете или к сайту, т.к. что Вы продаете продает в своем боте и в каком боте мы - мы не можем знать.
>
> Ссылку на телеграммы канал в качестве URL мы не включаем. Также требования к наполнению сайта: "Сайт должен быть функционирующий, с заполненным контентом, работающими внутренними ссылками.
>
> Товары и услуги на Вашем сайте должны быть подробно описаны: Описание должно включать характеристики предлагаемых товаров и услуг, их потребительские свойства и актуальную цену.
>
> На Вашем сайте обязательно должна быть размещена актуальная информация: телефон, e-mail, правила оформления и сроки исполнения заказа, условия его оплаты, доставки и возврата.
>
> Каждый сайт рассматривается индивидуально.

## Robokassa в Telegram

### Подключение тестового бота RobokassaPaymentTestBot.

1. При выборе Connect Robokassa Test пользователь переходит в бота RobokassaPaymentTestBot.
2. Пользователь нажимает кнопку /начать.
3. Пользователь получает ответ от бота «Введите ID магазина”.
4. Необходимо ввести id от магазина в сервисе Robokassa.
5. Бот попросит подтверждение, подтверждающее владение магазином посредством отправки смс на номер, указанный в магазине: «Отправлена СМС на номер \*%%%%» где %%%% - последние 4 цифры телефона
6. Пользователь вводит 6-значный код.
7. Если все успешно то пользователю покажется сообщение: “Вы успешно подключили бота @BotName к Robokassa. @BotFather сообщит Вам новый токен.”
8. После этого в BotFather появляется платежный токен, к которому подключаются платежи.

### Подключение live- бота RobokassaPaymentBot.

1. При выборе Connect Robokassa Live пользователь переходит в бота RobokassaPaymentBot,
2. Пользователь нажимает кнопку /начать.
3. Пользователь получает ответ от бота «Введите ID магазина”.
4. Необходимо ввести id от магазина в сервисе Robokassa.
5. Бот попросит подтверждение, подтверждающее владение магазином посредством отправки смс на номер, указанный в магазине: «Отправлена СМС на номер \*%%%%», где %%%% - последние 4 цифры телефона
6. Пользователь вводит 6-значный код.
7. Если все успешно то пользователю покажется сообщение: “Вы успешно подключили бота @BotName к Robokassa. @BotFather сообщит Вам новый токен.”
8. После этого в BotFather появляется платежный токен, к которому подключаются платежи.

Обработка результатов оплаты аналогична описанному [тут](#kak-poluchit-uvedomlenie-o-rezultate-oplaty)


---

# 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/robokassa-kz.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.
