Skip to content

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_idSecret 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.

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