WEbhook
जब इनवॉइस की स्थिति बदलती है, तो इनवॉइस बनाते समय निर्दिष्ट url_callback पर एक POST अनुरोध भेजा जाता है।
प्रतिक्रिया
प्रतिक्रिया पैरामीटर
नाम | परिभाषा |
---|---|
type | चालान प्रकार (वॉलेट / भुगतान) |
uuid | भुगतान का यूयूआईडी |
order_id | आपके सिस्टम में ऑर्डर आईडी (ऑर्डर की पहचान करने के लिए) |
amount | चालान की राशि |
payment_amount | ग्राहक द्वारा वास्तव में भुगतान की गई राशि |
payment_amount_usd | ग्राहक द्वारा वास्तव में भुगतान की गई राशि (USD में) |
merchant_amount | व्यापारी के शेष में जोड़ी गई राशि, जिसमें से सभी कमीशन घटा दिए गए हैं। |
commission | क्रिप्टोमस कमीशन राशि |
is_final | क्या चालान अंतिम रूप से तैयार हो गया है। जब चालान अंतिम रूप से तैयार हो जाता है, तो उसका भुगतान करना असंभव होता है (या तो उसका भुगतान हो चुका होता है या उसकी समय सीमा समाप्त हो चुकी होती है) |
status | भुगतान स्थितिउपलब्ध विकल्प:• confirm_check• paid• paid_over• fail• wrong_amount• cancel• system_fail• refund_process• refund_fail• refund_paid |
from | भुगतानकर्ता का वॉलेट पता |
wallet_address_uuid | स्थिर वॉलेट का uuid |
network | ब्लॉकचेन नेटवर्क जिसमें भुगतान किया जाता है |
currency | चालान मुद्रा |
payer_currency | वह मुद्रा जिससे ग्राहक ने वास्तव में भुगतान किया |
additional_data | अतिरिक्त जानकारी स्ट्रिंग जो आपने इनवॉइस बनाते समय प्रदान की थी |
convert | उस मुद्रा के बारे में जानकारी जिसमें भुगतान स्वचालित रूप से परिवर्तित हो जाएगा। रूपांतरण भुगतानकर्ता_मुद्रा से USDT में किया जाता हैयदि आपने payer_currency के लिए स्वचालित रूपांतरण फ़ंक्शन सक्षम नहीं किया है, तो convert फ़ील्ड मौजूद नहीं होगी (उदाहरण के लिए BTC को USDT में स्वचालित रूप से परिवर्तित करना) संरचना |
txid | ब्लॉकचेन पर लेनदेन हैश.txid फ़ील्ड मौजूद नहीं होगी यदि1) भुगतान पी2पी द्वारा किया गया था (भुगतानकर्ता ने अपने क्रिप्टोमस खाते से चालान में दिए गए पते पर धनराशि निकाली और भुगतान ब्लॉकचेन के बिना, केवल हमारे सिस्टम में किया गया था)2) भुगतान नहीं किया गया3) भुगतान में कुछ गड़बड़ी थी या ग्राहक ने कोई गलती की थी और हमने उसे मैन्युअल रूप से 'भुगतान किया गया' चिह्नित कर दिया था |
sign | हस्ताक्षर |
परिभाषा
चालान प्रकार (वॉलेट / भुगतान)परिभाषा
भुगतान का यूयूआईडीपरिभाषा
आपके सिस्टम में ऑर्डर आईडी (ऑर्डर की पहचान करने के लिए)परिभाषा
चालान की राशिपरिभाषा
ग्राहक द्वारा वास्तव में भुगतान की गई राशिपरिभाषा
ग्राहक द्वारा वास्तव में भुगतान की गई राशि (USD में)परिभाषा
व्यापारी के शेष में जोड़ी गई राशि, जिसमें से सभी कमीशन घटा दिए गए हैं।परिभाषा
क्रिप्टोमस कमीशन राशिपरिभाषा
क्या चालान अंतिम रूप से तैयार हो गया है। जब चालान अंतिम रूप से तैयार हो जाता है, तो उसका भुगतान करना असंभव होता है (या तो उसका भुगतान हो चुका होता है या उसकी समय सीमा समाप्त हो चुकी होती है)परिभाषा
भुगतान स्थितिउपलब्ध विकल्प:- confirm_check- paid- paid_over- fail- wrong_amount- cancel- system_fail- refund_process- refund_fail- refund_paidपरिभाषा
भुगतानकर्ता का वॉलेट पतापरिभाषा
स्थिर वॉलेट का uuidपरिभाषा
ब्लॉकचेन नेटवर्क जिसमें भुगतान किया जाता हैपरिभाषा
चालान मुद्रापरिभाषा
वह मुद्रा जिससे ग्राहक ने वास्तव में भुगतान कियापरिभाषा
अतिरिक्त जानकारी स्ट्रिंग जो आपने इनवॉइस बनाते समय प्रदान की थीपरिभाषा
उस मुद्रा के बारे में जानकारी जिसमें भुगतान स्वचालित रूप से परिवर्तित हो जाएगा। रूपांतरण भुगतानकर्ता_मुद्रा से USDT में किया जाता हैयदि आपने payer_currency के लिए स्वचालित रूपांतरण फ़ंक्शन सक्षम नहीं किया है, तो convert फ़ील्ड मौजूद नहीं होगी (उदाहरण के लिए BTC को USDT में स्वचालित रूप से परिवर्तित करना) संरचनापरिभाषा
ब्लॉकचेन पर लेनदेन हैश.txid फ़ील्ड मौजूद नहीं होगी यदि1) भुगतान पी2पी द्वारा किया गया था (भुगतानकर्ता ने अपने क्रिप्टोमस खाते से चालान में दिए गए पते पर धनराशि निकाली और भुगतान ब्लॉकचेन के बिना, केवल हमारे सिस्टम में किया गया था)2) भुगतान नहीं किया गया3) भुगतान में कुछ गड़बड़ी थी या ग्राहक ने कोई गलती की थी और हमने उसे मैन्युअल रूप से 'भुगतान किया गया' चिह्नित कर दिया थापरिभाषा
हस्ताक्षर
की संरचना convert
नाम | परिभाषा |
---|---|
to_currency | वह मुद्रा कोड जिसमें भुगतान परिवर्तित किया जाएगा |
commission | रूपांतरण शुल्क |
rate | रूपांतरण दर |
amount | to_currency में रूपांतरण राशि जो व्यापारी के शेष में जोड़ी गई, जिसमें से सभी कमीशन घटा दिए गए।यहाँ राशि व्यापारी राशि * दर के बराबर है |
परिभाषा
वह मुद्रा कोड जिसमें भुगतान परिवर्तित किया जाएगापरिभाषा
रूपांतरण शुल्कपरिभाषा
रूपांतरण दरपरिभाषा
to_currency में रूपांतरण राशि जो व्यापारी के शेष में जोड़ी गई, जिसमें से सभी कमीशन घटा दिए गए।यहाँ राशि व्यापारी राशि * दर के बराबर है
प्रतिक्रिया उदाहरण
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}
प्रतिलिपिवेबहुक सत्यापन
चूंकि वेबहुक प्राप्त करके आप उत्पाद जारी कर रहे हैं या अपने उपयोगकर्ताओं के शेष राशि को क्रेडिट कर रहे हैं, इसलिए आपको यह सुनिश्चित करने की आवश्यकता है कि आप क्रिप्टोमस से वेबहुक प्राप्त कर रहे हैं, किसी और से नहीं।
हम आपको दोनों तरीकों से इसकी जांच करने की सलाह देते हैं:
- आईपी एड्रेस श्वेतसूची का उपयोग करें और केवल हमारे आईपी से ही url_callback अनुरोधों की अनुमति दें। हम वेबहुक आईपी 91.227.144.54 से भेजते हैं।
- अपने url_callback पर आने वाले प्रत्येक वेबहुक में हस्ताक्षर सत्यापित करें, इसके बारे में नीचे और पढ़ें।
वेबहुक हस्ताक्षर सत्यापित करना
आपकी API i कुंजियाँ गुप्त हैं और आपके और क्रिप्टोमस के अलावा किसी को भी उनकी जानकारी नहीं होनी चाहिए। इसलिए, हस्ताक्षर सत्यापित करते समय, आपको यकीन हो जाएगा कि वेबहुक क्रिप्टोमस द्वारा भेजा गया था।
हम इस एल्गोरिथ्म का उपयोग करके एक संकेत बनाते हैं। POST अनुरोध के मुख्य भाग का MD5 हैश, जो base64 में एनकोड किया गया है और आपकी API कुंजी के साथ संयुक्त है।
चूंकि हस्ताक्षर अनुरोध के मुख्य भाग में आता है, इसे सत्यापित करने के लिए, आपको प्रतिक्रिया मुख्य भाग से हस्ताक्षर निकालने, मुख्य भाग और अपनी API कुंजी से एक हैश उत्पन्न करने और इसे हस्ताक्षर पैरामीटर के साथ मिलान करने की आवश्यकता है।
php में एक उदाहरण:
अपने वेबहुक हैंडलर पर डाक द्वारा भेजा गया json डेटा प्राप्त करने के लिए:
1$data = file_get_contents('php://input');
2$data = json_decode($data, true);
प्रतिलिपिमान लीजिए कि हमें डेटा के साथ वेबहुक प्राप्त हुआ यह सरणी
सबसे पहले, हमें सरणी से चिह्न निकालने की आवश्यकता है:
1$sign = $data['sign'];
2unset($data['sign']);
प्रतिलिपिअब आइए हमारी एपीआई भुगतान कुंजी का उपयोग करके एक संकेत उत्पन्न करें:
1$hash = md5(base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)) . $apiPaymentKey);
प्रतिलिपिअंत में, हम यह जांच सकते हैं कि क्या हमारे API भुगतान कुंजी के साथ उत्पन्न किया गया संकेत वेबहुक पर आए संकेत के बराबर है।
1if (!hash_equals($hash, $sign)) {
2 return new InvalidHashException();
3}
4
5// or
6
7if ($hash !== $sign) {
8 return new InvalidHashException();
9}
प्रतिलिपिइस बिंदु पर, आप सुनिश्चित हो सकते हैं कि वेबहुक क्रिप्टोमस से था और आपको सभी डेटा सही ढंग से प्राप्त हुआ था
php में:
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"}
प्रतिलिपिजेएस में:
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
प्रतिलिपि