Upozornění
Stav transakce je důležitým ukazatelem pro aplikace třetích stran. Říká vám, v jakém stavu se transakce nachází a zda lze transakci opakovat. Neříká nic o úspěchu/neúspěchu transakce.
Request [transactionId]
Vstupní hodnota TransactionId je vygenerována v kroku 1 – Registrace transakce.
void stateRequest(String transactionId, IStateResultListener listener) throws RemoteException
Response [StateResultEntity]
Stavy
Jakmile je stav, který obdržíte, FINISHED (momentálně hodnoty 6,7 a 8), měli byste začít volat dotaz na podrobnosti transakce, abyste získali výsledek transakce, viz “4.Získání detailů o transakci“
– Pokud isRepeatable == true, pak můžete transakci opakovat se stejnou hodnotou transactionId, viz Krok 2: Požadavek na transakci
– Pokud je isRepeatable == false, pak nemůžete opakovat transakci se stejnou hodnotou transactionId, viz Krok 2: Požadavek na transakci a musíte vygenerovat nové transactionId, viz Krok 1: Registrace transakce.
– Pokud se vrátí stav IN_PROGRESS, musíte počkat na dokončení transakce, tedy zeptat se znovu naříklad za 500 ms.
Pokud je stav IN_PROGRESS starší než 5 minut, můžete transakci zpracovat jako neúspěšnou.
Příklad odpovědi na stav:
{“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”}
Vysvětlení: resultCode=0 znamená, že požadavek byl úspěšně zpracován, stav=8 znamená, že transakce je ve stavu „error“, code=43 dává detailní chybu proč skončil task errorem a to dle dokumentace zde, hodnota „isRepeatable=false“ znamená, že nemůžete znovu volat TransactionRequestV2 se stejnou hodnotou TransactionID.