Robokassa (KZ)
Як налаштувати Robokassa
Розглянемо, як реалізувати прийом оплат у боті через сервіс Robokassa.
Створіть інтернет-магазин в особистому кабінеті сервісу 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

Створіть тестові паролі та початкове налаштування виконуйте в тестовому режимі.
Як підключити Robokassa до MaviBot?
Перейдіть у розділ "Еквайринг" і натисніть "Підключити" на плашці Robokassa:

і заповніть форму у відкритому вікні:
Поле Ідентифікатор магазину — Shop ID, який ви можете знайти в налаштуваннях магазину в особистому кабінеті Robokassa.
Паролі #1, пароль #2 — унікальні згенеровані послідовності цифр+літер.
поле Ставка ПДВ. Необхідно вказати відповідний код для передання значення ПДВ. Це поле встановлює податкову ставку в ККТ. Визначається для кожного виду товару окремо, але для всіх одиниць конкретного товару разом.
Застосовується зі значеннями:
Без ПДВ.
ПДВ за ставкою 0%.
ПДВ за ставкою 5%
ПДВ чека за розрахунковою ставкою 12%.
ПДВ чека за розрахунковою ставкою 16%.
Як сформувати посилання на оплату
Сформувати посилання на оплату в блоці можна ОДНИМ ІЗ доступних способів:
Створення посилання за допомогою змінної payment_sum та додаткових параметрів (застаріла робоча версія)
Кнопка з функцією Оплата
Посилання на оплату можна створювати в кнопці з функцією "Оплата".
Як створити кнопку з функцією "Оплата", розповіли тут
Розглянемо всі можливі параметри цієї кнопки. Про те, як створювати кнопку з функцією Оплата, розповіли в цій статті:
Обов'язкові параметри кнопки Оплата
Для формування посилання на оплату в налаштуваннях кнопки необхідно вказати обов'язкові параметри: Сума та Найменування товару.

поле Сума. У цьому полі вказуємо вартість товару в рублях
поле Найменування товару. У цьому полі можна використовувати лише символи англійського або українського алфавіту, цифри та розділові знаки. Максимальна довжина — 100 символів. Ця інформація відображається в інтерфейсі Robokassa та в Електронній квитанції, яку отримує клієнт після успішного платежу.
НЕ МОЖНА використовувати подвійні лапки у найменуванні товару: видаліть або замініть на одинарні лапки.
чекбокс Автоплатіж. Для підключення автоплатежу
чекбокс З повідомленням про клік. Для відстеження переходу за посиланням для оплати можна поставити позначку. У такому разі, при кліку по кнопці в діалог із клієнтом у Сейлбот надійде повідомлення про те, що було здійснено перехід за посиланням
На це повідомлення можна налаштувати подальшу логіку роботи бота.
Багато платіжних систем підтримують хмарні онлайн-каси, вони необхідні за 54-ФЗ. Прочитайте особливості оформлення чеків на сайті обраної платіжної системи, щоб не потрапити в незручну ситуацію з податковою інспекцією.
Для формування чека
меню Дані для формування чека. При кліку відкриється випадаюче меню з параметрами для формування чека:

поле Назва товару. Обов'язкове для формування чека.
НЕ МОЖНА використовувати подвійні лапки у Назві товару: видаліть або замініть на одинарні лапки.
поле Повна сума в рублях. У цьому полі необхідно вказати суму до сплати з урахуванням кількості товарів. Якщо кількість дорівнює 1, то Повна сума в рублях дорівнює значенню в полі Сума в обов'язковому полі налаштування кнопки
поле Кількість. Кількість або вага товару. Передати можна ціле або дробове число через крапку. Приклад: 5 або 10.3
Змінні клієнта, які будуть створені автоматично під час використання кнопки з функцією Оплата
Щойно користувач отримає блок із кнопкою "Оплата", автоматично будуть створені змінні клієнта:

