ES ▾

Desarrolladores

Integración Host-to-Host — comunicación directa de servidor a servidor. Usted crea una factura por API, recibe los datos de pago y los muestra al pagador en su sitio, sin redirigir a CrocoPay.

3 endpoints 11 monedas Autenticación por cabeceras Callback firmado con HMAC

Usted crea una factura por API, recibe los datos de pago (tarjeta, teléfono o QR) y los muestra al pagador en su sitio — sin redirigir a CrocoPay.

Autenticación

Todas las solicitudes requieren las cabeceras Client-Id y Client-Secret. Encontrará las claves en «Tiendas» → el icono de engranaje junto al comercio.

Client-Id: GnHqauRCUVtB8sECR7m
Client-Secret: vpBpXo7REyApkDnLIOpMR3lk1ndaLmY2qoZptV9cHOtjJLUDsW26GBSe2kda1IVQIMR758Z

1. Crear una factura

POST /api/v2/h2h/invoices

Crea una nueva factura de pago. Devuelve el ID de la factura y los datos de pago.

amount sí Importe del pago (entero para monedas de la CEI)
currency sí Moneda: RUB, UAH, UZS, KZT, TJS, AZN, KGS
payment_option sí Método de pago (TO_CARD, SBP, QR_NSPK…)
callback_url no URL para la notificación webhook del pago (POST)
success_url no Adónde redirigir al pagador tras un pago correcto. Si se omite, el pagador verá una página de confirmación de CrocoPay
cancel_url no Adónde redirigir al pagador si cancela o la factura vence. Si se omite, el pagador se queda en la página de 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"
}
Respuesta — datos de tarjeta (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": "Sberbank",
    "card_owner": "IVAN PETROV",
    "expires_at": "2026-09-15T12:30:00Z"
}
Respuesta — datos de teléfono (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": "Alfa-Bank",
    "card_owner": "ANNA SIDOROVA",
    "expires_at": "2026-09-15T12:30:00Z"
}
Respuesta — error
HTTP/1.1 422 Unprocessable Entity

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

2. Consultar una factura

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

Devuelve el estado actual y los datos de pago de una factura por su UUID — úselo para consultar hasta que se pague.

Pending
Pendiente de pago
Success
Pagado
Expired
Plazo de pago vencido
Cancelled
Cancelado
Failed
Error de pago

3. Métodos de pago disponibles

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

Devuelve los métodos de pago disponibles para su tienda — llámelo antes de crear una factura.

HTTP/1.1 200 OK

{
    "methods": [
        { "currency": "RUB", "payment_option": "TO_CARD",       "name": "Tarjeta (cualquier banco ruso)" },
        { "currency": "RUB", "payment_option": "SBP",            "name": "SBP (cualquier banco ruso)" },
        { "currency": "RUB", "payment_option": "SBP_ALFA",       "name": "SBP Alfa-Bank" },
        { "currency": "RUB", "payment_option": "QR_NSPK",        "name": "QR NSPK" },
        { "currency": "RUB", "payment_option": "TRANSGRAN_SBER", "name": "Transfronterizo · SberPay" },
        { "currency": "UAH", "payment_option": "TO_CARD",        "name": "Tarjeta (Ucrania)" },
        { "currency": "UZS", "payment_option": "TO_CARD",        "name": "Tarjeta (Uzbekistán)" },
        { "currency": "TJS", "payment_option": "TO_CARD",        "name": "Tarjeta (Tayikistán)" },
        { "currency": "AZN", "payment_option": "TO_CARD",        "name": "Tarjeta (Azerbaiyán)" },
        { "currency": "KZT", "payment_option": "TO_CARD",        "name": "Tarjeta (Kazajistán)" },
        { "currency": "KGS", "payment_option": "TO_CARD",        "name": "Tarjeta (Kirguistán)" }
    ]
}

payment_option por moneda

El valor de payment_option depende de la moneda. Pregunte a su gestor qué métodos están activados para su tienda.

RUB Russia
TO_CARD Bank card transfer (any Russian bank) Card number
SBP SBP transfer — any Russian bank Phone number
SBP_ALFA SBP transfer — Alfa-Bank Phone number
SBP_TBANK SBP transfer — T-Bank Phone number
QR_NSPK NSPK QR code payment QR code
MOBILE_PHONE Mobile phone top-up Phone number
TO_CARD_TRANSGRAN Cross-border card transfer (any bank) Card number
SBP_TRANSGRAN Cross-border SBP transfer (any bank) Phone number
TRANSGRAN_ALFA Cross-border — Alfa-Bank Card / phone
TRANSGRAN_VTB Cross-border — VTB Card / phone
TRANSGRAN_SBER Cross-border — SberPay Phone number
TRANSGRAN_TPAY Cross-border — T-Pay (T-Bank) Card / phone
UAH Ukraine
TO_CARD Bank card transfer (Ukraine) Card number
UZS Uzbekistan
UZCARD UzCard card transfer Card number
HUMO Humo card transfer Card number
PAYME Payme transfer Card / phone
CLICK Click transfer Card / phone
KZT Kazakhstan
BANK_TRANSFER Bank transfer (Kazakhstan) Card number
AZN Azerbaijan
BANK_TRANSFER Bank transfer (Azerbaijan) Card number
TJS Tajikistan
KORTI_MILLI Transfer — Korti Milli Card number
DUSHANBE_CITY Transfer — Dushanbe City Bank Card number
KGS Kyrgyzstan
TO_CARD Bank card transfer (Kyrgyzstan) Card number

Redirección del pagador

success_url
Tras un pago correcto, el pagador se redirige automáticamente a la URL indicada. Si no se envía el parámetro, el pagador verá la página de confirmación de pago de CrocoPay.
cancel_url
Si el pagador cancela o la factura vence, se le redirige a esta URL. Si no se envía, el pagador se queda en la página de CrocoPay.
Importante: la redirección a success_url no confirma el pago — el pagador puede alterar la URL. Confirme el pago solo mediante el webhook (callback_url) verificando la firma HMAC.

Webhook (Callback)

Tras un pago correcto, CrocoPay envía un POST a su 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"
}
Verificación de firma (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');
}
// pago confirmado
¿Necesita claves de API?
Regístrese — su Client-Id y Client-Secret se emiten en «Tiendas».
Registrarse