AuraPay
AuraPay (app.aurapay.tech) — касса с оплатой по СБП и картой. Бот создаёт счёт через POST /invoice/create с ключами в заголовках X-ApiKey и X-ShopId, юзер уходит на payment_data.url и после оплаты возвращается по success_url. Валюта — RUB.
В счёт кладётся свой payment_id (order_id) — по нему вебхук привязывается к платежу. Какой способ оплаты открывает счёт, задаёт поле service в настройках (по умолчанию СБП).
Что понадобится
Магазин в кабинете AuraPay: API-ключ, ID магазина и секрет вебхуков.
Настройка в кабинете
| Поле | Что это | Обязательное |
|---|---|---|
api_key | API-ключ из кабинета AuraPay — заголовок X-ApiKey | да |
shop_id | ID магазина — заголовок X-ShopId | да |
webhook_secret | секрет подписи вебхуков | да |
service | способ оплаты, с которым создаётся счёт; по умолчанию sbp | нет |
Ключи хранятся в БД в зашифрованном виде. Включите тумблер активности провайдера. Кнопка Тест у этого шлюза проверочного запроса к API не делает — правильность ключей подтвердит первый платёж. Дополнительно настраиваются отображаемое имя, комиссия для статистики и формы оплаты, которые видит юзер (карта / СБП).
Вебхук
https://ваш-домен/api/v1/payments/aurapayУкажите этот URL как адрес уведомлений в кабинете AuraPay. Подпись приходит в заголовке X-SIGNATURE и считается необычно: HMAC-SHA256 с ключом webhook_secret от значений полей payload, склеенных в алфавитном порядке ключей (поле signature исключается, null превращается в пустую строку) — стиль PHP implode. Битая или отсутствующая подпись → HTTP 403.
Маппинг статуса из поля status:
| Статус AuraPay | Что делает бот |
|---|---|
PAID | зачисляет платёж |
EXPIRED, CANCELLED, CANCELED, FAILED | закрывает платёж как отменённый |
| остальные | оставляет в ожидании |
Особенности
- Возвраты по API, рекурренты и сохранённые карты не поддерживаются — возврат делаете в кабинете AuraPay, в боте фиксируете результат: /payments/refunds.
- Опроса статуса у этого шлюза нет — зачисление зависит только от вебхука.
- Сумма из вебхука сверяется со счётом: меньше 90% ожидаемого — платёж бракуется как недоплата.
- Подпись считается по значениям распарсенного JSON, а не по сырым байтам — прокси, переформатирующий тело, вебхуки здесь не ломает.
- Счёт создаётся с
lifetime: 60; комментарий обрезается до 128 символов;success_urlиfail_urlоба ведут на возврат в бота; вcustom_fieldsуходит внутренний ID юзера.
Платёж прошёл, а подписки нет?
У AuraPay нет API опроса статуса, поэтому реконсилятор этот шлюз не добьёт — единственный канал зачисления здесь вебхук. Если платежи виснут, проверьте URL уведомлений и webhook_secret. Как устроен пайплайн вебхуков — /payments/webhooks.
