RU ▾

Разработчику

Host-to-Host интеграция — прямое взаимодействие сервера с сервером. Вы создаёте счёт через API, получаете реквизиты и показываете их плательщику на своей стороне, без редиректа на CrocoPay.

3 эндпоинта 11 валют Header-аутентификация HMAC-подпись callback

Вы создаёте счёт через API, получаете реквизиты (карту, номер телефона или QR) и показываете их плательщику на своей стороне — без редиректа на CrocoPay.

Аутентификация

Все запросы требуют заголовки Client-Id и Client-Secret. Ключи доступны в разделе «Кассы» → иконка шестерни рядом с нужным мерчантом.

Client-Id: GnHqauRCUVtB8sECR7m
Client-Secret: vpBpXo7REyApkDnLIOpMR3lk1ndaLmY2qoZptV9cHOtjJLUDsW26GBSe2kda1IVQIMR758Z

1. Создать счёт

POST /api/v2/h2h/invoices

Создаёт новый счёт на оплату. В ответ возвращает ID счёта и платёжные реквизиты.

amount да Сумма платежа (целое число для валют СНГ)
currency да Валюта: RUB, UAH, UZS, KZT, TJS, AZN, KGS
payment_option да Метод оплаты (TO_CARD, SBP, QR_NSPK…)
callback_url нет URL для webhook-уведомления об оплате (POST)
success_url нет Куда перенаправить плательщика после успешной оплаты. Если не указан — плательщик увидит страницу CrocoPay с подтверждением
cancel_url нет Куда перенаправить плательщика, если он отменил оплату или счёт истёк. Если не указан — плательщик останется на странице CrocoPay
POST /api/v2/h2h/invoices HTTP/1.1
Host: crocopay.tech
Client-Id: GnHqauRCUVtB8sECR7m
Client-Secret: vpBpXo7REyApkDnLIOpMR3lk1ndaLmY2qoZptV9cHOtjJLUDsW26GBSe2kda1IVQIMR758Z
Content-Type: application/json

{
    "amount": 5000,
    "currency": "RUB",
    "payment_option": "TO_CARD",
    "callback_url": "https://example.com/payment?user_id=42",
    "success_url": "https://example.com/success",
    "cancel_url": "https://example.com/cancel"
}
Ответ — реквизиты карты (TO_CARD)
HTTP/1.1 200 OK

{
    "id": "911c2823-f55b-43b5-9881-d5653107f7dc",
    "status": "Pending",
    "amount": 5000,
    "currency": "RUB",
    "payment_option": "TO_CARD",
    "card": "4276 1234 5678 9012",
    "bank_receiver": "Сбербанк",
    "card_owner": "IVAN PETROV",
    "expires_at": "2026-09-15T12:30:00Z"
}
Ответ — реквизиты телефона (SBP / TRANSGRAN_SBER)
HTTP/1.1 200 OK

{
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "Pending",
    "amount": 5000,
    "currency": "RUB",
    "payment_option": "SBP",
    "card": "+79001234567",
    "bank_receiver": "Альфа-Банк",
    "card_owner": "ANNA SIDOROVA",
    "expires_at": "2026-09-15T12:30:00Z"
}
Ответ — ссылка вместо карты или телефона (QR_NSPK / диплинк)

