TR ▾

Geliştiriciler

Host-to-Host entegrasyon — sunucudan sunucuya doğrudan iletişim. API ile fatura oluşturur, ödeme bilgilerini alır ve CrocoPay'e yönlendirmeden kendi tarafınızda ödeyene gösterirsiniz.

3 uç nokta 11 para birimi Header kimlik doğrulaması HMAC imzalı callback

API ile fatura oluşturur, ödeme bilgilerini (kart, telefon numarası veya QR) alır ve kendi tarafınızda ödeyene gösterirsiniz — CrocoPay'e yönlendirme yok.

Kimlik doğrulama

Tüm isteklerde şu header'lar gerekir: Client-Id ve Client-Secret. Anahtarları "Mağazalar" → merchant'ın yanındaki dişli simgesinde bulabilirsiniz.

Client-Id: GnHqauRCUVtB8sECR7m
Client-Secret: vpBpXo7REyApkDnLIOpMR3lk1ndaLmY2qoZptV9cHOtjJLUDsW26GBSe2kda1IVQIMR758Z

1. Fatura oluşturma

POST /api/v2/h2h/invoices

Yeni bir ödeme faturası oluşturur. Fatura ID'sini ve ödeme bilgilerini döndürür.

amount evet Ödeme tutarı (BDT para birimleri için tam sayı)
currency evet Para birimi: RUB, UAH, UZS, KZT, TJS, AZN, KGS
payment_option evet Ödeme yöntemi (TO_CARD, SBP, QR_NSPK…)
callback_url hayır Ödeme webhook bildirimi için URL (POST)
success_url hayır Başarılı ödemeden sonra ödeyenin yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay onay sayfasını görür
cancel_url hayır Ödeyen iptal ederse veya fatura süresi dolarsa yönlendirileceği adres. Belirtilmezse ödeyen CrocoPay sayfasında kalır
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"
}
Yanıt — kart bilgileri (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"
}
Yanıt — telefon bilgileri (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"
}
Yanıt — hata
HTTP/1.1 422 Unprocessable Entity

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

2. Fatura sorgulama

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

Faturanın güncel durumunu ve ödeme bilgilerini UUID ile döndürür — ödeme yapılana kadar sorgulamak için kullanın.

Pending
Ödeme bekleniyor
Success
Ödendi
Expired
Ödeme süresi doldu
Cancelled
İptal edildi
Failed
Ödeme hatası

3. Kullanılabilir ödeme yöntemleri

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

Mağazanız için kullanılabilir ödeme yöntemlerini döndürür — fatura oluşturmadan önce çağırın.

HTTP/1.1 200 OK

{
    "methods": [
        { "currency": "RUB", "payment_option": "TO_CARD",       "name": "Kart (herhangi bir Rus bankası)" },
        { "currency": "RUB", "payment_option": "SBP",            "name": "SBP (herhangi bir Rus bankası)" },
        { "currency": "RUB", "payment_option": "SBP_ALFA",       "name": "SBP Alfa-Bank" },
        { "currency": "RUB", "payment_option": "QR_NSPK",        "name": "NSPK QR" },
        { "currency": "RUB", "payment_option": "TRANSGRAN_SBER", "name": "Sınır ötesi · SberPay" },
        { "currency": "UAH", "payment_option": "TO_CARD",        "name": "Kart (Ukrayna)" },
        { "currency": "UZS", "payment_option": "TO_CARD",        "name": "Kart (Özbekistan)" },
        { "currency": "TJS", "payment_option": "TO_CARD",        "name": "Kart (Tacikistan)" },
        { "currency": "AZN", "payment_option": "TO_CARD",        "name": "Kart (Azerbaycan)" },
        { "currency": "KZT", "payment_option": "TO_CARD",        "name": "Kart (Kazakistan)" },
        { "currency": "KGS", "payment_option": "TO_CARD",        "name": "Kart (Kırgızistan)" }
    ]
}

Para birimine göre payment_option

Değeri payment_option para birimine bağlıdır. Mağazanız için hangi yöntemlerin açık olduğunu yöneticinize sorun.

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

Ödeyen yönlendirmesi

success_url
Başarılı ödemeden sonra ödeyen otomatik olarak belirtilen URL'ye yönlendirilir. Parametre gönderilmezse ödeyen CrocoPay ödeme onay sayfasını görür.
cancel_url
Ödeyen ödemeyi iptal ederse veya fatura süresi dolarsa bu URL'ye yönlendirilir. Gönderilmezse ödeyen CrocoPay sayfasında kalır.
Önemli: success_url'ye yönlendirme ödemenin kanıtı değildir — ödeyen URL'yi değiştirebilir. Ödemeyi yalnızca HMAC imza kontrolüyle webhook (callback_url) üzerinden onaylayın.

Webhook (Callback)

Başarılı ödemeden sonra CrocoPay şu adrese POST gönderir: 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"
}
İmza kontrolü (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');
}
// ödeme onaylandı
API anahtarı mı gerekiyor?
Kayıt olun — Client-Id ve Client-Secret "Mağazalar" bölümünde verilir.
Kayıt ol