Робокасса
Вы можете организовать прием платежей в бота используя платежный агрегатор Робокасса
Всем, зарегистрировавшимся по ссылке(или промокоду), предоставляются лояльные стартовые условия в виде тарифного плана «Реальный» (2.9%) сроком на 3 календарных месяца.
Промокод: 01spirin
https://partner.robokassa.ru/Reg/Register?PromoCode=01spirin&culture=ru
Робокасса больше не работает с физическими лицами.
Как настроить Робокассу
Рассмотрим как реализовать прием оплат в боте через сервис Робокасса.
Создайте интернет магазин в личном кабинете Робокассы и укажите данные технические настройки:
- Алгоритм расчета хеша: MD5 - Result Url: https://chatter.salebot.pro/robokassa_callback/result - Метод отсылки данных по Result Url: GET - Success Url: https://chatter.salebot.pro/robokassa_callback/success - Метод отсылки данных по Success Url: GET - Fail Url: https://chatter.salebot.pro/robokassa_callback/fail - Метод отсылки данных по Fail Url: GET (Рисунок 1)
Создайте тестовые пароли и первоначальную настройку проводите в тестовом режиме.
Как настроить Salebot
Зайдите в Платежные системы - Робокасса и заполните форму в Salebot.pro:
На этом подключение закончено. Теперь давайте разберемся как использовать данный функционал.
Как сформировать ссылку на оплату
Сформировать ссылку на оплату в блоке можно ОДНИМ ИЗ из доступных способов:
Создание ссылки с помощью переменной payment_sum и дополнительных параметров (устаревшая работающая версия)
Кнопка с функцией Оплата
Ссылку на оплату можно создавать в кнопке с функцией "Оплата". О том как создавать такую кнопку рассказано в этой статье:
Рассмотрим все возможные параметры данной кнопки. О том как создавать кнопку с функцией Оплата рассказано в этой статье:
Обязательные параметры кнопки Оплата для Робокассы
Для формирования ссылки на оплату в настройках кнопки необходимо указать обязательные параметры: Сумма и Наименование товара.
поле Сумма. В этом поле указываем стоимость товара в рублях
поле Наименование товара. В этом поле можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Максимальная длина — 100 символов. Эта информация отображается в интерфейсе Robokassa и в Электронной квитанции, которую получает клиент после успешного платежа.
НЕЛЬЗЯ использовать двойные кавычки в наименовании товара: удалите или замените на одинарные кавычки.
чекбокс Автоплатеж. Для подключения автоплатежа
Многие платежные системы поддерживают облачные онлайн-кассы, они необходимы по 54-ФЗ. Прочитайте особенности оформления чеков на сайте выбранной платежной системы, чтобы не попасть в неловкую ситуацию с налоговой инспекцией.
меню Данные для формирования чека. При клике откроется выпадающее меню с параметрами для формирования чека:
Название товара
Полная сумма в рублях
Количество
Ставка НДС
Система налогообложения
меню Дополнительная информация. При клике откроется выпадающее меню для формирования ссылки:
Доменная зона
чекбокс С уведомление о клике. Для отслеживания перехода по ссылке для оплаты можно поставить галочку. В таком случае, при клике по кнопке в диалог с клиентом в Сейлбот придет уведомление о том, что был совершен переход по ссылке
На данное уведомление можно настраивать дальнейшую логику работы бота.
Дополнительные параметры для формирования чека и ссылки на оплату
меню "Данные для формирования чека" .
При клике откроется выпадающее меню с параметрами для формирования чека:
поле Название товара. Обязательное для формирования чека.
НЕЛЬЗЯ использовать двойные кавычки в Названии товара: удалите или замените на одинарные кавычки.
поле Полная сумма в рублях. В данном поле необходимо указать сумму к оплате с учетом количества товаров. Если количество равно 1, то Полная сумма в рублях равна значению в поле Сумма в обязательном поле настройки кнопки
поле Количество. Количество или вес товара. Передать можно целое или дробное число через точку. Пример, 5 или 10.3
поле Ставка НДС. Необходимо указать подходящий код для передачи значения НДС. Например,
none
- если без НДС или
vat0
- если ставка НДС 0% .
Доступные варианты ставки НДС:
none — без НДС
vat0 — 0%
vat10 — 10%
vat20 — 20%
vat110 — 10/110
vat120 — 20/120
поле Система налогообложения. Можно выбрать систему налогообложения, которая будет передана в чеке. Необязательное поле, если у организации имеется только один тип налогообложения. (Данный параметр обзятально задается в личном кабинете магазина)
выпадающее меню "Дополнительная информация"
При клике откроется выпадающее меню с дополнительными параметрами для формирования ссылки:
поле Доменная зона. Доступные значения ru и kz. По умолчанию ru. Ссылка будет иметь вид robokassa.ru. Для Казахстана можно указать значение kz. В этом случае ссылка будет иметь вид robokassa.kz
Переменные клиента, которые будут созданы автоматически при использовании кнопки с функцией Оплата
Как только пользователь получит блок с кнопкой "Оплата" автоматически будут созданы переменные клиента:
Служебная переменная клиента __payments
, которая хранит сумму, идентификатор созданной ссылки, нужна для идентификации хука от платежной системы.
Служебную переменную клиента __payments НЕЛЬЗЯ удалять или изменять!
Переменная клиента error_payment_button
создается, если при формировании кнопки возникла ошибка.
В значение переменной error_payment_button запишется либо текст ошибки, либо ответ платежной системы с ошибкой.
Значение переменных становятся актуальными при переходе в следующий блок
Как обработать результат
Успешный платеж.
После того, как вы верно настроите оплату и сформируете ссылку для проведения платежа, протестируйте созданные настройки. Если оплата пройдет успешно, то в диалог клиента (раздел "Клиенты") АВТОМАТИЧЕСКИ придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _success и через пробел сумма платежа. Колбэк генерируется автоматически, его не надо составлять самим или запрашивать в поддержке платежной системы,
Например: ovg58keefc_success 44
, где:
ovg58keefc : 10 символов секретного ключа платежной системы
_success : результат обработки запроса (успешный платеж)
44 : сумма платежа
Колбеки (уведомления) от платежной системы пользователь НЕ ВИДИТ. Они отображаются только во вкладке Клиенты и видны оператору.
Пример использования: Шаг 1. В блоке "с кнопкой Оплата" добавляем кнопки с функцией Оплата.
Шаг 2. В поле Условие соединения от этого блока к блоку "Успешная оплата" указываем колбэк. Аналогично работает, если указать колбэк об успешной оплате в поле Условие блока Первостепенной проверки условия.
Важно: выбор соответствия Полное совпадение или По наличию ключевых слов
Платеж с ошибкой
При ошибке проведения оплаты в бота АВТОМАТИЧЕСКИ придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _fail и через пробел сумма платежа
Например, ovg58keefc_fail 44
, где
ovg58keefc
: 10 символов секретного ключа платежной системы
_fail
: результат обработки запроса - платеж не выполнен или с ошибкой.
44
: сумма платежа
Зависит от платежной системы. Не все платежные системы присылают колбэк об ошибке платежа.
Если сумма указанная в настройках кнопки отличается от суммы, которую клиент оплатил, в бота АВТОМАТИЧЕСКИ придет КОЛБЭК, который состоит из 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:
Переменную можно вывести на экран ссылкой в сообщении или разместить в кнопке с текстом, например, "Купить".
Если в блоке несколько функций для получения ссылки и допущена ошибка, то значение ошибки будет записано в переменной error_payment_func
Ошибка запишется по последней функции в Калькуляторе
Создание ссылки с помощью переменной payment_sum и дополнительных параметров
Обратите внимание: переменной payment_sum присваивается значение последней, после необязательных переменных payment_description, product_name и т.д.
Для генерации ссылки на оплату, вам необходимо установить значение переменной payment_sum, сразу после этого появится переменная robokassa_pay_url. Эту переменную можно вывести на экран ссылкой или разместить на кнопке с текстом "Оплатить".
ПРИМЕР ссылки на оплату:
https://auth.robokassa.ru/Merchant/Index.aspx?MerchantLogin=test_salebot&OutSum=800&InvId=1412&IsTest=1&SignatureValue=0427369c3bd068bae30935f896060dda
Как получить уведомление о результате оплаты
После успешной оплаты в бот придет колбек. Этот колбек в системе вы видите как сообщение от пользователя, чтобы их не мог отправить пользователь, они состоят из первого пароля от робокассы и приписки со статусом success, например: qxgZ7zkNX4HHnG8UpZ61_success.Также после успешной оплаты переменная robokassa_payment_completed устанавливается в True. Если ссылка создана с помощью кнопки с функцией Оплата или функцией в калькуляторе после успешной оплаты в бота АВТОМАТИЧЕСКИ придет КОЛБЭК, который состоит из 10 символов секретного ключа платежной системы, слова _different_amounts и через пробел уникальный ID платежа
Например: ovg58keefc_different_amounts 123456
, где:
ovg58keefc
: 10 символов секретного ключа платежной системы
_different_amounts
: результат обработки запроса (сумма оплаты отличается от суммы в ссылке)
123456
: уникальный ID платежа
Этот колбек НЕ ВИДИТ пользователь, они отображаются только оператору
Тип сравнения должен быть "Полное совпадение"
Для совершения повторного платежа обязательно необходимо обнулить payment_sum, ранее сформированную ссылку и уже после переназначить переменную payment_sum для получения свежей ссылки Пример обнуления переменных: robokassa_pay_url='' payment_sum=0
После завершения оплаты клиенту добавится переменная robokassa_callback_data, содержащая данные ответа платежной системы по совершенной операции. Из полученного словаря можно извлечь необходимые данные при помощи метода get.
Как создать тестовую схему
Пример схемы, которая позволит протестировать и быстро начать работу с Робокассой:
На рисунке показан пример первого блока, в котором пользователя спрашивают, сколько он хочет оплатить.
На рисунке ниже настройки стрелки, в ней должен быть включен переключатель "Пользователь вводит данные" и в поле вписана переменная payment_sum:
Рисунок ниже - настройки следующего блока. Обратите внимание, переменная #{robokassa_pay_url} вставляется в разделе "Настройка вложений".
Далее блок первостепенной проверки, в условии которого прописываем qxgZ7zkNX4HHnG8UpZ61_success - колбек об успешной оплате.
Тип проверки обязательно поставьте "Полное совпадение"
Видеоурок
Как добавить описание платежа
Вы можете добавить описание к платежу, установив переменную payment_description
Это описание будет отображаться в форме оплаты, а также на чеке.
Как сформировать запрос на фискализацию
В кнопке с функцией “Оплата”
При создании кнопки в выпадающем меню “Данные для формирования чека”, заполните поля “Название товара”, “Полная сумма в рублях”, “Количество”, “Ставка НДС”, “Система налогообложения”.
Как сформировать запрос на фискализацию
Подробнее в разделе "Дополнительные параметры для формирования чека и ссылки на оплату".
С помощью переменной 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 - (обязательный, два варианта имени, значение зависит от имени) - ставка НДС. Этот параметр устанавливает налоговую ставку в ККТ.
5) method или payment_method - (два варианта имени, необязательный параметр) признак способа расчёта.
6) object или payment_object - (два варианта имени, необязательный параметр) предмет расчета (если не передать, будет commodity (товар))
7) nomenclature_code - (условно обязательный) маркировка товара: передаётся в том виде, как она напечатана на упаковке товара.
Параметр является обязательным только для тех магазинов, которые продают товары, подлежащие обязательной маркировке.
Код маркировки расположен на упаковке товара, рядом со штрих-кодом или в виде QR-кода.
taxation — система налогообложения, которую использует магазин. Необязательное поле, если у организации имеется только один тип налогообложения. Может принимать строковые и численные значения:
Важно! Для фискализации важно передать параметры чека.
Верный формат чека передается таким образом:
rec = [{"name": "Пакет 1 месяц", "quantity": 1, "sum": 4800, "tax": "none"}]
response = robokassa_recurrent_payment(4800, 'Обучение в Лётной школе Авиатор', 'ru', rec, 'osn')
где необходимо подставить свои данные.
Формирование чека при приеме оплаты в Курсах на странице курса
При активации приема оплаты в курсах поля для заполнения откроются автоматически - в них нужно выбрать подходящий вам вариант. Так чеки будут формироваться корректно.
Какие могут быть ошибки
Код ошибки 40
«Повторная оплата счета с тем же номером невозможна».
После успешного платежа необходимо перевести диалог в блок "Конец сбора данных", чтобы сформировался новый номер платежа.
Код ошибки 34
«Услуга рекуррентных платежей не разрешена магазину».
Код ошибки 31
«Неверная сумма платежа».
Такая ошибка может возникнуть при переадресации клиента на платежную страницу для выставления счета. Она означает, что вы не передаете нам сумму, на которую необходимо провести платеж, либо передаете сумму, равную нулю.
Код ошибки 29
«Неверный параметрSignature»
Здесь причин может быть несколько, но все они связаны со скриптом, отвечающим за инициализацию оплаты (а конкретнее, его часть, которая формирует параметрSignatureпо формуле, состоящей из переменных). Эта ошибка встречается довольно часто, и вот 3 возможных причины:
Первая: некорректный Идентификатор магазина (MerchantLogin);
Вторая: неверный Пароль 1 (MerchantPass1);
Третья: вы используете дополнительные параметры (shp_), которые добавлены в программный код кассы, но не занесены в формулу подсчета - или наоборот, в формуле подсчета они указаны, а в коде нет. Если таковые используются, передавайте их в алфавитном порядке – как в параметрах на оплату, так и в формуле подсчета Signature.
Важный момент! Если вы работаете в тестовом режиме, передавая параметр IsTest=1 или включая его галочкой в настройках модуля/бота, используйте только тестовую пару технических паролей (закладка «Технические настройки» карточки вашего магазина).
Код ошибки 23
«Тестовый платёж не может быть создан. У магазина отсутствуют настройки тестовых параметров».
Это значит, что перед проведением тестового платежа вы не заполнили все необходимые данные в блоке «Параметры проведения тестовых платежей» закладки «Технические настройки».
Код ошибки 25
«Магазин не активирован».
Эта ошибка встречается нередко, и здесь могут быть 2 причины.
Первая: это действительно так – и необходимо активировать магазин, а лишь потом выставлять счет.
Вторая: вы неверно указали Идентификатор магазина в технических настройках на сайте. Посмотреть правильный можно в разделе «Мои магазины» Личного кабинета. Перейдите в закладку «Технические настройки» и найдите поле «Идентификатор магазина». Скопируйте идентификатор и введите его в настройках сайта.
Как проводить автоматические платежи Робокассы
Пошаговая инструкция подключения автоплатежей для Робокассы
Шаг 1. Включить автоплатежи в настройках платежной системы в проекте Salebot. Переходим в раздел Платежные системы.
Нажимаем кнопку Подключено, у ранее подключенной RoboKassa, чтобы открыть настройки платежной системы. Включаем ползунок "Включить автоплатежи"
Шаг 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
Пример запроса на автоплатеж:
При выполнении автоплатежа не должно быть ссылки на оплату робокассы и переменной payment_sum!
Шаг 4. Планируем регулярные списания и настраиваем возможность отказаться от автоплатежей. Для регулярного повтора платежей планируем петлю - стрелку с задержкой, например, 30 дней.
Если у вас предусмотрена возможность отмены автоплатежей, то для того, чтобы следующий платеж не был выполнен необходимо удалить у клиента переменную robokassa_previous_invoice_id
Для этого в поле Калькулятор удаляем переменную:
robokassa_previous_invoice_id = ""
Обычный платеж при включенных автоплатежах
Если включены автоплатежи, но нужна ссылка без подписки (без автоплатежей), то до формирования ссылки нужно задать переменную robokassa_manual_recurrent_disable со значением 1
В поле Калькулятор объявим переменную:
robokassa_manual_recurrent_disable = 1
Какие требования Робокассы к чатботам
Официальный ответ Робокассы:
Вы можете разместить товар на маркете с описанием и ценником и принимать оплату в боте, можете сделать одностраничник с описанием, ценником, контактными данными и указанием, что доставка товара/оказания услуги электронное. У нас должна быть привязка к товару на маркете или к сайту, т.к. что Вы продаете продает в своем боте и в каком боте мы - мы не можем знать.
Ссылку на телеграммы канал в качестве URL мы не включаем. Также требования к наполнению сайта: "Сайт должен быть функционирующий, с заполненным контентом, работающими внутренними ссылками.
Товары и услуги на Вашем сайте должны быть подробно описаны: Описание должно включать характеристики предлагаемых товаров и услуг, их потребительские свойства и актуальную цену.
На Вашем сайте обязательно должна быть размещена актуальная информация: телефон, e-mail, правила оформления и сроки исполнения заказа, условия его оплаты, доставки и возврата.
Каждый сайт рассматривается индивидуально.
С уважением, ROBOKASSA.
Робокасса в Telegram
Подключение платежей в Telegram
Данный раздел рассмотрен тут
Подключение тестового бота RobokassaPaymentTestBot.
При выборе Connect Robokassa Test пользователь переходит в бота RobokassaPaymentTestBot.
Пользователь нажимает кнопку /начать.
Пользователь получает ответ от бота «Введите ID магазина”.
Необходимо ввести id от магазина в сервисе Robokassa.
Бот попросит подтверждение, подтверждающее владение магазином посредством отправки смс на номер, указанный в магазине: «Отправлена СМС на номер *%%%%» где %%%% - последние 4 цифры телефона
Пользователь вводит 6-значный код.
Если все успешно то пользователю покажется сообщение: “Вы успешно подключили бота @BotName к Robokassa. @BotFather сообщит Вам новый токен.”
После этого в BotFather появляется платежный токен, к которому подключаются платежи.
Подключение live- бота RobokassaPaymentBot.
При выборе Connect Robokassa Live пользователь переходит в бота RobokassaPaymentBot,
Пользователь нажимает кнопку /начать.
Пользователь получает ответ от бота «Введите ID магазина”.
Необходимо ввести id от магазина в сервисе Robokassa.
Бот попросит подтверждение, подтверждающее владение магазином посредством отправки смс на номер, указанный в магазине: «Отправлена СМС на номер *%%%%», где %%%% - последние 4 цифры телефона
Пользователь вводит 6-значный код.
Если все успешно то пользователю покажется сообщение: “Вы успешно подключили бота @BotName к Robokassa. @BotFather сообщит Вам новый токен.”
После этого в BotFather появляется платежный токен, к которому подключаются платежи.
Обработка результатов оплаты аналогична описанному тут
Last updated