Webhook

Webhook — to'lov ma'lumotlari uchun bir turdagi fikr-mulohaza usulidir.
Hisob-faktura holati o'zgarganda, hisob-faktura yaratishda ko'rsatilgan url_callback manziliga POST so'rovi yuboriladi.

Javob

Javob parametrlari

IsmTa'rif
typeHisob-faktura turi (hamyon / to'lov)
uuidTo'lovning UUID
order_idTizimda buyurtma identifikatori (buyurtmani aniqlash uchun)
amountHisob-faktura miqdori
payment_amountAslida mijoz tomonidan to'langan miqdor
payment_amount_usdAslida mijoz tomonidan AQSh dollarida to'langan miqdor
merchant_amountSavdogarning muvozanatiga qo'shilgan summa, barcha komissiyalar olib tashlandi.
commissionKriptous komissiyasi miqdori
is_finalHisob-faktura yakunlanadimi. Hisob-faktura tugagach, hisob-fakturani to'lash mumkin emas (u to'langan yoki muddati tugagan)
statusTo'lov holatiMavjud variantlar:confirm_checkpaidpaid_overfailwrong_amountcancelsystem_failrefund_processrefund_failrefund_paid
fromTo'lovchining hamyon manzili
wallet_address_uuidStatik hamyonning uuid
networkTo'lov amalga oshiriladigan bokkain tarmog'i
currencyHisob-faktura valyutasi
payer_currencyMijoz aslida to'langanligi haqidagi valyutasi
additional_dataHisob-fakturani yaratishda siz bergan qo'shimcha ma'lumot
convertTo'lov avtomatik ravishda o'zgartirilgan valyuta haqidagi ma'lumotlar. Konversiya to'lovchi_currenience dan USDT uchun amalga oshiriladimethods.The convert field will not exist if you have not enabled the automatic conversion function for payer_currency Tuzilish
txidBlokchinda bitim. txid dalasi mavjud emas1) To'lov P2P tomonidan to'langan (To'lovchining kriplohumus hisobvarag'idan mablag'ni hisobga oldi va to'lovlar faqat bizning tizimimizda xoltchaynsiz amalga oshirildi,2) To'lov to'lanmagan3) To'lov bilan bog'liq bo'lgan narsa yoki mijoz xato qilgan va biz uni "to'langan" qo'lda deb belgiladik
signImzo

Ta'rif

Hisob-faktura turi (hamyon / to'lov)

Ta'rif

To'lovning UUID

Ta'rif

Tizimda buyurtma identifikatori (buyurtmani aniqlash uchun)

Ta'rif

Hisob-faktura miqdori

Ta'rif

Aslida mijoz tomonidan to'langan miqdor

Ta'rif

Aslida mijoz tomonidan AQSh dollarida to'langan miqdor

Ta'rif

Savdogarning muvozanatiga qo'shilgan summa, barcha komissiyalar olib tashlandi.

Ta'rif

Kriptous komissiyasi miqdori

Ta'rif

Hisob-faktura yakunlanadimi. Hisob-faktura tugagach, hisob-fakturani to'lash mumkin emas (u to'langan yoki muddati tugagan)

Ta'rif

To'lov holatiMavjud variantlar:- confirm_check- paid- paid_over- fail- wrong_amount- cancel- system_fail- refund_process- refund_fail- refund_paid

Ta'rif

To'lovchining hamyon manzili

Ta'rif

Statik hamyonning uuid

Ta'rif

To'lov amalga oshiriladigan bokkain tarmog'i

Ta'rif

Hisob-faktura valyutasi

Ta'rif

Mijoz aslida to'langanligi haqidagi valyutasi

Ta'rif

Hisob-fakturani yaratishda siz bergan qo'shimcha ma'lumot

Ta'rif

To'lov avtomatik ravishda o'zgartirilgan valyuta haqidagi ma'lumotlar. Konversiya to'lovchi_currenience dan USDT uchun amalga oshiriladimethods.The convert field will not exist if you have not enabled the automatic conversion function for payer_currency Tuzilish

Ta'rif

Blokchinda bitim. txid dalasi mavjud emas1) To'lov P2P tomonidan to'langan (To'lovchining kriplohumus hisobvarag'idan mablag'ni hisobga oldi va to'lovlar faqat bizning tizimimizda xoltchaynsiz amalga oshirildi,2) To'lov to'lanmagan3) To'lov bilan bog'liq bo'lgan narsa yoki mijoz xato qilgan va biz uni "to'langan" qo'lda deb belgiladik

Ta'rif

Imzo

Tarkibi convert

IsmTa'rif
to_currencyTo'lovni amalga oshiradigan valyuta kodi
commissionKonversiya to'lovi
rateKonversiya stavkasi
amountSavdogarning muvozanatiga qo'shilgan to_currency aylantirish miqdori, barcha komissiyalar olib tashlandi.Mumkin Bu erda savdogar_amount * stavkaga teng

Ta'rif

To'lovni amalga oshiradigan valyuta kodi

Ta'rif

Konversiya to'lovi

Ta'rif

Konversiya stavkasi

Ta'rif

Savdogarning muvozanatiga qo'shilgan to_currency aylantirish miqdori, barcha komissiyalar olib tashlandi.Mumkin Bu erda savdogar_amount * stavkaga teng

Javob namunasi


