transactionStatus method

Future<TransactionResponse> transactionStatus({
  1. required String transactionId,
})

Queries the status of a transaction (v2). Useful to recover the result after a connection dropped mid-payment.

Achtung, am 26.08.2026 gemessen: diese Abfrage unterscheidet WENIGER, als ihr Name nahelegt. Sie antwortet nur fuer eine genehmigte Zahlung mit '0'; auf alles andere -- laufender Kartenfluss, Karte nicht aufgelegt, abgebrochen, Kennung nie gesehen -- antwortet sie einheitlich mit TransactionResponse.noStatementCode (9027, "Original Tx not found"). Nach einer Aufhebung antwortet sie auf die Kennung der Originalzahlung mit TransactionResponse.transactionCanceledCode (9011).

9027 ist deshalb KEIN Ergebnis, sondern ein Grund, weiterzufragen -- siehe TransactionResponse.isConclusive. Wer einen laufenden Vorgang vom abgebrochenen trennen will, braucht abort, nicht diese Abfrage.

TransactionResponse.isInProgress (responseCode == null) wurde auf dieser Firmware nie beobachtet, bleibt aber ebenfalls eine Nicht-Aussage.

Eine dritte Nicht-Aussage, am 27.08.2026 gemessen: fragt man eine nicht rein numerische Kennung ab, antwortet diese Abfrage DAUERHAFT mit TransactionResponse.technicalErrorCode (9900, "Technical Error Database") -- unabhaengig davon, ob unter der Kennung tatsaechlich Geld floss. _checkTransactionId verhindert das fuer jede Kennung, die dieser Client selbst erzeugt oder entgegennimmt; unangetastet bleibt eine Kennung, die vor dieser Pruefung entstanden ist.

Implementation

Future<TransactionResponse> transactionStatus({
  required String transactionId,
}) {
  _checkTransactionId(transactionId, 'transactionId');
  final uri = _uri('api/v2/transactions/$tid/$transactionId', null);
  return _sendTransactionUri('GET', uri, null);
}