Службова змінна клієнта __payments , яка зберігає суму, ідентифікатор створеного посилання, потрібна для ідентифікації хука від платіжної системи.
Службову змінну клієнта __payments НЕ МОЖНА видаляти або змінювати!
Змінна клієнта error_payment_button створюється, якщо під час формування кнопки виникла помилка.
У значення змінної error_payment_button буде записано або текст помилки, або відповідь платіжної системи з помилкою.
Значення змінних стають актуальними при переході до наступного блоку
Як обробити результат
Звертаємо увагу!
Robokassa надсилає повідомлення лише про успішні транзакції за параметром Result URL. Колбеків про неуспішні платежі в сервісі Robokassa немає.
Fail URL — це лише сторінка неуспішної оплати, куди буде перенаправлено платника в разі виникнення кодової помилки на платіжній сторінці.
Успішний платіж.
Після того, як ви правильно налаштуєте оплату та сформуєте посилання для проведення платежу, протестуйте створені налаштування. Якщо оплата пройде успішно, то в діалог клієнта (розділ "Клієнти") АВТОМАТИЧНО надійде КОЛБЕК, який складається з 10 символів секретного ключа платіжної системи, слова _success і через пробіл суми платежу. Колбек генерується автоматично, його не треба складати самостійно або запитувати в підтримці платіжної системи,


Наприклад: ovg58keefc_success 2999, де:
ovg58keefc : 10 символів секретного ключа платіжної системи
_success : результат обробки запиту (успішний платіж)
2999 : сума платежу
Спрацювання блоку:

Колбек:

Колбеки (повідомлення) від платіжної системи користувач НЕ БАЧИТЬ. Вони відображаються лише у вкладці "Клієнти" і видні оператору/адміністратору.
Приклад налаштування реакції на колбек
У блоці з умовою (це може бути як блок "Початкова умова", так і блок "Не стан з умовою") необхідно вказати колбек, який надходить при оплаті.
Важливо: вибір відповідності Повний збіг або За наявністю ключових слів

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

Платіж з помилкою
Якщо сума, зазначена в налаштуваннях кнопки відрізняється від суми, яку клієнт сплатив, у бота АВТОМАТИЧНО надійде КОЛБЕК, який складається з 10 символів секретного ключа платіжної системи, слова _different_amounts і через пробіл унікального ID платежу
Наприклад: ovg58keefc_different_amounts 123456 , де:
ovg58keefc : 10 символів секретного ключа платіжної системи
_different_amounts : результат обробки запиту (сума оплати відрізняється від суми в посиланні)
123456 : унікальний ID платежу
Функція get_robokassa_payment_url у Калькуляторі
Для формування посилання на оплату можна скористатися функцією get_robokassa_payment_url у блоці Калькулятор.
У полі Калькулятор змінній присвоїмо значення функції get_robokassa_payment_url
Назву змінної задаєте самостійно. На скрінах — приклади назв змінних.
У цю змінну буде записано посилання на оплату. Змінну можна вивести на екран посиланням у повідомленні або розмістити в кнопці з текстом "Оплатити".
ПРИКЛАД посилання на оплату:: https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=test_salebot&OutSum=800&InvId=1412&IsTest=1&SignatureValue=0427369c3bd068bae30935f896060dda
Багато платіжних систем підтримують хмарні онлайн-каси, вони необхідні за 54-ФЗ. Прочитайте особливості оформлення чеків на сайті обраної платіжної системи, щоб не потрапити в незручну ситуацію з податковою інспекцією.
Приклад 1:

