Webhook
Шот-фактураның күйі өзгергенде, шот-фактураны жасаған кезде көрсетілген url_callback мекенжайына POST сұранысы жіберіледі.
Жауап
Жауап параметрлері
Есім | Анықтама |
---|---|
type | Шот-фактура түрі (Әмиян / төлем) |
uuid | төлем туралы ууид |
order_id | Жүйеде жеке куәлік (тапсырыс беру үшін) |
amount | Шот-фактураның мөлшері |
payment_amount | Тапсырыс берген сома |
payment_amount_usd | АҚШ долларымен төлеген сома |
merchant_amount | Саудагердің балансына қосқан сома, барлық комиссиялар алынып тасталды. |
commission | Cryptomus комиссиясының сомасы |
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 | Төлем автоматты түрде айырбасталатын валюта туралы ақпарат. Айырбастау Payer_currency USDT-тен орындалады convert өрісіне payer_currency (e.g. BTC-ге автоматты түрде түрлендіру) қосылмаған болса Құрылым |
txid | BlockChain-дегі транзакция хэш. txid өрісі болмаса, болмайды1) Төлемді P2P төледі (төлеуші өзінің Cryptomus шотынан шот-фактурадан қаражат тапқан шот-фактурада көрсетілген мекен-жайға және төлем тек біздің жүйеде жасалған) төленді.2) төлем төленбеді3) Төлемде бірдеңе дұрыс болмады немесе клиент қателік жіберді және біз оны «төленген» деп белгіледі |
sign | Қол |
Анықтама
Шот-фактура түрі (Әмиян / төлем)Анықтама
төлем туралы ууидАнықтама
Жүйеде жеке куәлік (тапсырыс беру үшін)Анықтама
Шот-фактураның мөлшеріАнықтама
Тапсырыс берген сомаАнықтама
АҚШ долларымен төлеген сомаАнықтама
Саудагердің балансына қосқан сома, барлық комиссиялар алынып тасталды.Анықтама
Cryptomus комиссиясының сомасыАнықтама
Шот-фактураның аяқталуы керек пе. Шот-фактура аяқталған кезде шот-фактураны төлеу мүмкін емес (ол төленген немесе мерзімі аяқталған)Анықтама
Төлем мәртебесіҚол жетімді опциялар:- confirm_check- paid- paid_over- fail- wrong_amount- cancel- system_fail- refund_process- refund_fail- refund_paidАнықтама
Төлеушінің әмиянының мекен-жайыАнықтама
Статикалық әмиянның uuidАнықтама
Төлем жасалатын блоктық желіАнықтама
Шот-фактура валютасыАнықтама
Клиенттің іс жүзінде төлеген валютасыАнықтама
Шот-фактураны құру кезінде ұсынған қосымша ақпарат жолыАнықтама
Төлем автоматты түрде айырбасталатын валюта туралы ақпарат. Айырбастау Payer_currency USDT-тен орындалады convert өрісіне payer_currency (e.g. BTC-ге автоматты түрде түрлендіру) қосылмаған болса ҚұрылымАнықтама
BlockChain-дегі транзакция хэш. txid өрісі болмаса, болмайды1) Төлемді P2P төледі (төлеуші өзінің Cryptomus шотынан шот-фактурадан қаражат тапқан шот-фактурада көрсетілген мекен-жайға және төлем тек біздің жүйеде жасалған) төленді.2) төлем төленбеді3) Төлемде бірдеңе дұрыс болмады немесе клиент қателік жіберді және біз оны «төленген» деп белгіледіАнықтама
Қол
Құрылымы convert
Есім | Анықтама |
---|---|
to_currency | Төлем болып айырылған валюта коды |
commission | Айырбастау жарнасы |
rate | Айырбастау бағамы |
amount | Барлық комиссияларды шегеріп, сатушының балансына қосылған to_currency түріндегі айырбастау сомасы.Мұндағы сома Mess_amount * мөлшерлемесі |
Анықтама
Төлем болып айырылған валюта кодыАнықтама
Айырбастау жарнасыАнықтама
Айырбастау бағамыАнықтама
Барлық комиссияларды шегеріп, сатушының балансына қосылған to_currency түріндегі айырбастау сомасы.Мұндағы сома Mess_amount * мөлшерлемесі
Жауаптың мысалы
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}
ЕліктеуWebhook тексеруі
Бұдан кейін веб-үйлерді алу арқылы сіз өнімдерді босатасыз немесе пайдаланушылардың қалдықтарын есептеусіз, сіз өзіңіздің емес және басқа ешкімнен емес, WebHook-тен келгеніңізге көз жеткізуіңіз керек.
Мұны екі жолмен тексеруді ұсынамыз:
- IP мекенжайының ақ тізімін пайдаланып, тек біздің IP-лерден ғана url_callback сұрауларын жіберуге рұқсат етіңіз. Біз webhooks-ты IP 91.227.144.54 мекенжайынан жібереміз.
- Әрбір webhook-те, url_callback мекенжайыңызға келгенде қолтаңбаны тексеріңіз, осы туралы төменде толығырақ оқыңыз.
Webhook қолтаңбасын тексеру
Сіздің API кілттеріңіз құпия болып табылады және оларды тек сіз бен Cryptomus қана білуі керек. Сондықтан, қолтаңбаны тексергенде, webhook-тың Cryptomus тарапынан жіберілгеніне сенімді боласыз.
Біз осы алгоритмді пайдаланып қол қоямыз. POST сұранысының MD5 хэші BASE64-те кодталған және API кілтін біріктірілген.
Сұранымның денесінде қолтаңба, оны тексеру үшін, сіз оны растау органынан алу, денеден және API пернесінен хэш алуыңыз керек және оны белгі параметрімен сәйкестендіруіңіз керек.
PHP-де үлгі:
Webhook өңдегішіге жіберілген JSON деректерін алу үшін:
1$data = file_get_contents('php://input');
2$data = json_decode($data, true);
ЕліктеуWebhook-ті деректермен бірге алайық осы киім
Біріншіден, біз массивтің белгісін алуымыз керек:
1$sign = $data['sign'];
2unset($data['sign']);
ЕліктеуЕнді біздің API төлем кілтін пайдаланып қол қоюға мүмкіндік береді:
1$hash = md5(base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)) . $apiPaymentKey);
ЕліктеуАқырында, біз API төлемдерімізбен жасалған қолтаңба webhook-ке келген белгіні теңестіре аламыз.
1if (!hash_equals($hash, $sign)) {
2 return new InvalidHashException();
3}
4
5// or
6
7if ($hash !== $sign) {
8 return new InvalidHashException();
9}
ЕліктеуБұл сәтте сіз webhook-тың Cryptomus-тен екенін және барлық деректерді дұрыс алғаныңызды сенімді түрде біле аласыз.
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"}
ЕліктеуJS-де:
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
Еліктеу