Antilopay
Antilopay (кабинет lk.antilopay.com) — эквайринг с оплатой по СБП, картой и через SberPay. Бот создаёт платёж через POST /api/v2/payment/create и отправляет юзера на payment_url. Валюта — RUB.
Отличие от остальных шлюзов — RSA-подпись в обе стороны. Исходящий запрос бот подписывает своим приватным ключом: SHA256-RSA (PKCS#1 v1.5) по точному компактному JSON тела, base64-подпись уходит в заголовке X-Apay-Sign вместе с X-Apay-Sign-Version: 1 и X-Apay-Secret-Id. Вебхуки Antilopay подписывает своим ключом, бот проверяет их публичным ключом провайдера. В платёж кладётся свой payment_id (order_id и merchant_extra).
Что понадобится
Проект в кабинете Antilopay и четыре ключа из него: Secret ID, идентификатор проекта (project_identificator), ваш приватный RSA-ключ для подписи запросов и публичный ключ Antilopay для проверки вебхуков.
Настройка в кабинете
| Поле | Что это | Обязательное |
|---|---|---|
secret_id | Secret ID проекта — заголовок X-Apay-Secret-Id | да |
project_id | идентификатор проекта (project_identificator) | да |
private_key | ваш приватный RSA-ключ в формате base64 DER PKCS8 — подпись исходящих запросов | да |
public_key | публичный ключ Antilopay в PEM — проверка подписи вебхуков | да |
prefer_method | предпочтительная форма оплаты: SBP, CARD_RU или SBER_PAY; по умолчанию SBP | нет |
Все ключи хранятся в БД в зашифрованном виде. Включите тумблер активности провайдера. Кнопка Тест у этого шлюза проверочного запроса к API не делает — правильность ключей подтвердит первый платёж. Дополнительно настраиваются отображаемое имя, комиссия для статистики и формы оплаты, которые видит юзер (карта / СБП / SberPay).
Форматы ключей — не перепутать
private_key бот грузит как base64-строку DER PKCS8 (не PEM с BEGIN PRIVATE KEY), а public_key — наоборот, как PEM. Ключ не того формата или не-RSA → ошибка при создании платежа или 403 на каждом вебхуке.
Вебхук
https://ваш-домен/api/v1/payments/antilopayУкажите этот URL как адрес callback в кабинете Antilopay. Подпись приходит в заголовке X-Apay-Callback: RSA-SHA256 (PKCS#1 v1.5) по сырому телу запроса, base64. Бот проверяет её ключом из public_key; битая или отсутствующая подпись → HTTP 403.
Маппинг статуса из поля status:
| Статус Antilopay | Что делает бот |
|---|---|
SUCCESS | зачисляет платёж |
FAIL, CANCEL, CANCELLED, CANCELED, EXPIRED, CHARGEBACK, REVERSED | закрывает платёж как отменённый |
| остальные | оставляет в ожидании |
Суммой платежа бот считает original_amount — сумму до комиссии провайдера, поэтому комиссия Antilopay не роняет сверку суммы.
Особенности
- Возвраты по API, рекурренты и сохранённые карты не поддерживаются — возврат делаете в кабинете Antilopay, в боте фиксируете результат: /payments/refunds.
- Опроса статуса у этого шлюза нет — зачисление зависит только от вебхука.
- Сумма из вебхука сверяется со счётом: меньше 90% ожидаемого — платёж бракуется как недоплата.
- Покупателю подставляется синтетический e-mail вида
<telegram_id>@vpn.bot, тип товара —services;success_urlиfail_urlоба ведут на возврат в бота. - Подпись вебхука считается по сырым байтам тела — прокси/CDN, переписывающий JSON, будет ронять каждый вебхук в 403.
Платёж прошёл, а подписки нет?
У Antilopay нет API опроса статуса, поэтому реконсилятор этот шлюз не добьёт — единственный канал зачисления здесь вебхук. Если платежи виснут, проверьте callback-URL и public_key. Как устроен пайплайн вебхуков — /payments/webhooks.
