API REFERENCE
Asynchrone meldingen
Gedurende de volledige levenscyclus van een order stuurt YabandPay bij elke statuswijziging een asynchrone melding naar notify_url. Het ontvangende eindpunt moet HTTPS gebruiken. Meldingen bevatten een handtekening en betaalparameters (in JSON-indeling).
Tip
- De meldings-URL is de opgegeven notify_url. Nadat de betaling is voltooid, stuurt YabandPay de relevante betaal- en gebruikersgegevens naar deze URL. De externe acquirer moet de melding ontvangen en de handtekening controleren voordat verdere acties worden uitgevoerd.
- Als de externe acquirer tijdens de uitwisseling van servermeldingen een niet-geslaagde reactie retourneert of de aanvraag een time-out krijgt, beschouwt YabandPay de melding als mislukt. YabandPay probeert meldingen periodiek opnieuw te verzenden volgens de herhaalstrategie om de kans op bezorging te vergroten, maar garandeert niet dat een melding uiteindelijk wordt bezorgd.
- Omdat servermeldingen opnieuw kunnen worden verzonden, kan dezelfde melding meerdere keren bij het partnersysteem aankomen. Het partnersysteem moet dubbele meldingen correct afhandelen. We raden aan bij het verwerken eerst de status van de bijbehorende bedrijfsgegevens te controleren om te bepalen of de melding al is verwerkt. Verwerk de melding alleen als dat nog niet is gebeurd; retourneer anders direct een succesreactie. Gebruik vóór het controleren en verwerken van de bedrijfsgegevens datavergrendelingen voor gelijktijdigheidsbeheer om inconsistenties door gelijktijdige herintreding van functies te voorkomen.
- YabandPay verstuurt asynchrone meldingen vanaf de volgende IP-adressen. We raden aan deze toe te voegen aan de allowlist van uw firewall. 8.211.41.31 8.211.10.244 8.211.8.123
1. Asynchrone betalingsmeldingen
| Parameter | Type | Beschrijving |
|---|---|---|
| sign | String | Signature |
| type | String | payment |
| user | String | UID of e-mailadres van het kassieraccount |
| amount | String | Opgegeven betaalbedrag |
| tip_amount | String | Fooi inbegrepen in het totaalbedrag |
| trade_id | String | YabandPay-transactienummer |
| currency | String | Opgegeven betaalvaluta |
| settlement_amount | String | Bedrag in de afwikkelingsvaluta |
| settlement_currency | String | Afwikkelingsvaluta |
| exchange_rate | String | Betaalbedrag/afwikkelingsbedrag |
| amount_cny | String | Betaalbedrag in CNY |
| settlement_rate | String | Wisselkoers voor afwikkeling in CNY |
| order_id | String | Ordernummer van de merchant |
| transaction_id | String | Ordernummer dat door de betaalmethode is geretourneerd, bijvoorbeeld het transactienummer van WeChat Pay of Alipay+. In de meeste gevallen is dit gelijk aan acquirer_id. |
| acquirer_id | String | Acquirer Reference Number (ARN) |
| description | String | Orderomschrijving |
| createDate | String | Aanmaaktijd van de order |
| state | String | Betaalstatus: Processing, Paid, Cancelled, Expired, Verify, Authorized, Declined, Failed |
| demo | String | Door de klant gedefinieerd veld |
| out_trade_no | String | Intern ordernummer in het transactiesysteem |
| sub_pay_method | String | Betaalmethode: WeChat Pay, Alipay+ enz. (zie de beschrijvingen van betaalmethoden) |
| pay_method | String | Betaaltype: offline, online |
| paid_time | String | Betalingstijd |
| yb_transaction_id | String | Unieke YabandPay-transactie-ID |
| 3ds_status | String | 3DS-status |
| 3ds_trxid | String | Unieke 3DS-ID |
| 3ds_version | String | 3DS-versie |
3DS-antwoordsstatussen:
| Parameter | Type | Beschrijving |
|---|---|---|
| A | String | Poging tot verificatie verwerkt; de gebruiker is niet geauthenticeerd/geverifieerd, maar er is bewijs van een verificatiepoging. |
| C | String | Uitdaging vereist; aanvullende authenticatie is nodig. |
| D | String | Uitdaging vereist; gescheiden authenticatie is bevestigd. |
| I | String | Alleen informatief; de voorkeur van de merchant voor een uitdaging is bevestigd. |
| N | String | Niet geauthenticeerd/account niet geverifieerd; transactie geweigerd. |
| R | String | Authenticatie/accountverificatie afgewezen; de uitgever weigert authenticatie/verificatie en verzoekt geen autorisatiepoging te doen. |
| U | String | Authenticatie/accountverificatie kon niet worden uitgevoerd door een technisch of ander probleem. |
| Y | String | Authenticatie/accountverificatie geslaagd. |
Voorbeeld van een asynchrone melding:
{
"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 terugbetalingsmeldingen
| Parameter | Type | Beschrijving |
|---|---|---|
| sign | String | Signature |
| type | String | refund |
| user | String | UID of e-mailadres van het kassieraccount |
| pay_method | String | online of offline voor de oorspronkelijke betaalorder |
| sub_pay_method | String | Betaalmethode van de oorspronkelijke betaalorder: WeChat Pay, Alipay+ enz. (zie de beschrijvingen van betaalmethoden) |
| refund_id | String | Terugbetalingsnummer |
| m_refund_id | String | Door de merchant gedefinieerd terugbetalingsordernummer dat bij het starten van de terugbetaling is opgegeven |
| transaction_id | String | Transactienummer |
| acquirer_id | String | Transactienummer van de afwikkelingsinstelling |
| refund_amount | String | Opgegeven terugbetalingsbedrag |
| refund_currency | String | Terugbetalingsvaluta |
| order_id | String | Ordernummer van de merchant |
| refund_description | String | Orderomschrijving |
| refund_time | String | Tijdstip van terugbetaling |
| state | String | Terugbetalingsstatus: wacht op goedkeuring, terugbetaling in behandeling, terugbetaling wordt verwerkt, terugbetaald, fout bij terugbetaling, terugbetaling mislukt, terugbetaling geannuleerd |
Meldingsinformatie:
{
"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"}
}
Tip
- Nadat een terugbetaling is ingediend, retourneren we de status refund processing.
- Zodra de terugbetaling is voltooid, sturen we een melding met de status refunded.
3. Frequentie van asynchrone meldingen
Let op: de reactie op een melding moet statuscode 200 retourneren en “ok” in de hoofdtekst bevatten. Als “ok” ontbreekt, verzenden we de melding opnieuw.
De meldingsfrequentie is als volgt:
| Poging tot melding | Interval |
|---|---|
| 1 | 10s |
| 2 | 30s |
| 3 | 60s |
| 4 | 300s |
| 5 | 3600s |
| ... | 3600s |
| 15 | 3600s |
Als we geen correcte ok-reactie ontvangen, stoppen we na 15 pogingen met het verzenden van meldingen.
4. Beschrijvingen van betaalstatussen in asynchrone meldingen
1. Betaalstatussen:
| Code | Veld | Beschrijving |
|---|---|---|
| 00 | paid | Betaling geslaagd |
| 01 | authorized | Autorisatie geslaagd |
| 02 | pending | Betaling aangemaakt |
| 03 | processing | Wacht op betaling |
| 04 | verify | De klant heeft betaald; de betaling wordt om redenen van risicobeheersing gecontroleerd. |
| 05 | declined | Betaling geweigerd |
| 06 | failed | Betaling mislukt |
| 07 | expired | Betaling verlopen |
| 08 | cancelled | Betaling geannuleerd |
2. Terugbetalingsstatussen:
| Code | Veld | Beschrijving |
|---|---|---|
| 20 | to-be-approval | Wacht op goedkeuring door de beheerder. |
| 21 | refund pending | Het huidige saldo is onvoldoende. De terugbetaling wordt automatisch ingediend zodra er voldoende saldo beschikbaar is. |
| 22 | refund processing | Het terugbetalingsverzoek is ingediend en wordt door het systeem verwerkt. |
| 23 | refunded | De terugbetaling is geslaagd. |
| 24 | refund failed | De terugbetaling is mislukt. Probeer het opnieuw. |
| 25 | refund error | De terugbetaling is mislukt. Neem contact op met onze online klantenservice. |
| 26 | refund cancelled | De terugbetalingsorder is geannuleerd. |
