Webhook
Fatura durumu değiştiğinde, faturayı oluştururken belirtilen url_callback'e bir posta isteği gönderilir.
Cevap
Yanıt parametreleri
İsim | Tanım |
---|---|
type | Fatura Türü (Cüzdan / Ödeme) |
uuid | Ödemenin UUID'si |
order_id | Sistemizde Sipariş Kimliği (siparişi tanımlamak için) |
amount | Faturanın miktarı |
payment_amount | Gerçekten müşteri tarafından ödenen miktar |
payment_amount_usd | USD'de Müşteri tarafından gerçekten ödenen tutar |
merchant_amount | Tüccar bakiyesine eklenen miktar, tüm komisyonlar çıkarılır. |
commission | Cryptomus Komisyon Miktarı |
is_final | Faturanın sonuçlanıp sonuçlanmadığı. Fatura sonuçlandırıldığında bir fatura ödemek imkansızdır (ödenir veya süresi dolmuş) |
status | Ödeme durumuMevcut seçenekler:• confirm_check• paid• paid_over• fail• wrong_amount• cancel• system_fail• refund_process• refund_fail• refund_paid |
from | Ödüllü Cüzdan Adresi |
wallet_address_uuid | Statik cüzdanın uuid |
network | Ödemenin yapıldığı blockchain ağı |
currency | Fatura para birimi |
payer_currency | Müşterinin gerçekten ödediği para birimi |
additional_data | Fatura oluştururken sağladığınız ek bilgi dizesi |
convert | Ödemenin otomatik olarak dönüştürüleceği para birimi hakkında bilgi. Dönüştürme Payer_currency 'den USDT'ye gerçekleştirilir Payer_currency için otomatik dönüşüm işlevini etkinleştirmediyseniz payer_currency alanı mevcut olmayacaktır (örn. BTC'yi otomatik olarak USDT'ye dönüştürmek) Yapı |
txid | Blockchain'de işlem karma. txid alanı mevcut olmayacak1) Ödeme P2P tarafından ödendi (ödeme yapan kişi, Cryptomus hesabından faturada belirtilen adrese fon çekti ve ödeme sadece sistemimizde blockchain olmadan yapıldı)2) Ödeme ödenmedi3) Ödemede bir sorun vardı veya müşteri bir hata yaptı ve bunu manuel olarak 'ücretli' olarak işaretledik |
sign | İmza |
Tanım
Fatura Türü (Cüzdan / Ödeme)Tanım
Ödemenin UUID'siTanım
Sistemizde Sipariş Kimliği (siparişi tanımlamak için)Tanım
Faturanın miktarıTanım
Gerçekten müşteri tarafından ödenen miktarTanım
USD'de Müşteri tarafından gerçekten ödenen tutarTanım
Tüccar bakiyesine eklenen miktar, tüm komisyonlar çıkarılır.Tanım
Cryptomus Komisyon MiktarıTanım
Faturanın sonuçlanıp sonuçlanmadığı. Fatura sonuçlandırıldığında bir fatura ödemek imkansızdır (ödenir veya süresi dolmuş)Tanım
Ödeme durumuMevcut seçenekler:- confirm_check- paid- paid_over- fail- wrong_amount- cancel- system_fail- refund_process- refund_fail- refund_paidTanım
Ödüllü Cüzdan AdresiTanım
Statik cüzdanın uuidTanım
Ödemenin yapıldığı blockchain ağıTanım
Fatura para birimiTanım
Müşterinin gerçekten ödediği para birimiTanım
Fatura oluştururken sağladığınız ek bilgi dizesiTanım
Ödemenin otomatik olarak dönüştürüleceği para birimi hakkında bilgi. Dönüştürme Payer_currency 'den USDT'ye gerçekleştirilir Payer_currency için otomatik dönüşüm işlevini etkinleştirmediyseniz payer_currency alanı mevcut olmayacaktır (örn. BTC'yi otomatik olarak USDT'ye dönüştürmek) YapıTanım
Blockchain'de işlem karma. txid alanı mevcut olmayacak1) Ödeme P2P tarafından ödendi (ödeme yapan kişi, Cryptomus hesabından faturada belirtilen adrese fon çekti ve ödeme sadece sistemimizde blockchain olmadan yapıldı)2) Ödeme ödenmedi3) Ödemede bir sorun vardı veya müşteri bir hata yaptı ve bunu manuel olarak 'ücretli' olarak işaretledikTanım
İmza
Yapısı convert
İsim | Tanım |
---|---|
to_currency | Ödemenin dönüştürüleceği para birimi kodu |
commission | Dönüşüm ücreti |
rate | Dönüşüm oranı |
amount | Tüm komisyonlar çıkarıldığında, satıcının bakiyesine eklenen to_currency dönüşüm miktarı.Buradaki miktar satıcı_amount * oranına eşittir |
Tanım
Ödemenin dönüştürüleceği para birimi koduTanım
Dönüşüm ücretiTanım
Dönüşüm oranıTanım
Tüm komisyonlar çıkarıldığında, satıcının bakiyesine eklenen to_currency dönüşüm miktarı.Buradaki miktar satıcı_amount * oranına eşittir
Yanıt örneği
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}
KopyaWebhook doğrulaması
Webhooks alarak ürünler yayınladığınız veya kullanıcılarınızın bakiyelerini kredilendirdiğiniz için, kimseden değil, Cryptomus'tan webhooks aldığınızdan emin olmanız gerekir.
Her iki şekilde de kontrol etmenizi öneririz:
- IP adresi beyaz listesini kullanın ve url_callback'e yalnızca IP'lerimizden istekli isteklere izin verin. IP'den web şoförü gönderiyoruz. 91.227.144.54
- Url_callback'inize gelen her webhook'ta imzayı doğrulayın, bunun hakkında daha fazla bilgi edinin.
Webhook imzasını doğrulamak
API anahtarlarınız gizlidir ve siz ve Cryptomus dışında hiç kimse onları tanımamalıdır. Bu nedenle, imzayı doğrularken, webhook'un Cryptomus tarafından gönderildiğinden emin olacaksınız.
Bu algoritmayı kullanarak bir işaret oluşturuyoruz. Base64'te kodlanan ve API anahtarınızla birleştirilen MD5 Post isteğinin gövdesinin karma.
İmza isteğin gövdesine geldikçe, doğrulamak için, işareti yanıt gövdesinden çıkarmanız, vücuttan ve API anahtarınızdan bir karma oluşturmanız ve işaret parametresi ile eşleştirmeniz gerekir.
PHP'de bir örnek:
Webhook işleyicinize gönderilen bir JSON verisini almak için:
1$data = file_get_contents('php://input');
2$data = json_decode($data, true);
KopyaDiyelim ki WebHook'u veri ile aldık Bu sıralamak
İlk olarak, işaretin dizisini çıkarmamız gerekiyor:
1$sign = $data['sign'];
2unset($data['sign']);
KopyaŞimdi API ödeme anahtarımızı kullanarak bir işaret oluşturalım:
1$hash = md5(base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)) . $apiPaymentKey);
KopyaSon olarak, API ödeme anahtarımızla oluşturduğumuz işaretin WebHook'a gelen işarete eşit olup olmadığını kontrol edebiliriz.
1if (!hash_equals($hash, $sign)) {
2 return new InvalidHashException();
3}
4
5// or
6
7if ($hash !== $sign) {
8 return new InvalidHashException();
9}
KopyaBu noktada, webhook'un Cryptomus'tan olduğundan ve tüm verileri doğru bir şekilde aldığınızdan emin olabilirsiniz.
PHP'de:
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"}
KopyaJS'de:
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
Kopya