Webhook

Webhook - бұл төлем туралы ақпарат алудың кері байланысы.
Шот-фактураның күйі өзгерген кезде, хабарлама сұранысы шот-фактураны жасау кезінде көрсетілген URL_CALLBER-ге жіберіледі.

Жауап

Жауап параметрлері

ЕсімАнықтама
typeШот-фактура түрі (Әмиян / төлем)
uuidтөлем туралы ууид
order_idЖүйеде жеке куәлік (тапсырыс беру үшін)
amountШот-фактураның мөлшері
payment_amountТапсырыс берген сома
payment_amount_usdАҚШ долларымен төлеген сома
merchant_amountСаудагердің балансына қосқан сома, барлық комиссиялар алынып тасталды.
commissionCryptomus комиссиясының сомасы
is_finalШот-фактураның аяқталуы керек пе. Шот-фактура аяқталған кезде шот-фактураны төлеу мүмкін емес (ол төленген немесе мерзімі аяқталған)
statusТөлем мәртебесіҚол жетімді опциялар:confirm_checkpaidpaid_overfailwrong_amountcancelsystem_failrefund_processrefund_failrefund_paid
fromТөлеушінің әмиянының мекен-жайы
wallet_address_uuidСтатикалық әмиянның uuid
networkТөлем жасалатын блоктық желі
currencyШот-фактура валютасы
payer_currencyКлиенттің іс жүзінде төлеген валютасы
additional_dataШот-фактураны құру кезінде ұсынған қосымша ақпарат жолы
convertТөлем автоматты түрде айырбасталатын валюта туралы ақпарат. Айырбастау Payer_currency USDT-тен орындалады convert өрісіне payer_currency (e.g. BTC-ге автоматты түрде түрлендіру) қосылмаған болса Құрылым
txidBlockChain-дегі транзакция хэш. 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}
Еліктеу

Веб -hook тексеруі

Бұдан кейін веб-үйлерді алу арқылы сіз өнімдерді босатасыз немесе пайдаланушылардың қалдықтарын есептеусіз, сіз өзіңіздің емес және басқа ешкімнен емес, WebHook-тен келгеніңізге көз жеткізуіңіз керек.

Мұны екі жолмен тексеруді ұсынамыз:

  • IP мекенжайын пайдаланып, ақ тізімді қолданыңыз және сұрауды тек біздің IPS-тен url_callback-ке рұқсат етіңіз. Біз IP-дан веб -хандарды жібереміз. 91.227.144.54
  • Url_Callback-қа келетін барлық веб -Hook ішіндегі қолтаңбаны тексеріңіз, төменде осы туралы толығырақ оқыңыз.

Веб-кіру қолтаңбасын тексеру

API пернелері құпия және сізден басқа ешкім жоқ және криптомис оларды білуі керек. Сонымен, қолтаңбаны тексерген кезде, сіз веб -хананың криптомис арқылы жіберілгеніне сенімді боласыз.

Біз осы алгоритмді пайдаланып қол қоямыз. 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}
Еліктеу

Осы кезде веб -Hook Cryptomus-тен және барлық деректерді дұрыс алғанына сенімді бола аласыз

PHP және басқа тілдердегі мәліметтер жиынын кодтау кезінде айырмашылық бар. PHP қашып кетеді, ал басқа тілдер жоқ. Сондықтан, сіз белгісіздікке тап болуыңыз мүмкін. Сіз оны дұрыс жұмыс істеу үшін қиғаш сызықпен қашуыңыз керек.

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            
Еліктеу