Webhook
Hisob-faktura holati o'zgarganda, hisob-faktura yaratishda ko'rsatilgan url_callback manziliga POST so'rovi yuboriladi.
Javob
Javob parametrlari
Ism | Ta'rif |
---|---|
type | Hisob-faktura turi (hamyon / to'lov) |
uuid | To'lovning UUID |
order_id | Tizimda buyurtma identifikatori (buyurtmani aniqlash uchun) |
amount | Hisob-faktura miqdori |
payment_amount | Aslida mijoz tomonidan to'langan miqdor |
payment_amount_usd | Aslida mijoz tomonidan AQSh dollarida to'langan miqdor |
merchant_amount | Savdogarning muvozanatiga qo'shilgan summa, barcha komissiyalar olib tashlandi. |
commission | Kriptous komissiyasi miqdori |
is_final | Hisob-faktura yakunlanadimi. Hisob-faktura tugagach, hisob-fakturani to'lash mumkin emas (u to'langan yoki muddati tugagan) |
status | To'lov holatiMavjud variantlar:• confirm_check• paid• paid_over• fail• wrong_amount• cancel• system_fail• refund_process• refund_fail• refund_paid |
from | To'lovchining hamyon manzili |
wallet_address_uuid | Statik hamyonning uuid |
network | To'lov amalga oshiriladigan bokkain tarmog'i |
currency | Hisob-faktura valyutasi |
payer_currency | Mijoz aslida to'langanligi haqidagi valyutasi |
additional_data | Hisob-fakturani yaratishda siz bergan qo'shimcha ma'lumot |
convert | 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 |
txid | 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 |
sign | Imzo |
Ta'rif
Hisob-faktura turi (hamyon / to'lov)Ta'rif
To'lovning UUIDTa'rif
Tizimda buyurtma identifikatori (buyurtmani aniqlash uchun)Ta'rif
Hisob-faktura miqdoriTa'rif
Aslida mijoz tomonidan to'langan miqdorTa'rif
Aslida mijoz tomonidan AQSh dollarida to'langan miqdorTa'rif
Savdogarning muvozanatiga qo'shilgan summa, barcha komissiyalar olib tashlandi.Ta'rif
Kriptous komissiyasi miqdoriTa'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_paidTa'rif
To'lovchining hamyon manziliTa'rif
Statik hamyonning uuidTa'rif
To'lov amalga oshiriladigan bokkain tarmog'iTa'rif
Hisob-faktura valyutasiTa'rif
Mijoz aslida to'langanligi haqidagi valyutasiTa'rif
Hisob-fakturani yaratishda siz bergan qo'shimcha ma'lumotTa'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 TuzilishTa'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 belgiladikTa'rif
Imzo
Tarkibi convert
Ism | Ta'rif |
---|---|
to_currency | To'lovni amalga oshiradigan valyuta kodi |
commission | Konversiya to'lovi |
rate | Konversiya stavkasi |
amount | Savdogarning 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 kodiTa'rif
Konversiya to'loviTa'rif
Konversiya stavkasiTa'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'chirmoqWebhook 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'chirmoqFaraz 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'chirmoqEndi bizning API to'lovi kaliti yordamida belgi yaratishga imkon beradi:
1$hash = md5(base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)) . $apiPaymentKey);
Nusxa ko'chirmoqNihoyat, 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'chirmoqHozirgi paytda siz webhook Cryptomus’dan ekanligiga va barcha ma'lumotlarni to‘g‘ri olganingizga ishonch hosil qilishingiz mumkin.
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'chirmoqJS-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