API REFERENCE
Asynchrone Benachrichtigungen
Während des gesamten Lebenszyklus einer Bestellung senden wir bei jeder Statusänderung eine asynchrone Benachrichtigung an notify_url. Der Empfangs-Endpunkt muss HTTPS verwenden. Die Benachrichtigungen enthalten eine Signatur und Zahlungsparameter (im JSON-Format).
Tipp
- Die Benachrichtigungs-URL ist die übermittelte notify_url. Nach Abschluss der Zahlung sendet YabandPay die zugehörigen Zahlungs- und Nutzerinformationen an diese URL. Das Drittanbieter-Acquiring-Institut muss die Benachrichtigung empfangen und die Signatur überprüfen, bevor es weitere Schritte ausführt.
- Gibt das Drittanbieter-Acquiring-Institut beim Austausch von Serverbenachrichtigungen keine erfolgreiche Antwort zurück oder läuft die Anfrage ab, gilt die Benachrichtigung für YabandPay als fehlgeschlagen. YabandPay wiederholt Benachrichtigungen regelmäßig gemäß seiner Wiederholungsstrategie, um die Zustellung möglichst sicherzustellen; eine endgültige Zustellung wird jedoch nicht garantiert.
- Da Serverbenachrichtigungen erneut gesendet werden können, kann dieselbe Benachrichtigung mehrfach beim Partnersystem eingehen. Das Partnersystem muss Duplikate korrekt verarbeiten. Prüfen Sie bei der Verarbeitung zuerst den Status der zugehörigen Geschäftsdaten, um festzustellen, ob die Benachrichtigung bereits bearbeitet wurde. Bearbeiten Sie sie nur, wenn dies noch nicht geschehen ist; andernfalls geben Sie sofort eine erfolgreiche Antwort zurück. Verwenden Sie vor der Prüfung und Verarbeitung der Geschäftsdaten Datensperren zur Nebenläufigkeitskontrolle, damit Wiedereintritte keine Inkonsistenzen verursachen.
- YabandPay sendet asynchrone Benachrichtigungen von den folgenden IP-Adressen. Wir empfehlen, diese in die Firewall-Zulassungsliste aufzunehmen. 8.211.41.31 8.211.10.244 8.211.8.123
1. Asynchrone Zahlungsbenachrichtigungen
| Parameter | Typ | Beschreibung |
|---|---|---|
| sign | String | Signature |
| type | String | payment |
| user | String | UID oder E-Mail-Adresse des Kassiererkontos |
| amount | String | Übermittelter Zahlungsbetrag |
| tip_amount | String | Im Gesamtbetrag enthaltener Trinkgeldbetrag |
| trade_id | String | YabandPay-Transaktionsnummer |
| currency | String | Übermittelte Zahlungswährung |
| settlement_amount | String | Betrag in der Abrechnungswährung |
| settlement_currency | String | Abrechnungswährung |
| exchange_rate | String | Zahlungsbetrag/Abrechnungsbetrag |
| amount_cny | String | Zahlungsbetrag in CNY |
| settlement_rate | String | CNY-Abrechnungswechselkurs |
| order_id | String | Bestellnummer des Händlers |
| transaction_id | String | Von der Zahlungsmethode zurückgegebene Bestellnummer, z. B. die WeChat-Pay- oder Alipay+-Transaktionsnummer. In den meisten Fällen entspricht sie acquirer_id. |
| acquirer_id | String | Acquirer Reference Number (ARN) |
| description | String | Bestellbeschreibung |
| createDate | String | Erstellungszeit der Bestellung |
| state | String | Zahlungsstatus: Processing, Paid, Cancelled, Expired, Verify, Authorized, Declined, Failed |
| demo | String | Vom Kunden definierter Wert |
| out_trade_no | String | Interne Bestellnummer im Transaktionssystem |
| sub_pay_method | String | Zahlungsmethode: WeChat Pay, Alipay+ usw. (siehe Beschreibungen der Zahlungsmethoden) |
| pay_method | String | Zahlungstyp: offline, online |
| paid_time | String | Zahlungszeitpunkt |
| yb_transaction_id | String | Eindeutige YabandPay-Transaktions-ID |
| 3ds_status | String | 3DS-Status |
| 3ds_trxid | String | Eindeutige 3DS-ID |
| 3ds_version | String | 3DS-Version |
3DS-Antwortstatus:
| Parameter | Typ | Beschreibung |
|---|---|---|
| A | String | Verarbeitung eines Authentifizierungsversuchs; nicht authentifiziert/verifiziert, aber ein Nachweis über den durchgeführten Versuch liegt vor. |
| C | String | Challenge erforderlich; eine zusätzliche Authentifizierung ist nötig. |
| D | String | Challenge erforderlich; entkoppelte Authentifizierung bestätigt. |
| I | String | Nur zur Information; die Challenge-Präferenz des Händlers wurde bestätigt. |
| N | String | Nicht authentifiziert/Konto nicht verifiziert; Transaktion abgelehnt. |
| R | String | Authentifizierung/Kontoverifizierung abgelehnt; der Aussteller lehnt die Authentifizierung/Verifizierung ab und fordert dazu auf, keine Autorisierung zu versuchen. |
| U | String | Authentifizierung/Kontoverifizierung konnte aufgrund eines technischen oder sonstigen Problems nicht durchgeführt werden. |
| Y | String | Authentifizierung/Kontoverifizierung erfolgreich. |
Beispiel für eine asynchrone Benachrichtigung:
{
"sign": "YOUR_SIGNATURE",
"data": {
"type": "payment",
"user": "YOUR_CASHIER_UID",
"order_id": "YOUR_ORDER_ID",
"trade_id": "8a8aa7c7-66d7-e2cc-e2a6-fff7c77aaefd",
"transaction_id": "4200000298201905227377147799",
"acquirer_id": "4200000298201905227377147799",
"yb_transaction_id": "c8823612-383f-35fc-f28d-c0eae039e870",
"amount": "1.00",
"tip_amount": "0.10",
"currency": "EUR",
"settlement_amount": "1.00",
"settlement_currency": "EUR",
"exchange_rate": "1",
"amount_cny": "0.77",
"settlement_rate": "7.779779",
"description": "yaband test",
"createDate": "1558510731",
"pay_method": "online",
"state": "paid",
"demo": "test",
"out_trade_no": "a4d7684a-e326-44c1-bea5-0601f7a9b191",
"sub_pay_method": "WeChat Pay",
"paid_time": "1603355159",
"3ds_status": "Y",
"3ds_trxid": "1d0c6eb3-6282-4cf9-9549-884410918d2d",
"3ds_version": "2.2.0"
}
}
2. Asynchrone Rückerstattungsbenachrichtigungen
| Parameter | Typ | Beschreibung |
|---|---|---|
| sign | String | Signature |
| type | String | refund |
| user | String | UID oder E-Mail-Adresse des Kassiererkontos |
| pay_method | String | online oder offline für die ursprüngliche Zahlungsbestellung |
| sub_pay_method | String | Zahlungsmethode der ursprünglichen Zahlungsbestellung: WeChat Pay, Alipay+ usw. (siehe Beschreibungen der Zahlungsmethoden) |
| refund_id | String | Rückerstattungsnummer |
| m_refund_id | String | Vom Händler festgelegte Rückerstattungsauftragsnummer, die beim Einleiten der Rückerstattung angegeben wurde |
| transaction_id | String | Transaktionsnummer |
| acquirer_id | String | Transaktionsnummer des Abrechnungsinstituts |
| refund_amount | String | Übermittelter Rückerstattungsbetrag |
| refund_currency | String | Rückerstattungswährung |
| order_id | String | Bestellnummer des Händlers |
| refund_description | String | Bestellbeschreibung |
| refund_time | String | Zeitpunkt der Rückerstattung |
| state | String | Rückerstattungsstatus: to-be-approval, refund pending, refund processing, refunded, refund error, refund failed, refund cancelled |
Informationen zu Benachrichtigungen:
{
"sign": "YOUR_SIGNATURE",
"data": {
"type": "refund",
"user": "YOUR_CASHIER_UID",
"refund_id": "b20d3668-d71f-432f-8809-f84f0d9139d4",
"m_refund_id":"20240301143029616187",
"transaction_id":"cf483d9e-637c-a92d-0716-5b8199d10f8c",
"refund_amount": "1.00",
"refund_currency": "EUR",
"order_id": "YOUR_ORDER_ID",
"refund_description": "test",
"refund_time": "0",
"state": "refunded",
"pay_method": "online",
"sub_pay_method": "WeChat Pay"}
}
Tipp
- Nach Übermittlung einer Rückerstattung geben wir den Status refund processing zurück.
- Sobald die Rückerstattung abgeschlossen ist, senden wir eine Benachrichtigung mit dem Status refunded.
3. Häufigkeit asynchroner Benachrichtigungen
Bitte beachten Sie: Die Antwort auf eine Benachrichtigung muss den Statuscode 200 und „ok“ im Antworttext zurückgeben. Wird „ok“ nicht zurückgegeben, senden wir die Benachrichtigung erneut.
Die Benachrichtigungen werden wie folgt gesendet:
| Zustellversuch | Intervall |
|---|---|
| 1 | 10s |
| 2 | 30s |
| 3 | 60s |
| 4 | 300s |
| 5 | 3600s |
| ... | 3600s |
| 15 | 3600s |
Wenn wir keine korrekte „ok“-Antwort erhalten, beenden wir das Senden nach 15 Versuchen.
4. Beschreibungen der Zahlungsstatus in asynchronen Benachrichtigungen
1. Zahlungsstatus:
| Code | Feld | Beschreibung |
|---|---|---|
| 00 | paid | Zahlung erfolgreich |
| 01 | authorized | Autorisierung erfolgreich |
| 02 | pending | Zahlung erstellt |
| 03 | processing | Wartet auf Zahlung |
| 04 | verify | Der Kunde hat bezahlt; die Zahlung wird aus Gründen der Risikokontrolle überprüft. |
| 05 | declined | Zahlung abgelehnt |
| 06 | failed | Zahlung fehlgeschlagen |
| 07 | expired | Zeitüberschreitung bei der Zahlung |
| 08 | cancelled | Zahlung storniert |
2. Rückerstattungsstatus:
| Code | Feld | Beschreibung |
|---|---|---|
| 20 | to-be-approval | Wartet auf Genehmigung durch den Administrator. |
| 21 | refund pending | Das aktuelle Guthaben reicht nicht aus. Die Rückerstattung wird automatisch eingereicht, sobald genügend Guthaben verfügbar ist. |
| 22 | refund processing | Der Rückerstattungsantrag wurde übermittelt und wird vom System bearbeitet. |
| 23 | refunded | Die Rückerstattung wurde erfolgreich abgeschlossen. |
| 24 | refund failed | Die Rückerstattung ist fehlgeschlagen. Bitte versuchen Sie es erneut. |
| 25 | refund error | Die Rückerstattung ist fehlgeschlagen. Bitte wenden Sie sich an unseren Online-Kundendienst. |
| 26 | refund cancelled | Der Rückerstattungsauftrag wurde storniert. |