get_robokassa_payment_url(amount, description, products_for_receipt, taxation, recurrent, country, currency)
Параметри функції:
amount
Сума до оплати. У цьому полі вказуємо вартість товару в рублях.
(Обов'язковий параметр)
description
Найменування товару. У цьому полі можна використовувати лише символи англійського або українського алфавіту, цифри та розділові знаки. Максимальна довжина — 100 символів. Ця інформація відображається в інтерфейсі Robokassa та в Електронній квитанції, яку отримує клієнт після успішного платежу. (Обов'язковий параметр)
products_for_
receipt
Параметри для формування чеків.
Докладніше читайте тут.
taxation
Система оподаткування.
Докладніше читайте тут.
recurrent
Підключення автоплатежу. Якщо автоплатіж увімкнено, то передайте значення 1, якщо вимкнено — передайте значення None
country
Доменна зона. Якщо пропустити значення або передати значення None, то за замовчуванням доменна зона буде .ru. Посилання матиме вигляд robokassa.ru. Для Казахстану можна передати значення 'kz' . У цьому випадку посилання матиме вигляд robokassa.kz
currency
Тризначний код валюти.
Необхідно передавати значення строго за параметрами, які приймає сервіс Robokassa. USD - долар; RUB - рубль; EUR - євро; KZT - тенге.
Приклад 1: Посилання на оплату без чека
res = get_robokassa_payment_url(100, 'Купи мене')
Приклад 2: Посилання на оплату з чеком
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)
Змінну можна вивести на екран посиланням у повідомленні або розмістити в кнопці з текстом, наприклад, "Купити".
Якщо в блоці кілька функцій для отримання посилання і допущено помилку, то значення помилки буде записано в змінній error_payment_func
Помилка буде записана за останньою функцією в Калькуляторі
Після того, як ви правильно налаштуєте оплату та сформуєте посилання для проведення платежу, протестуйте створені налаштування.
Як додати опис платежу
Ви можете додати опис до платежу, встановивши змінну payment_description

Цей опис відображатиметься у формі оплати, а також на чеку.
Як обробити результат
Якщо оплата пройде успішно, то в діалог клієнта (розділ "Клієнти") АВТОМАТИЧНО надійде КОЛБЕК, який складається з 10 символів секретного ключа платіжної системи, слова _success і через пробіл суми платежу. Колбек генерується автоматично, його не треба складати самостійно або запитувати в підтримці платіжної системи,
Наприклад: ovg58keefc_success 1500, де:
ovg58keefc : 10 символів секретного ключа платіжної системи
_success : результат обробки запиту (успішний платіж)
1500 : сума платежу
Звертаємо увагу!
Колбек видно лише вам у діалозі з клієнтом.
Клієнт не бачить колбек, але ви можете налаштувати реакцію на успішну обробку платежу.
Приклад
Налаштування блоку з функцією get_robokassa_payment_url:
Якщо видаєте посилання в тексті:

Спрацювання блоку:

Важливо!
Посилання на оплату є унікальним: його не можна скопіювати й потім надсилати іншим клієнтам!
Надсилайте посилання на оплату через змінну в боті (див. рис. 17).
Колбек при успішній оплаті:

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

Спрацювання блоку:

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

Створення посилання за допомогою змінної payment_sum та додаткових параметрів
Приймати оплату ви також можете, генеруючи посилання за допомогою змінної payment_sum, у якій достатньо вказати суму платежу.
Зверніть увагу: змінній payment_sum присвоюється значення останньої, після необов'язкових змінних payment_description, product_name тощо.
Для генерації посилання на оплату вам необхідно встановити значення змінної payment_sum, після цього одразу з'явиться змінна robokassa_pay_url. Цю змінну можна вивести на екран посиланням або розмістити на кнопці з текстом "Оплатити".

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

Важливо!
Посилання на оплату є унікальним: його не можна скопіювати й потім надсилати іншим клієнтам!
Надсилайте посилання на оплату через змінну в боті (див. рис. 23).
Щоб передавати посилання в кнопці, вкажіть змінну в кнопці в полі url:

Результат оплати при формуванні посилання на оплату через payment_sum
Після успішної оплати в бот надійде колбек. У системі ви бачите цей колбек як повідомлення від користувача, щоб їх не міг надіслати користувач, вони складаються з першого пароля від сервісу Robokassa та приписки зі статусом success, наприклад: qxgZ7zkNX4HHnG8UpZ61_success.

Також після успішної оплати змінна robokassa_payment_completed встановлюється в True.
Цей колбек НЕ БАЧИТЬ користувач, вони відображаються лише оператору
Тип порівняння має бути "Повний збіг"
Для здійснення повторного платежу обов'язково потрібно обнулити payment_sum, раніше сформоване посилання, і вже після цього перепризначити змінну payment_sum для отримання свіжого посилання Приклад обнулення змінних: robokassa_pay_url='' payment_sum=0
Після завершення оплати клієнту буде додано змінну robokassa_callback_data, що містить дані відповіді платіжної системи за здійсненою операцією. Із отриманого словника можна витягти необхідні дані за допомогою методу get.
Як створити тестову схему
Приклад схеми, яка дасть змогу протестувати й швидко почати роботу з сервісом Robokassa:

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

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


Схема спрацює таким чином:

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

Важливо!
Колбека про неуспішну оплату в Robokassa не існує.
Для цього додайте ще один блок з умовою, а в рядку з умовою пропишіть колбек виду "qxgZ7zkNX4HHnG8UpZ61_success":

Тип перевірки обов'язково встановіть "Повний збіг"
Схема працюватиме так:

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

Докладніше в розділі "Для формування чека".
За допомогою змінної payment_sum
Оскільки генерація посилання здійснюється в момент, коли ви встановили значення змінної payment_sum, вам необхідно задати змінні products_for_receipt та robokassa_sno.
Важливо:
при формуванні посилання через змінну payment_sum система оподаткування задається в змінній robokassa_sno.
payment_sum має дорівнювати загальній вартості всіх товарів (сума всіх параметрів sum).
Приклад:
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 згідно з описом нижче.
Функції підготують посилання з урахуванням товарної номенклатури та сформують запит на фіскалізацію.
Важливо:
Змінні taxation і products_for_receipt мають задаватися для кожного окремого платежу.
Сервіс Robokassa не зберігає ці параметри і не зможе провести фіскалізацію платежів, для яких не було передано номенклатуру.
products_for_receipt - масив, що містить товарну номенклатуру.
Кожна одиниця товару має бути представлена у вигляді словника, що містить параметри name, quantity, sum, tax, payment_method, payment_object і nomenclature_code.
! products_for_receipt потрібно вказати в такому форматі:
[
{"name": "Найменування товару", "quantity": "Кількість товару", "sum": "Вартість товару", "tax": "Ставка ПДВ"},
{"name": "Найменування товару 2", "quantity": "Кількість товару 2", "sum": "Вартість товару", "tax": "Ставка ПДВ"}
]
де,
1) name - найменування товару. Якщо в найменуванні товару ви використовуєте спеціальні символи, наприклад лапки, то їх обов'язково необхідно екранувати.
2) quantity - кількість або вага товару (ціле або дробове число через крапку)
3) sum або amount (обов'язковий, два варіанти назви) - повна сума в рублях за всю кількість цього товару з урахуванням усіх можливих знижок, бонусів і спеціальних цін.
4) tax або vat_code - (обов'язковий, два варіанти назви, значення залежить від назви) - ставка ПДВ. Цей параметр встановлює податкову ставку в ККТ.
none
без ПДВ
vat0
0%
vat10
10%
vat20
20%
vat110
10/110
vat120
20/120
vat5
5%
vat7
7%
vat105
5/105
vat107
7/107
'1'
Без ПДВ
'2'
ПДВ за ставкою 0%
'3'
ПДВ за ставкою 10%
'4'
ПДВ у чеку за ставкою 20%
'5'
ПДВ у чеку за розрахунковою ставкою 10/110
'6'
ПДВ у чеку за розрахунковою ставкою 20/120
'8'
ПДВ за ставкою 5%
'9'
ПДВ за ставкою 7%
'10'
ПДВ у чеку за розрахунковою ставкою 5/105
'11'
ПДВ у чеку за розрахунковою ставкою 7/107
5) метод або спосіб_оплати - (два варіанти назви, необов'язковий параметр) ознака способу розрахунку.
full_prepayment
100% передоплата. Повна попередня оплата до моменту передання предмета розрахунку
prepayment
передоплата. Часткова попередня оплата до моменту передання предмета розрахунку
advance
аванс
full_payment
повний розрахунок. Повна оплата, у тому числі з урахуванням авансу (попередньої оплати) в момент передання предмета розрахунку;
partial_payment
частковий розрахунок і кредит. Часткова оплата предмета розрахунку в момент його передання з подальшою оплатою в кредит;
credit
передання в кредит. Передання предмета розрахунку без його оплати в момент передання з подальшою оплатою в кредит;
credit_payment
оплата кредиту. Оплата предмета розрахунку після його передання з оплатою в кредит (оплата кредиту).
6) об'єкт або предмет_оплати - (два варіанти назви, необов'язковий параметр) предмет розрахунку (якщо не передати, буде commodity (товар))
commodity
Товар. Про товар, що реалізується, за винятком підакцизного товару (найменування та інші відомості, що описують товар)
excise
Підакцизний товар. Про підакцизний товар, що реалізується (найменування та інші відомості, що описують товар)
job
Робота. Про виконувану роботу (найменування та інші відомості, що описують роботу)
service
Послуга. Про надану послугу (найменування та інші відомості, що описують послугу)
gambling_bet
Ставка в азартній грі. Про приймання ставок під час здійснення діяльності з проведення азартних ігор
gambling_prize
виграш азартної гри. Про виплату грошових коштів у вигляді виграшу під час здійснення діяльності з проведення азартних ігор
lottery
лотерейний білет. Про приймання грошових коштів під час реалізації лотерейних білетів, електронних лотерейних білетів, приймання лотерейних ставок під час здійснення діяльності з проведення лотерей
lottery_prize
виграш лотереї. Про виплату грошових коштів у вигляді виграшу під час здійснення діяльності з проведення лотерей
intellectual_activity
надання результатів інтелектуальної діяльності. Про надання прав на використання результатів інтелектуальної діяльності або засобів індивідуалізації
payment
платіж. Про аванс, завдаток, передоплату, кредит, внесок у рахунок оплати, пеню, штраф, винагороду, бонус та інший аналогічний предмет розрахунку
agent_commission
агентська винагорода. Про винагороду користувача, який є платіжним агентом (субагентом), банківським платіжним агентом (субагентом), комісіонером, повіреним або іншим агентом;
composite
складовий предмет розрахунку. Про предмет розрахунку, що складається з предметів, кожному з яких може бути присвоєне значення вищезазначених ознак
another
інший предмет розрахунку. Про предмет розрахунку, що не належить до вищезазначених предметів розрахунку
property_right
майнове право
non-operating_gain
позареалізаційний дохід
insurance_premium
страхові внески
sales_tax
торговий збір
resort_fee
курортний збір
7) nomenclature_code - (умовно обов'язковий) маркування товару: передається у тому вигляді, як його надруковано на упаковці товару.
Параметр є обов'язковим лише для тих магазинів, які продають товари, що підлягають обов'язковому маркуванню.
Код маркування розташований на упаковці товару, поруч зі штрих-кодом або у вигляді QR-коду.
taxation — система оподаткування, яку використовує магазин. Необов'язкове поле, якщо в організації є лише один тип оподаткування. Може приймати рядкові та числові значення:
osn – загальна СНО
"1" - Загальна система оподаткування
usn_income – спрощена СНО (доходи);
"2" - Спрощена (УСН, доходи)
usn_income_outcome – спрощена СНО (доходи мінус витрати);
"3" - Спрощена (УСН, доходи мінус витрати)
esn – єдиний сільськогосподарський податок;
"5" - Єдиний сільськогосподарський податок (ЄСГП)
patent – патентна СНО.
"6" - Патентна система оподаткування
Важливо! Для фіскалізації важливо передати параметри чека.
Правильний формат чека передається таким чином:
rec = [{"name": "Пакет 1 місяць", "quantity": 1, "sum": 4800, "tax": "none"}]
response = robokassa_recurrent_payment(4800, 'Навчання в Льотній школі Авіатор', 'ru', rec, 'osn')
де потрібно підставити свої дані.
Формування чека під час приймання оплати в Курсах на сторінці курсу
Потрібно вибрати в розділі "Оплата" в налаштуваннях курсу платіжну систему Robokassa:

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

Які можуть бути помилки
Код помилки 40
«Повторна оплата рахунку з тим самим номером неможлива».
Після успішного платежу необхідно перевести діалог у блок "Кінець збору даних", щоб сформувався новий номер платежу.
Код помилки 34
«Послуга рекурентних платежів не дозволена магазину».
Код помилки 31
«Невірна сума платежу».
Така помилка може виникнути під час перенаправлення клієнта на платіжну сторінку для виставлення рахунку. Вона означає, що ви не передаєте нам суму, на яку необхідно провести платіж, або передаєте суму, що дорівнює нулю.
Код помилки 29
«Невірний параметр Signature»
Тут причин може бути кілька, але всі вони пов'язані зі скриптом, що відповідає за ініціалізацію оплати (а точніше, його частина, яка формує параметр Signature за формулою, що складається зі змінних). Ця помилка трапляється доволі часто, і ось 3 можливі причини:
Перша: некоректний ідентифікатор магазину (MerchantLogin);
Друга: невірний Пароль 1 (MerchantPass1);
Третя: ви використовуєте додаткові параметри (shp_), які додано до програмного коду каси, але не внесено до формули підрахунку - або навпаки, у формулі підрахунку вони вказані, а в коді ні. Якщо такі використовуються, передавайте їх в алфавітному порядку – як у параметрах на оплату, так і у формулі підрахунку Signature.
Важливий момент! Якщо ви працюєте в тестовому режимі, передаючи параметр IsTest=1 або вмикаючи його прапорцем у налаштуваннях модуля/бота, використовуйте лише тестову пару технічних паролів (вкладка «Технічні налаштування» картки вашого магазину).
Код помилки 23
«Тестовий платіж не може бути створений. У магазину відсутні налаштування тестових параметрів».
Це означає, що перед проведенням тестового платежу ви не заповнили всі необхідні дані в блоці «Параметри проведення тестових платежів» вкладки «Технічні налаштування».
Код помилки 25
«Магазин не активовано».
Ця помилка трапляється нерідко, і тут можуть бути 2 причини.
Перша: це дійсно так — і необхідно активувати магазин, а лише потім виставляти рахунок.
Друга: ви неправильно вказали Ідентифікатор магазину в технічних налаштуваннях на сайті. Переглянути правильний можна в розділі «Мої магазини» Особистого кабінету. Перейдіть у вкладку «Технічні налаштування» і знайдіть поле «Ідентифікатор магазину». Скопіюйте ідентифікатор і введіть його в налаштуваннях сайту.
Як проводити автоматичні платежі сервісу Robokassa
Покрокова інструкція підключення автоплатежів для сервісу Robokassa
Крок 1. Увімкнути автоплатежі в кнопці оплати
Перейдіть до налаштувань блоку, в якому даєте посилання на оплату, і перейдіть до налаштувань кнопки:

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

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

Крок 2. Провести звичайний платіж. Далі потрібно провести звичайний платіж (отримати посилання на оплату і щоб клієнт його оплатив), як описано вище. Після успішного платежу у клієнта з'явиться змінна robokassa_previous_invoice_id з ідентифікатором платежу.
Змінна robokassa_previous_invoice_id є обов'язковою для наступних платежів. Якщо її видалити, наступний автоплатіж провести НЕ вийде.
Звертаємо увагу!
Вимкніть прапорець "Платежі в тестовому режимі" (якщо він у вас активний), інакше змінна robokassa_previous_invoice_id з ідентифікатором платежу не буде сформована!


Крок 3. Плануємо автосписання
Від блоку Успішна оплата плануємо стрілку з таймером до блоку з автоплатежем. Для прикладу сплануємо наступний платіж через 30 днів.

Щоб відбувся автоплатіж у потрібному блоці в полі Калькулятор, потрібно додати виклик функції robokassa_recurrent_payment, передавши в неї параметри в зазначеному порядку:
payment_amount - сума до оплати (вартість товару в рублях)
description - найменування товару. У цьому полі можна використовувати лише символи англійського або українського алфавіту, цифри та розділові знаки. Максимальна довжина — 100 символів. Ця інформація відображається в інтерфейсі Robokassa та в Електронній квитанції, яку клієнт отримує після успішного платежу.
country - доменна зона (‘ru’ або ‘kz’)
products_for_receipt - параметри для формування чеків.
Докладніше в розділі "Як сформувати запит на фіскалізацію -> Для функцій get_robokassa_payment_url і robokassa_recurrent_payment
taxation - система оподаткування.
Докладніше в розділі "Як сформувати запит на фіскалізацію -> Для функцій get_robokassa_payment_url і robokassa_recurrent_payment
Приклад запиту на автоплатіж:

Під час виконання автоплатежу не має бути посилання на оплату Robokassa і змінної payment_sum!
Крок 4. Плануємо регулярні списання та налаштовуємо можливість відмовитися від автоплатежів. Для регулярного повтору платежів плануємо петлю - стрілку із затримкою, наприклад, 30 днів.

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

Звичайний платіж при увімкнених автоплатежах
Якщо автоплатежі увімкнено, але потрібне посилання без підписки (без автоплатежів), то до формування посилання потрібно задати змінну robokassa_manual_recurrent_disable зі значенням 1
У полі Калькулятор оголосимо змінну:
robokassa_manual_recurrent_disable = 1

Увага!
Колбек при автоплатежах ідентичний колбеку, який надходить при успішних оплатах.
Як налаштувати реакцію на колбек, розповіли в розділі "Як обробити результат"
Які вимоги сервісу Robokassa до чат-ботів
Офіційна відповідь сервісу Robokassa:
Ви можете розмістити товар на маркеті з описом і цінником та приймати оплату в боті, можете зробити односторінковий сайт з описом, цінником, контактними даними та вказівкою, що доставка товару/надання послуги є електронною. У нас має бути прив'язка до товару на маркеті або до сайту, оскільки що ви продаєте у своєму боті і в якому боті ми — ми не можемо знати.
Посилання на телеграм-канал як URL ми не включаємо. Також вимоги до наповнення сайту: "Сайт має бути функціонуючим, із заповненим контентом, робочими внутрішніми посиланнями.
Товари й послуги на Вашому сайті мають бути докладно описані: Опис має містити характеристики запропонованих товарів і послуг, їхні споживчі властивості та актуальну ціну.
На Вашому сайті обов'язково має бути розміщена актуальна інформація: телефон, e-mail, правила оформлення та строки виконання замовлення, умови його оплати, доставки та повернення.
Кожен сайт розглядається індивідуально.
Robokassa у Telegram
Підключення тестового бота RobokassaPaymentTestBot.
Під час вибору Connect Robokassa Test користувач переходить до бота RobokassaPaymentTestBot.
Користувач натискає кнопку /start.
Користувач отримує відповідь від бота «Введіть ID магазину».
Необхідно ввести id магазину в сервісі Robokassa.
Бот попросить підтвердження, що підтверджує володіння магазином, шляхом надсилання SMS на номер, зазначений у магазині: «Надіслано SMS на номер *%%%%», де %%%% — останні 4 цифри телефона
Користувач вводить 6-значний код.
Якщо все успішно, користувачеві буде показано повідомлення: “Ви успішно підключили бота @BotName до Robokassa. @BotFather повідомить вам новий токен.”
Після цього в BotFather з'являється платіжний токен, до якого підключаються платежі.
Підключення live-бота RobokassaPaymentBot.
Під час вибору Connect Robokassa Live користувач переходить до бота RobokassaPaymentBot,
Користувач натискає кнопку /start.
Користувач отримує відповідь від бота «Введіть ID магазину».
Необхідно ввести id магазину в сервісі Robokassa.
Бот попросить підтвердження, що підтверджує володіння магазином, шляхом надсилання SMS на номер, зазначений у магазині: «Надіслано SMS на номер *%%%%», де %%%% — останні 4 цифри телефона
Користувач вводить 6-значний код.
Якщо все успішно, користувачеві буде показано повідомлення: “Ви успішно підключили бота @BotName до Robokassa. @BotFather повідомить вам новий токен.”
Після цього в BotFather з'являється платіжний токен, до якого підключаються платежі.
Обробка результатів оплати аналогічна описаному тут
Останнє оновлення