> 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/uk/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/fed04ef10dfac3ad83df4ca9d3921cb828c86abc" alt=""><figcaption></figcaption></figure></div>

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

## Як підключити Robokassa до MaviBot?

Перейдіть до розділу "Еквайринг" і натисніть "Підключити" на плашці Робокаси:

<div data-with-frame="true"><figure><img src="/files/ce73c48ffd86973786ce610075a86a75ef8fd619" 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/fbac6ce5c5321f19a9740f42e1a8452ed6f0b85a" 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/ab863ef41b5c74047631fc7cd5fc9c6637e80f1a" 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/4f2a66308376a3bd7de1776f93b5c3c9f7904bae" 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/9351a43acc749e1fd3d5e8903f8e47a3ff332d69" alt="" width="563"><figcaption></figcaption></figure></div>

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

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

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

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

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

Відпрацювання блоку:

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

Колбек:

<div data-with-frame="true"><figure><img src="/files/5c7b62f223f40668ee67aa6aa38a3cd63cb4aff0" 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/67dc8f3ad53d378883f52f7ff47e0d1f7db30105" alt=""><figcaption></figcaption></figure></div>

Далі при оплаті клієнту приходитиме повідомлення з блоку, в якому налаштовано реакцію на колбек:

<div data-with-frame="true"><figure><img src="/files/54d6f4f4a62da4e995c91c074f2f07d6d409a8cc" 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/fadab2c83de5faa26769f354d477e9eee206a85f" 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>amount</code></strong></td><td><p><mark style="color:за замовчуванням;background-color:blue;">Сума до оплати.</mark>  У цьому полі вказуємо вартість товару в рублях. </p><p><strong>(Обов'язковий параметр)</strong></p></td></tr><tr><td><strong><code>description</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>recurrent</code></strong></td><td><mark style="color:за замовчуванням;background-color:blue;">Підключення автоплатежу.</mark> Якщо автоплатіж увімкнено, то передайте значення 1, якщо вимкнено — передайте значення None</td></tr><tr><td><strong><code>currency</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/24951a3db2c2bac064b3fd1038d0d3fd9d397e7c" 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/6d2fce7bce20bec71ac8e6ff2cc977a21c7e9289" alt=""><figcaption></figcaption></figure></div>

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

Посилання на оплату є унікальним: його не можна скопіювати і потім надсилати іншим клієнтам!&#x20;

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

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

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

2. Посилання в кнопці:

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

Відпрацювання блоку:

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

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

<div data-with-frame="true"><figure><img src="/files/75fb136e0002ffc4a4d5e3ac9411bb5275b14377" 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/b8200575edd143fea156041c8d0549812da875a9" alt=""><figcaption></figcaption></figure></div>

**ПРИКЛАД відпрацювання блоку (посилання на оплату):**

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

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

Посилання на оплату є унікальним: його не можна скопіювати і потім надсилати іншим клієнтам!&#x20;

Надсилайте посилання на оплату через змінну в боті
{% endhint %}

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

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

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

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

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

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

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

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

Далі в наступному блоці оплати додайте кнопку та встановіть у рядок url змінну **robokassa\_pay\_url:**

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

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

Схема відпрацьовуватиме так:

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

При кліку на кнопку сума, яку вказав клієнт, буде доступна до оплати.

Після оплати надійде колбек, на який також можна налаштувати реакцію.&#x20;

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

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

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

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

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

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

Схема працюватиме так:

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

## Як сформувати запит на фіскалізацію

### У кнопці з функцією “Оплата”

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

<div data-with-frame="true"><figure><img src="/files/9bf40235481b71af8756e715362cac5caed633dd" 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\) **name** - найменування товару. Якщо в найменуванні товару ви використовуєте спеціальні символи, наприклад лапки, то їх обов'язково необхідно екранувати.

2\) **quantity** - кількість або вага товару (ціле або дробове число через крапку)

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