1{
2  "type": "payment",
3  "uuid": "62f88b36-a9d5-4fa6-aa26-e040c3dbf26d",
4  "order_id": "97a75bf8eda5cca41ba9d2e104840fcd",
5  "amount": "3.00000000",
6  "payment_amount": "3.00000000",
7  "payment_amount_usd": "0.23",
8  "merchant_amount": "2.94000000",
9  "commission": "0.06000000",
10  "is_final": true,
11  "status": "paid",
12  "from": "THgEWubVc8tPKXLJ4VZ5zbiiAK7AgqSeGH",
13  "wallet_address_uuid": null,
14  "network": "tron",
15  "currency": "TRX",
16  "payer_currency": "TRX",
17  "additional_data": null,
18  "convert": {
19    "to_currency": "USDT",
20    "commission": null,
21    "rate": "0.07700000",
22    "amount": "0.22638000"
23  },
24  "txid": "6f0d9c8374db57cac0d806251473de754f361c83a03cd805f74aa9da3193486b",
25  "sign": "a76c0d77f3e8e1a419b138af04ab600a"
26}
Nusxa ko'chirmoq

Webhook tekshiruvi

Webhooks olish orqali siz mahsulotlarni chiqarayotganingiz yoki foydalanuvchilaringizning balanslarini kiritayotganingiz sababli, Cryptomusdan webhooks olayotganingizga va boshqa hech kimdan olmangansizga ishonch hosil qilishingiz kerak.

Ikkala usulni tekshirishni maslahat beramiz:

  • IP manzillari oq ro'yxatini ishlating va url_callback ga faqat bizning IP-larimizdan kelgan so'rovlarni ruxsat bering. Biz webhooks'ni IP 91.227.144.54 dan yuboramiz.
  • Har bir webhookda, url_callback manzilingizga kelayotgan imzoni tekshiring, bu haqda quyida ko'proq o'qing.

Webhook imzosini tekshirish

Sizning API kalitlaringiz maxfiy bo'lib, faqat siz va Cryptomus ularni bilishi kerak. Shuning uchun, imzoni tekshirganingizda, webhook Cryptomus tomonidan yuborilganiga ishonch hosil qilasiz.

Biz ushbu algoritm yordamida imzo yaratamiz. Post so'rovining yostiqchisining yostiqchisining bachadonining tanasi va API kaliti bilan birlashtirilgan MD5 has.

Imzo talabning organida bo'lgani sayin, uni tekshirish uchun siz javob berish organidan belgini olish, tanadan xeshni va API tugmachasini yaratishingiz va uni belgilash parametringiz bilan uyg'unlashtirishingiz kerak.

PHP-da misol:

Webhook handler'ga POST orqali yuborilgan json ma'lumotlarini qabul qilish uchun:


1$data = file_get_contents('php://input');
2$data = json_decode($data, true);
Nusxa ko'chirmoq

Faraz qiling, biz webhook bilan ma'lumotni oldik bu massiv
Birinchidan, biz yozuvni massivdan chiqarib olishimiz kerak:


1$sign = $data['sign'];
2unset($data['sign']);
Nusxa ko'chirmoq

Endi bizning API to'lovi kaliti yordamida belgi yaratishga imkon beradi:


1$hash = md5(base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)) . $apiPaymentKey);
Nusxa ko'chirmoq

Nihoyat, biz API to'lov kalitimiz bilan yaratgan imzo webhook-ga kelgan imzo bilan tengligini tekshira olamiz.


1if (!hash_equals($hash, $sign)) {
2   return new InvalidHashException();
3}
4
5// or
6
7if ($hash !== $sign) {
8   return new InvalidHashException();
9}
Nusxa ko'chirmoq

Hozirgi paytda siz webhook Cryptomus’dan ekanligiga va barcha ma'lumotlarni to‘g‘ri olganingizga ishonch hosil qilishingiz mumkin.

PHP va boshqa tillarda ma'lumotlar qatorini kodlashda farq bor. PHP-ni silkitadi va boshqa boshqa tillarni o'chiradi. Shuning uchun siz imzo chekishga duch kelishingiz mumkin. To'g'ri ishlash uchun siz orqa tomondan siljishlar bilan qochishingiz kerak.

PHP-da:


1//  data array
2$data = [
3    'amount' => '20',
4    'currency' => 'USDT',
5    'network' => 'tron',
6    'txid' => 'someTxidWith/Slash'
7];
8
9// json data we send to webhooks
10$data = json_encode($data, true);
11echo $data;
12// Outputs a string, slash in txid is escaped, pay attention to this.
13// we send a webhook data with all escaped slashes
14// {"amount":"20","currency":"USD","network":"btc","txid":"someTxidWith/Slash"}
Nusxa ko'chirmoq

JS-da:


1const data = {
2    amount: '20',
3    currency: 'USDT',
4    network: 'tron',
5    txid: 'someTxidWith/Slash'
6};
7
8const jsonData = JSON.stringify(data);
9console.log(jsonData);
10// {"amount":"20","currency":"USDT","network":"tron","txid":"someTxidWith/Slash"}
11// slash in txid is not escaped and you will get error checking sign.
12// Instead, you should do it like this:
13// const jsonData = JSON.stringify(data).replace(///mg, "\/");
14            
Nusxa ko'chirmoq