Skip to content

RollyPay

RollyPay (rollypay.io) — касса с оплатой картой, СБП и криптовалютой (в формах оплаты бота — СБП и крипта). Бот создаёт платёж через POST /api/v1/payments с API-ключом в заголовке X-API-Key, юзер уходит на pay_url и после оплаты возвращается по success_redirect_url. Валюта счёта — RUB, сумма передаётся строкой вида 199.00.

В платёж кладётся свой payment_id (order_id) — по нему вебхук привязывается к платежу; дополнительно сохраняется payment_id от RollyPay, по которому шлюз умеет опрашивать статус.

Что понадобится

Мерчант-аккаунт в RollyPay. Из кабинета нужны API-ключ (аутентификация запросов) и секрет подписи вебхуков (signing secret).

Настройка в кабинете

ПолеЧто этоОбязательное
api_keyAPI-ключ из кабинета RollyPay — заголовок X-API-Keyда
signing_secretсекрет подписи вебхуковда

Оба ключа хранятся в БД в зашифрованном виде. Включите тумблер активности провайдера. Кнопка Тест у этого шлюза проверочного запроса к API не делает — правильность ключей подтвердит первый платёж. Дополнительно настраиваются отображаемое имя, комиссия для статистики и формы оплаты, которые видит юзер (СБП / крипта).

Вебхук

https://ваш-домен/api/v1/payments/rollypay

Укажите этот URL как адрес уведомлений в кабинете RollyPay. Подпись приходит в заголовке X-Signature: HMAC-SHA256 с ключом signing_secret от строки {timestamp}.{сырое тело}, где timestamp берётся из заголовка X-Timestamp. Привязка подписи к времени отсекает replay-атаки. Оба заголовка обязательны; битая подпись → HTTP 403.

Маппинг статуса из поля status:

Статус RollyPayЧто делает бот
paidзачисляет платёж
expired, canceled, cancelled, chargebackзакрывает платёж как отменённый
остальныеоставляет в ожидании

Особенности

  • Шлюз умеет опрос статуса (GET /api/v1/payments/{id}) — реконсилятор сам добивает платежи с потерянным вебхуком.
  • Возвраты по API, рекурренты и сохранённые карты не поддерживаются — возврат делаете в кабинете RollyPay, в боте фиксируете результат: /payments/refunds.
  • chargeback закрывает платёж как отменённый — подписка при этом не отзывается автоматически, разбирайтесь руками.
  • Сумма из вебхука сверяется со счётом: меньше 90% ожидаемого — платёж бракуется как недоплата.
  • Описание платежа обрезается до 128 символов.

Платёж прошёл, а подписки нет?

Реконсилятор опрашивает RollyPay каждые 5 минут и сам зачисляет зависшие оплаты. Как это работает — /payments/webhooks.

MIT License · сделано для тех, кто продаёт VPN, а не настраивает ботов