4\) **tax** або **vat\_code** - (обов'язковий, два варіанти назви, значення залежить від назви) - ставка ПДВ. Цей параметр встановлює податкову ставку в ККТ.

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

<table data-full-width="true"><thead><tr><th width="272"> Значення</th><th>Опис</th></tr></thead><tbody><tr><td>none</td><td>без ПДВ</td></tr><tr><td>vat0</td><td>ПДВ за ставкою 0%</td></tr><tr><td>vat5</td><td>ПДВ за ставкою 5%</td></tr><tr><td>vat12</td><td>ПДВ за ставкою 12%</td></tr><tr><td>vat16</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\) **method** або **payment\_method** - (два варіанти назви, необов'язковий параметр) ознака способу розрахунку.&#x20;

<table><thead><tr><th width="345" align="center">Можливі значення параметра:</th><th>Що означає значення: </th></tr></thead><tbody><tr><td align="center">full_prepayment</td><td>передоплата 100%. Повна попередня оплата до моменту передання предмета розрахунку</td></tr><tr><td align="center">prepayment</td><td>передоплата. Часткова попередня оплата до моменту передання предмета розрахунку</td></tr><tr><td align="center">advance</td><td>аванс</td></tr><tr><td align="center">full_payment </td><td>повний розрахунок. Повна оплата, у тому числі з урахуванням авансу (попередньої оплати) в момент передання предмета розрахунку;</td></tr><tr><td align="center">partial_payment </td><td>частковий розрахунок і кредит. Часткова оплата предмета розрахунку в момент його передання з подальшою оплатою в кредит;</td></tr><tr><td align="center">credit </td><td>передання в кредит. Передання предмета розрахунку без його оплати в момент його передання з подальшою оплатою в кредит;</td></tr><tr><td align="center">credit_payment</td><td>оплата кредиту. Оплата предмета розрахунку після його передання з оплатою в кредит (оплата кредиту).</td></tr></tbody></table>

6\) **object** або **payment\_object** - (два варіанти назви, необов’язковий параметр) предмет розрахунку (якщо не передати, буде commodity (товар))

<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/45b5c4c184a6d9e3db4105a2596db6f07e6e8a9a" alt=""><figcaption></figcaption></figure></div>

Заповніть у розділі "Еквайринг" в налаштуваннях платіжної системи (якщо не зробили це раніше) поле "Ставка ПДВ".

<div data-with-frame="true"><figure><img src="/files/ce73c48ffd86973786ce610075a86a75ef8fd619" 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/7d336a0316c3367177e6388b6a5a54ad5119a2b4" alt=""><figcaption></figcaption></figure></div>

Далі в налаштуваннях кнопки знайдіть чекбокс "Автоплатежі" і активуйте його:

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

Якщо ви хочете приймати автоплатежі в усіх кнопках на оплату, то увімкнути автоплатежі можна в налаштуваннях підключення платіжної системи:

<div data-with-frame="true"><figure><img src="/files/704c31108a834cd05eff690be68c2cd2ece01589" 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/bd3449907eb24f867263366615db2eba627cf951)
{% endhint %}

<div data-with-frame="true"><figure><img src="/files/0b1ff9d5f06a2a01963c8ed34a46e4d6ba3af49a" 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/9af6ed0577ef043e0898d089db348a46a971eb5c" alt=""><figcaption></figcaption></figure></div>

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

1. **payment\_amount** - сума до оплати (вартість товару в рублях)
2. **description** - найменування товару. У цьому полі можна використовувати лише символи англійського або українського алфавіту, цифри та знаки пунктуації. Максимальна довжина — 100 символів. Ця інформація відображається в інтерфейсі Robokassa та в Електронній квитанції, яку отримує клієнт після успішного платежу.&#x20;
3. **country** - доменна зона (‘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/cf4dfa849a5dbb94eca3a76bdf4d9e4b6dd249f2" 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/e4e048266f73df540aabdfb12792250cc1ae9bf5" alt=""><figcaption><p>Петля — повторний перехід у блок Автоплатіж</p></figcaption></figure></div>

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

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

### Звичайний платіж при увімкнених автоплатежах

Якщо увімкнено автоплатежі, але потрібне посилання без підписки (без автоплатежів), то до формування посилання потрібно задати змінну robokassa\_manual\_recurrent\_disable зі значенням 1\
\
У полі Калькулятор оголосимо змінну:\
`robokassa_manual_recurrent_disable = 1`

<div data-with-frame="true"><figure><img src="/files/5327ec9af8356f83a59a954dde9aebc4a0d2f250" 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. Користувач натискає кнопку /start.
3. Користувач отримує відповідь від бота «Введіть ID магазину».
4. Необхідно ввести id від магазину в сервісі Robokassa.
5. Бот попросить підтвердження, що підтверджує володіння магазином, шляхом надсилання SMS на номер, вказаний у магазині: «Надіслано SMS на номер \*%%%%», де %%%% — останні 4 цифри телефону
6. Користувач вводить 6-значний код.
7. Якщо все успішно, користувачеві буде показано повідомлення: “Ви успішно підключили бота @BotName до Robokassa. @BotFather повідомить вам новий токен.”
8. Після цього в BotFather з’являється платіжний токен, до якого підключаються платежі.

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

1. Під час вибору Connect Robokassa Live користувач переходить у бота RobokassaPaymentBot,
2. Користувач натискає кнопку /start.
3. Користувач отримує відповідь від бота «Введіть ID магазину».
4. Необхідно ввести id від магазину в сервісі Robokassa.
5. Бот попросить підтвердження, що підтверджує володіння магазином, шляхом надсилання SMS на номер, вказаний у магазині: «Надіслано SMS на номер \*%%%%», де %%%% — останні 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, and the optional `goal` query parameter:

```
GET https://docs.mavibot.ai/doc/uk/integrations/payment/robokassa-kz.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
