Webhook

Webhook ist eine Art Feedback -Methode für Zahlungsinformationen.
Wenn sich der Rechnungsstatus ändert, wird eine Postanforderung an den angegebenen URL_CALLBACK gesendet, der beim Erstellen der Rechnung angegeben ist.

Antwort

Antwortparameter

NameDefinition
typeRechnungstyp (Brieftasche / Zahlung)
uuidzufällige uuid String
order_idBestell -ID in Ihrem System (um die Reihenfolge zu identifizieren)
amountDie Höhe der Rechnung
payment_amountBetrag, der tatsächlich vom Kunden bezahlt wurde
payment_amount_usdBetrag, der tatsächlich vom Kunden in USD gezahlt wurde
merchant_amountDer Betrag, der dem Guthaben des Händlers hinzugefügt wurde, wobei alle Provisionen abgezogen wurden.
commissionKryptomus -Kommission Betrag
is_finalOb die Rechnung abgeschlossen ist. Wenn die Rechnung abgeschlossen ist, ist es unmöglich, eine Rechnung zu bezahlen (sie wird entweder bezahlt oder abgelaufen)
statusZahlungsstatusVerfügbare Optionen:confirm_checkpaidpaid_overfailwrong_amountcancelsystem_failrefund_processrefund_failrefund_paid
fromBrieftasche des Zahlers
wallet_address_uuidUuid der statischen Brieftasche
networkDas Blockchain -Netzwerk, in dem die Zahlung erfolgt
currencyRechnungswährung
payer_currencyDie Währung, mit der der Kunde tatsächlich bezahlt hat
additional_dataZusätzliche Informationszeichenfolge, die Sie beim Erstellen einer Rechnung angegeben haben
convertInformationen über die Währung, in die die Zahlung automatisch konvertiert wird. Die Konvertierung erfolgt von payer_currency zu USDTDas Feld convert existiert nicht, wenn Sie die automatische Konvertierungsfunktion für payer_currency nicht aktiviert haben (z. B. auto konvertieren BTC in USDT) Struktur
txidTransaktion Hash auf der Blockchain.Das Feld txid wird nicht existieren, wenn1) Die Zahlung wurde von P2P gezahlt (der Zahler zog Geld von seinem Kryptomuskonto auf die in der Rechnung angegebene Adresse zurück und die Zahlung wurde ohne Blockchain nur in unserem System geleistet)2) Die Zahlung wurde nicht bezahlt3) Mit der Zahlung stimmte etwas nicht stimm
signUnterschrift

Definition

Rechnungstyp (Brieftasche / Zahlung)

Definition

zufällige uuid String

Definition

Bestell -ID in Ihrem System (um die Reihenfolge zu identifizieren)

Definition

Die Höhe der Rechnung

Definition

Betrag, der tatsächlich vom Kunden bezahlt wurde

Definition

Betrag, der tatsächlich vom Kunden in USD gezahlt wurde

Definition

Der Betrag, der dem Guthaben des Händlers hinzugefügt wurde, wobei alle Provisionen abgezogen wurden.

Definition

Kryptomus -Kommission Betrag

Definition

Ob die Rechnung abgeschlossen ist. Wenn die Rechnung abgeschlossen ist, ist es unmöglich, eine Rechnung zu bezahlen (sie wird entweder bezahlt oder abgelaufen)

Definition

ZahlungsstatusVerfügbare Optionen:- confirm_check- paid- paid_over- fail- wrong_amount- cancel- system_fail- refund_process- refund_fail- refund_paid

Definition

Brieftasche des Zahlers

Definition

Uuid der statischen Brieftasche

Definition

Das Blockchain -Netzwerk, in dem die Zahlung erfolgt

Definition

Rechnungswährung

Definition

Die Währung, mit der der Kunde tatsächlich bezahlt hat

Definition

Zusätzliche Informationszeichenfolge, die Sie beim Erstellen einer Rechnung angegeben haben

Definition

Informationen über die Währung, in die die Zahlung automatisch konvertiert wird. Die Konvertierung erfolgt von payer_currency zu USDTDas Feld convert existiert nicht, wenn Sie die automatische Konvertierungsfunktion für payer_currency nicht aktiviert haben (z. B. auto konvertieren BTC in USDT) Struktur

Definition