Вместо номера карты или телефона в поле card может прийти ссылка (https://...): ссылка НСПК (https://qr.nspk.ru/...), диплинк в приложение банка или ссылка на платёжную страницу. Не показывайте её как номер — выведите плательщику кнопку «Оплатить» и/или QR-код с этой ссылкой. Если значение начинается с http:// или https:// — это ссылка.

HTTP/1.1 200 OK

{
    "id": "c3d4e5f6-a7b8-9012-cdef-345678901234",
    "status": "Pending",
    "amount": 2200,
    "currency": "RUB",
    "payment_option": "QR_NSPK",
    "card": "https://qr.nspk.ru/BD10106000000000000000000000000",
    "bank_receiver": "Система быстрых платежей",
    "card_owner": null,
    "expires_at": "2026-09-15T12:30:00Z"
}
Ответ — ошибка
HTTP/1.1 422 Unprocessable Entity

{
    "status": "error",
    "message": "payment_option TO_CARD is not enabled for currency UZS"
}

2. Получить счёт

GET /api/v2/h2h/invoices/{id}

Возвращает текущий статус и реквизиты счёта по его UUID — используйте для polling'а до момента оплаты.

Pending
Ожидает оплаты
Success
Оплачен
Expired
Истёк срок оплаты
Cancelled
Отменён
Failed
Ошибка при оплате

3. Доступные методы оплаты

GET /api/v2/h2h/payment-method/available

Возвращает список методов, доступных для вашей кассы — используйте перед созданием счёта.

HTTP/1.1 200 OK

{
    "methods": [
        { "currency": "RUB", "payment_option": "TO_CARD",       "name": "Карта (любой банк РФ)" },
        { "currency": "RUB", "payment_option": "SBP",            "name": "СБП (любой банк РФ)" },
        { "currency": "RUB", "payment_option": "SBP_ALFA",       "name": "СБП Альфа-Банк" },
        { "currency": "RUB", "payment_option": "QR_NSPK",        "name": "QR НСПК" },
        { "currency": "RUB", "payment_option": "TRANSGRAN_SBER", "name": "Трансгран · SberPay" },
        { "currency": "UAH", "payment_option": "TO_CARD",        "name": "Карта (Украина)" },
        { "currency": "UZS", "payment_option": "TO_CARD",        "name": "Карта (Узбекистан)" },
        { "currency": "TJS", "payment_option": "TO_CARD",        "name": "Карта (Таджикистан)" },
        { "currency": "AZN", "payment_option": "TO_CARD",        "name": "Карта (Азербайджан)" },
        { "currency": "KZT", "payment_option": "TO_CARD",        "name": "Карта (Казахстан)" },
        { "currency": "KGS", "payment_option": "TO_CARD",        "name": "Карта (Кыргызстан)" }
    ]
}

payment_option по валютам

Значение payment_option зависит от валюты. Доступность конкретного метода для вашей кассы уточняйте у менеджера.

RUB Россия
TO_CARD Перевод на банковскую карту (любой банк РФ) Номер карты
SBP Перевод по СБП — любой банк РФ Номер телефона
SBP_ALFA Перевод по СБП — Альфа-Банк Номер телефона
SBP_TBANK Перевод по СБП — Т-Банк Номер телефона
QR_NSPK Оплата по QR-коду НСПК QR-код
MOBILE_PHONE Пополнение мобильного телефона Номер телефона
TO_CARD_TRANSGRAN Трансграничный перевод на карту (любой банк) Номер карты
SBP_TRANSGRAN Трансграничный перевод по СБП (любой банк) Номер телефона
TRANSGRAN_ALFA Трансграничный — Альфа-Банк Карта / телефон
TRANSGRAN_VTB Трансграничный — ВТБ Карта / телефон
TRANSGRAN_SBER Трансграничный — SberPay Номер телефона
TRANSGRAN_TPAY Трансграничный — T-Pay (Т-Банк) Карта / телефон
UAH Украина
TO_CARD Перевод на банковскую карту (Украина) Номер карты
UZS Узбекистан
UZCARD Перевод на карту UzCard Номер карты
HUMO Перевод на карту Humo Номер карты
PAYME Перевод через Payme Карта / телефон
CLICK Перевод через Click Карта / телефон
KZT Казахстан
BANK_TRANSFER Банковский перевод (Казахстан) Номер карты
AZN Азербайджан
BANK_TRANSFER Банковский перевод (Азербайджан) Номер карты
TJS Таджикистан
KORTI_MILLI Перевод — Корти Милли Номер карты
DUSHANBE_CITY Перевод — Душанбе Сити Банк Номер карты
KGS Кыргызстан
TO_CARD Перевод на банковскую карту (Кыргызстан) Номер карты

Редирект плательщика

success_url
После успешной оплаты плательщик автоматически перенаправляется на указанный URL. Если параметр не передан — плательщик увидит страницу CrocoPay с подтверждением оплаты.
cancel_url
Если плательщик отменил оплату или счёт истёк — перенаправляется на этот URL. Если не передан — плательщик останется на странице CrocoPay.
Важно: редирект на success_url не является подтверждением оплаты — плательщик может подменить URL. Факт оплаты подтверждайте только через webhook (callback_url) с проверкой HMAC-подписи.

Webhook (Callback)

После успешной оплаты CrocoPay отправляет POST на ваш callback_url.

POST /payment?user_id=42 HTTP/1.1
Host: example.com
Content-Type: application/json

{
    "timestamp": 1753282096,
    "subtotal": 500000,
    "percentage": 0,
    "charge_percentage": 0,
    "charge_fixed": 0,
    "total": 500000,
    "sign": "ef5954715c663e3f96194a03981a0b04dd0772bfa5164afcdb507470c9c5078d"
}
Проверка подписи (PHP)
$expected = hash_hmac('sha256',
    "{$_POST['timestamp']}|{$_POST['subtotal']}|{$_POST['percentage']}|" .
    "{$_POST['charge_percentage']}|{$_POST['charge_fixed']}|{$_POST['total']}",
    $yourClientSecret
);

if (!hash_equals($expected, $_POST['sign'])) {
    http_response_code(403);
    exit('Invalid signature');
}
// платёж подтверждён
Нужны ключи доступа?
Зарегистрируйтесь — Client-Id и Client-Secret выдаются в разделе «Кассы».
Зарегистрироваться