Notificare
Starea tranzacției este un indicator important pentru aplicațiile terțe. Acesta vă spune în ce stare se află tranzacția și dacă tranzacția poate fi repetată. Nu spune nimic despre succesul/eșecul tranzacției.
Cerere [transactionId]
Valoarea de intrare transactionId este generată în Pasul 1 , Înregistrarea tranzacțiilor.
void stateRequest(String transactionId, IStateResultListener listener) throws RemoteException
Răspuns [StateResultEntity]
Statele
Odată ce statusul primit este FINISHED (în prezent valorile 6, 7 și 8), trebuie să apelați interogarea privind detaliile tranzacției pentru a obține rezultatul tranzacției, a se vedea"4.Obținerea detaliilor tranzacției"
- Dacă esterepeatable == adevărat, atunci puteți repeta tranzacția cu aceeași valoare transactionId, consultați Pasul 2: Solicitați o tranzacție
- Dacă isRepeatable == false, atunci nu puteți repeta o tranzacție cu aceeași valoare transactionId, consultați Pasul 2: Solicitați o tranzacție și trebuie să generați o nouă tranzacțieId, consultați Pasul 1: Înregistrați tranzacția.
– Dacă starea IN_PROGRESS revine, trebuie să așteptați finalizarea tranzacției, adică să întrebați din nou, de exemplu, în 500 ms.
Dacă starea IN_PROGRESS este mai veche de 5 minute, puteți procesa tranzacția ca nereușită.
Exemplu de răspuns de stare:
{„created“:“2023-09-11T12:29:11.300Z“,“error“:{„code“:43,“internalErrorCode“:0,“internalErrorSubCode“:0,“platform“:“TOM_APP“},“isRepeatable“:false,“resultCode“:0,“state“:8,“transactionId“:“d03484bc-509e-11ee-ba37-77691fde9486″,“updated“:“2023-09-11T12:30:34.337Z“}
Explicație: resultCode=0 înseamnă că cererea a fost procesată cu succes, status=8 înseamnă că tranzacția se află în starea "eroare", code=43 oferă o eroare detaliată a motivului pentru care sarcina s-a încheiat cu o eroare conform documentației de aici, valoarea "isRepeatable=false" înseamnă că nu puteți apela din nou TransactionRequestV2 cu aceeași valoare TransactionID.