Transaktion Hash auf der Blockchain.Das Feld txid wird nicht existieren, wenn1) Die Zahlung wurde von P2P gezahlt (der Zahler zog Geld von seinem Kryptomuskonto auf die in der Rechnung angegebene Adresse zurück und die Zahlung wurde ohne Blockchain nur in unserem System geleistet)2) Die Zahlung wurde nicht bezahlt3) Mit der Zahlung stimmte etwas nicht stimm

Definition

Unterschrift

Die Struktur von convert

NameDefinition
to_currencyDer Währungscode, in den die Zahlung umgewandelt wird
commissionUmbaugebühr
rateWechselkurs
amountKonversionsbetrag in to_currency, die dem Ausgleich des Händlers hinzugefügt wurde, wobei alle Provisionen abgezogen wurden.Betrag hier gleich

Definition

Der Währungscode, in den die Zahlung umgewandelt wird

Definition

Umbaugebühr

Definition

Wechselkurs

Definition

Konversionsbetrag in to_currency, die dem Ausgleich des Händlers hinzugefügt wurde, wobei alle Provisionen abgezogen wurden.Betrag hier gleich

Antwortbeispiel


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}
KOPIEREN

Webhook -Überprüfung

Da Sie Webhooks erhalten, veröffentlichen Sie Produkte oder die Guthaben der Guthaben Ihrer Benutzer, Sie müssen sicherstellen, dass Sie Webhooks von Cryptomus und nicht von anderen erhalten.

Wir empfehlen Ihnen, es in beide Richtungen zu überprüfen:

  • Verwenden Sie die IP -Adresse Whitelist und erlauben Sie Anforderungen an url_callback nur von unseren IPs. Wir senden Webhooks von IP. 91.227.144.54
  • Überprüfen Sie die Signatur in jedem Webhook, der zu Ihrem url_callback kommt, und lesen Sie weiter unten.

Überprüfung der Webhook Signature

Ihre API -Schlüssel sind geheim und niemand außer Ihnen und Kryptomus sollte sie kennen. Bei der Überprüfung der Signatur werden Sie sicher sein, dass das Webhook von Kryptomus gesendet wurde.

Wir erstellen ein Zeichen mit diesem Algorithmus. MD5 -Hash des Körpers der in Base64 codierten Postanforderung und kombiniert mit Ihrem API -Schlüssel.

Wenn die Signatur im Körper der Anfrage kommt, müssen Sie das Zeichen aus dem Antwortkörper extrahieren, einen Hash aus dem Körper und Ihren API -Schlüssel erzeugen und es mit dem Vorzeichenparameter übereinstimmen.

Ein Beispiel in PHP:

Um eine JSON -Daten zu erhalten, die per Post an Ihren Webhook -Handler gesendet wurde:


1$data = file_get_contents('php://input');
2$data = json_decode($data, true);
KOPIEREN

Nehmen wir an, wir haben Webhook mit Daten in erhalten Das Array
Zunächst müssen wir das Zeichen aus dem Array extrahieren:


1$sign = $data['sign'];
2unset($data['sign']);
KOPIEREN

Lassen Sie uns nun ein Zeichen mit unserem API -Zahlungsschlüssel generieren:


1$hash = md5(base64_encode(json_encode($data, JSON_UNESCAPED_UNICODE)) . $apiPaymentKey);
KOPIEREN

Schließlich können wir prüfen, ob das Zeichen, das wir mit unserem API -Zahlungsschlüssel generiert haben, dem Zeichen des Webhooks entspricht.


1if (!hash_equals($hash, $sign)) {
2   return new InvalidHashException();
3}
4
5// or
6
7if ($hash !== $sign) {
8   return new InvalidHashException();
9}
KOPIEREN

Zu diesem Zeitpunkt können Sie sicher sein, dass der Webhook von Cryptomus stammte und dass Sie alle Daten korrekt erhalten haben

Es gibt einen Unterschied bei der Codierung einer Reihe von Daten in PHP und anderen Sprachen. PHP entkommen Schrägstriche und einige andere Sprachen nicht. Daher können Sie auf eine Zeichenfehlanpassung stoßen. Sie müssen Schrägstriche mit Backslash entkommen, damit es richtig funktioniert.

in 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"}
KOPIEREN

In 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            
KOPIEREN