Asosiy
/To'lovlar
/Webhook
Sahifani nusxalash
Webhook — bu to'lov ma'lumotlari uchun fikr-mulohaza usulining bir turi.
Hisob-faktura holati o'zgarganda, hisob-faktura yaratishda ko'rsatilgan url_callback manziliga POST so'rovi yuboriladi.
| Ism | Ta'rif |
|---|---|
| type | Hisob-faktura turi (hamyon / to'lov) |
| uuid | To'lovning UUID |
| order_id | Tizimingizdagi 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 | Heleket 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.Agar txid maydoni mavjud bo'lmasa1) To'lov p2p orqali amalga oshirildi (To'lov qiluvchi Heleket hisobidan invoisda ko'rsatilgan manzilga mablag'ni olib chiqdi va to'lov blokcheynsız, faqat bizning tizimda 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 |
| Ism | Ta'rif |
|---|---|
| to_currency | To'lovni amalga oshiradigan valyuta kodi |
| commission | Konversiya to'lovi |
| rate | Konversiya darajasi |
| amount | Savdogarning muvozanatiga qo'shilgan to_currency aylantirish miqdori, barcha komissiyalar olib tashlandi.Mumkin Bu erda savdogar_amount * stavkaga teng |
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}NusxalashWebhooks qabul qilganingizda siz mahsulotlarni chiqarish yoki foydalanuvchilaringizning balanslarini kreditlashni amalga oshirasiz, shuning uchun Heleket'dan webhooks qabul qilayotganingizga va boshqa hech kimdan emasligingizga ishonch hosil qilishingiz kerak.
Ikkala usulni tekshirishni maslahat beramiz:
Sizning API kalitlaringiz maxfiydir va ularni faqat siz va Heleket bilishi kerak. Shunday qilib, imzoni tekshirayotganda, siz webhook'ning Heleket 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.
Webhook handler'ga POST orqali yuborilgan json ma'lumotni olish uchun:
1$data = file_get_contents('php://input');
2$data = json_decode($data, true);NusxalashFaraz qiling, biz webhook bilan ma'lumotni oldik bu massiv
Birinchidan, biz yozuvni massivdan chiqarib olishimiz kerak:
1$sign = $data['sign'];
2unset($data['sign']);NusxalashEndi bizning API to'lovi kaliti yordamida belgi yaratishga imkon beradi:
1$hash = md5(base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)) . $apiPaymentKey);NusxalashNihoyat, 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}NusxalashHozirgi paytda siz webhook Heleket’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"}NusxalashJS-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 Nusxalash