@kreiseck/kasseneck-api 0.18.0 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/README.md +17 -4
- package/dist/cjs/payments/hobex-hps/index.d.ts +1 -1
- package/dist/cjs/payments/hobex-hps/index.js +3 -1
- package/dist/cjs/payments/hobex-hps/payments.d.ts +11 -0
- package/dist/cjs/payments/hobex-hps/payments.js +73 -4
- package/dist/cjs/payments/hobex-hps/tecs-codes.d.ts +16 -0
- package/dist/cjs/payments/hobex-hps/tecs-codes.js +366 -0
- package/dist/cjs/payments/hobex-hps/transaction-response.d.ts +56 -8
- package/dist/cjs/payments/hobex-hps/transaction-response.js +135 -65
- package/dist/cjs/rechnung/texte.d.ts +5 -4
- package/dist/cjs/rechnung/texte.js +16 -8
- package/dist/cjs/rechnung/typen.d.ts +7 -0
- package/dist/cjs/rechnung/vertrag.d.ts +7 -4
- package/dist/cjs/rechnung/vertrag.js +14 -4
- package/dist/esm/payments/hobex-hps/index.d.ts +1 -1
- package/dist/esm/payments/hobex-hps/index.js +1 -1
- package/dist/esm/payments/hobex-hps/payments.d.ts +11 -0
- package/dist/esm/payments/hobex-hps/payments.js +74 -5
- package/dist/esm/payments/hobex-hps/tecs-codes.d.ts +16 -0
- package/dist/esm/payments/hobex-hps/tecs-codes.js +363 -0
- package/dist/esm/payments/hobex-hps/transaction-response.d.ts +56 -8
- package/dist/esm/payments/hobex-hps/transaction-response.js +133 -65
- package/dist/esm/rechnung/texte.d.ts +5 -4
- package/dist/esm/rechnung/texte.js +16 -8
- package/dist/esm/rechnung/typen.d.ts +7 -0
- package/dist/esm/rechnung/vertrag.d.ts +7 -4
- package/dist/esm/rechnung/vertrag.js +14 -4
- package/fixtures/hobex-hps-codes.json +4075 -52
- package/fixtures/kasse-texte.json +1 -1
- package/fixtures/oberflaeche.json +1 -1
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +15 -0
- package/fixtures/rechnung-api.schema.json +7 -1
- package/fixtures/rechnung-texte.json +11 -9
- package/package.json +1 -1
|
@@ -0,0 +1,366 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Die Antwortcodeliste von TECS, erhalten ueber hobex am 16.09.2026.
|
|
4
|
+
*
|
|
5
|
+
* **Zwilling:** `kasseneck_api/lib/src/hobex_hps/tecs_codes.dart` -- dort
|
|
6
|
+
* steht die Einordnung ausfuehrlich. Kurz: eine Antwort des Hosts ohne
|
|
7
|
+
* Genehmigung lehnt ab; eine Genehmigung, die nicht `0` ist, bleibt offen;
|
|
8
|
+
* keine oder keine brauchbare Host-Antwort bleibt offen und bekommt ein
|
|
9
|
+
* Storno; Codes anderer TECS-Produkte sagen nichts ueber die Zahlung.
|
|
10
|
+
*
|
|
11
|
+
* TECS fuehrt die Host-Antworten vierstellig (`0055`), das Terminal sendet
|
|
12
|
+
* sie ohne Nullen (`55`). Die Tabelle fuehrt die Form des Terminals.
|
|
13
|
+
* Gemessene Codes (`0`, `9002`, `9003`, `9011`, `9027`, `9900`, `55`)
|
|
14
|
+
* stehen in `transaction-response.ts`, hier nur die uebrigen.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.TECS_CODES = void 0;
|
|
18
|
+
/** Ein Code, der nur aus der TECS-Liste stammt -- [title] ist der Titel dort. */
|
|
19
|
+
function tecs(code, title, meaning, effect, reason, rejectsRequest = false, sendReversal = false) {
|
|
20
|
+
return {
|
|
21
|
+
code,
|
|
22
|
+
title,
|
|
23
|
+
meaning,
|
|
24
|
+
conclusive: effect === 'conclusive',
|
|
25
|
+
effect,
|
|
26
|
+
reason,
|
|
27
|
+
source: 'documented',
|
|
28
|
+
rejectsRequest,
|
|
29
|
+
sendReversal,
|
|
30
|
+
tecsTitle: title,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
// Eine Zeile je Code, wie in der Liste von hobex.
|
|
34
|
+
exports.TECS_CODES = [
|
|
35
|
+
// -- ISO-8583-Antworten des Hosts --
|
|
36
|
+
tecs('1', 'Refer to Issuer', 'Host-Ablehnung: Rueckfrage beim Kartenherausgeber verlangt; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
37
|
+
tecs('2', 'Call AS call number', 'Host-Ablehnung: Rueckruf bei der Autorisierungsstelle verlangt; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
38
|
+
tecs('3', 'Invalid merchant number', 'Host-Ablehnung: Haendlernummer ungueltig; nichts belastet', 'conclusive', 'acquirerSetup'),
|
|
39
|
+
tecs('4', 'Retain card', 'Host-Ablehnung: Karte einziehen; nichts belastet', 'conclusive', 'cardBlocked'),
|
|
40
|
+
tecs('5', 'declined', 'Host-Ablehnung ohne naehere Angabe; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
41
|
+
tecs('6', 'Error', 'Host-Ablehnung wegen eines Fehlers -- der Host hat geantwortet und nicht genehmigt; nichts belastet', 'conclusive', 'hostRejected'),
|
|
42
|
+
tecs('7', 'Pick up card, special condition', 'Host-Ablehnung: Karte einziehen (Sonderfall); nichts belastet', 'conclusive', 'cardBlocked'),
|
|
43
|
+
tecs('8', 'Honor with idetification', 'Genehmigung gegen Ausweis -- eine Genehmigung, aber nicht "0"; ob das Terminal sie abgeschlossen hat, ist offen', 'hostUncertain', 'approvedWithCondition'),
|
|
44
|
+
tecs('9', 'Request in progress', 'Anfrage laeuft beim Host noch -- kein Endstand; ob belastet wird, ist offen', 'hostUncertain', 'hostTimeout', false, true),
|
|
45
|
+
tecs('10', 'Approved for partial amount', 'nur ueber einen Teilbetrag genehmigt -- es ist Geld geflossen, aber nicht der volle Betrag', 'hostUncertain', 'approvedWithCondition'),
|
|
46
|
+
tecs('11', 'VIP Approval', 'VIP-Genehmigung -- eine Genehmigung, aber nicht "0"; ob das Terminal sie abgeschlossen hat, ist offen', 'hostUncertain', 'approvedWithCondition'),
|
|
47
|
+
tecs('12', 'Invalid transaction', 'Host-Ablehnung: Vorgang ungueltig; nichts belastet', 'conclusive', 'hostRejected'),
|
|
48
|
+
tecs('13', 'Invalid amount', 'Host-Ablehnung: Betrag ungueltig; nichts belastet', 'conclusive', 'amountInvalid'),
|
|
49
|
+
tecs('14', 'Invalid card number', 'Host-Ablehnung: Kartennummer ungueltig; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
50
|
+
tecs('15', 'No such issuer', 'Host-Ablehnung: Kartenherausgeber unbekannt; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
51
|
+
tecs('16', 'Approved, Update track 3', 'Genehmigung mit Spur-3-Aktualisierung -- eine Genehmigung, aber nicht "0"; ob das Terminal sie abgeschlossen hat, ist offen', 'hostUncertain', 'approvedWithCondition'),
|
|
52
|
+
tecs('17', 'Customer Cancellation', 'vom Kunden abgebrochen; nichts belastet', 'conclusive', 'aborted'),
|
|
53
|
+
tecs('18', 'Customer dispute', 'Host-Ablehnung: Kundenreklamation; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
54
|
+
tecs('19', 'Re-enter Transaction', 'Host-Ablehnung: Vorgang neu eingeben; nichts belastet', 'conclusive', 'hostRejected'),
|
|
55
|
+
tecs('20', 'Invalid Response', 'ungueltige Antwort im Hostverkehr -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
56
|
+
tecs('21', 'No action taken', 'Host: keine Aktion ausgefuehrt; nichts belastet', 'conclusive', 'hostRejected'),
|
|
57
|
+
tecs('22', 'Suspected malfunction', 'vermutete Stoerung im Hostverkehr -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
58
|
+
tecs('23', 'Unacceptable transaction fee', 'Host-Ablehnung: Gebuehr nicht akzeptiert; nichts belastet', 'conclusive', 'hostRejected'),
|
|
59
|
+
tecs('24', 'File upd not supported by rcvr', 'Dateiaktualisierung nicht unterstuetzt -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
60
|
+
tecs('25', 'Unable to locate record', 'Datensatz nicht gefunden -- keine Aussage ueber den Vorgang', 'noStatement', 'noStatement'),
|
|
61
|
+
tecs('26', 'Duplicate file update record', 'doppelter Aktualisierungssatz -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
62
|
+
tecs('27', 'File update field edit error', 'Feldfehler bei Dateiaktualisierung -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
63
|
+
tecs('28', 'File temporarily unavailable', 'Datei voruebergehend nicht verfuegbar -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
64
|
+
tecs('29', 'File update not successful', 'Dateiaktualisierung gescheitert -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
65
|
+
tecs('30', 'Invalid format', 'Host-Ablehnung: Nachrichtenformat ungueltig; nichts belastet', 'conclusive', 'hostRejected'),
|
|
66
|
+
tecs('31', 'Issuer sign-off', 'Kartenherausgeber abgemeldet; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
67
|
+
tecs('32', 'Completed partially', 'nur teilweise ausgefuehrt -- es kann Geld geflossen sein, aber nicht der volle Betrag', 'hostUncertain', 'approvedWithCondition'),
|
|
68
|
+
tecs('33', 'Card expired', 'Host-Ablehnung: Karte abgelaufen; nichts belastet', 'conclusive', 'cardExpired'),
|
|
69
|
+
tecs('34', 'Suspicion of manipulation', 'Host-Ablehnung: Manipulationsverdacht; nichts belastet', 'conclusive', 'cardBlocked'),
|
|
70
|
+
tecs('35', 'Card acceptor contact Acquirer', 'Host-Ablehnung: Haendler soll hobex kontaktieren; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
71
|
+
tecs('36', 'Restricted Card', 'Host-Ablehnung: Karte eingeschraenkt; nichts belastet', 'conclusive', 'cardBlocked'),
|
|
72
|
+
tecs('37', 'Card acceptor call acquirer', 'Host-Ablehnung: Haendler soll hobex anrufen; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
73
|
+
tecs('38', 'Allowed PIN tries exceeded', 'Host-Ablehnung: zulaessige PIN-Versuche ueberschritten; nichts belastet', 'conclusive', 'pinTriesExceeded'),
|
|
74
|
+
tecs('40', 'Invalid function', 'Host-Ablehnung: Funktion ungueltig; nichts belastet', 'conclusive', 'hostRejected'),
|
|
75
|
+
tecs('41', 'Pick up Card', 'Host-Ablehnung: Karte einziehen (verloren gemeldet); nichts belastet', 'conclusive', 'cardBlocked'),
|
|
76
|
+
tecs('42', 'No universal account', 'Host-Ablehnung: kein passendes Konto; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
77
|
+
tecs('43', 'Stolen card, pick up', 'Host-Ablehnung: Karte gestohlen gemeldet; nichts belastet', 'conclusive', 'cardBlocked'),
|
|
78
|
+
tecs('44', 'No investment account', 'Host-Ablehnung: kein passendes Konto; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
79
|
+
tecs('51', 'Not sufficient funds', 'Host-Ablehnung: Konto nicht gedeckt; nichts belastet', 'conclusive', 'insufficientFunds'),
|
|
80
|
+
tecs('52', 'No checking account', 'Host-Ablehnung: kein Girokonto; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
81
|
+
tecs('53', 'No savings account', 'Host-Ablehnung: kein Sparkonto; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
82
|
+
tecs('54', 'Expired card', 'Host-Ablehnung: Karte abgelaufen; nichts belastet', 'conclusive', 'cardExpired'),
|
|
83
|
+
tecs('56', 'Card not in authorizer database', 'Host-Ablehnung: Karte beim Autorisierer unbekannt; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
84
|
+
tecs('57', 'Invalid card number Ref.', 'Host-Ablehnung: Vorgang fuer diese Karte nicht erlaubt; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
85
|
+
tecs('58', 'Trxn not permitted to card', 'Host-Ablehnung: Vorgang fuer diese Karte nicht erlaubt; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
86
|
+
tecs('59', 'suspected fraud', 'Host-Ablehnung: Betrugsverdacht; nichts belastet', 'conclusive', 'cardBlocked'),
|
|
87
|
+
tecs('60', 'Card acceptor conteact acquirer', 'Host-Ablehnung: Haendler soll hobex kontaktieren; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
88
|
+
tecs('61', 'Exceeds wihtdrawal limit', 'Host-Ablehnung: Verfuegungsrahmen ueberschritten; nichts belastet', 'conclusive', 'insufficientFunds'),
|
|
89
|
+
tecs('62', 'Restricted card', 'Host-Ablehnung: Karte eingeschraenkt; nichts belastet', 'conclusive', 'cardBlocked'),
|
|
90
|
+
tecs('63', 'Security violation', 'Host-Ablehnung: Sicherheitsverstoss; nichts belastet', 'conclusive', 'hostRejected'),
|
|
91
|
+
tecs('64', 'Invalid Transaction amount', 'Host-Ablehnung: Betrag ungueltig; nichts belastet', 'conclusive', 'amountInvalid'),
|
|
92
|
+
tecs('65', 'Activity count exceeded', 'Host-Ablehnung: zu viele Vorgaenge auf der Karte; nichts belastet', 'conclusive', 'insufficientFunds'),
|
|
93
|
+
tecs('66', 'Card acceptor call acquirer', 'Host-Ablehnung: Haendler soll hobex anrufen; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
94
|
+
tecs('67', 'Card pick up at ATM', 'Host-Ablehnung: Karte einziehen; nichts belastet', 'conclusive', 'cardBlocked'),
|
|
95
|
+
tecs('68', 'Response received too late', 'Antwort des Kartenherausgebers kam zu spaet -- ob belastet wurde, ist offen', 'hostUncertain', 'hostTimeout', false, true),
|
|
96
|
+
tecs('75', 'PIN entered incorrectly too often', 'Host-Ablehnung: PIN zu oft falsch; nichts belastet', 'conclusive', 'pinTriesExceeded'),
|
|
97
|
+
tecs('76', 'Previos message not found', 'vorherige Nachricht nicht gefunden -- keine Aussage ueber den Vorgang', 'noStatement', 'noStatement'),
|
|
98
|
+
tecs('77', 'PIN entry necessary', 'Host-Ablehnung: PIN-Eingabe erforderlich; nichts belastet', 'conclusive', 'pinRequired'),
|
|
99
|
+
tecs('80', 'Invalid date', 'Host-Ablehnung: Datum ungueltig; nichts belastet', 'conclusive', 'hostRejected'),
|
|
100
|
+
tecs('81', 'Message flow error', 'Fehler in der Nachrichtenfolge mit dem Host -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
101
|
+
tecs('82', 'Authorization center not available for 600 seconds', 'Autorisierungszentrale nicht erreichbar (600 s); nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
102
|
+
tecs('83', 'Authorization center not available for 300 seconds', 'Autorisierungszentrale nicht erreichbar (300 s); nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
103
|
+
tecs('86', 'PIN Validation not possible', 'Host-Ablehnung: PIN-Pruefung nicht moeglich; nichts belastet', 'conclusive', 'hostRejected'),
|
|
104
|
+
tecs('87', 'Purchase Amount Only, no Cash Back Allowed', 'Host-Ablehnung: Bargeldauszahlung nicht erlaubt; nichts belastet', 'conclusive', 'amountInvalid'),
|
|
105
|
+
tecs('88', 'Cryptographic failure', 'Host-Ablehnung: Kryptografiefehler; nichts belastet', 'conclusive', 'hostRejected'),
|
|
106
|
+
tecs('89', 'Authentication failure', 'Host-Ablehnung: Authentisierung gescheitert; nichts belastet', 'conclusive', 'hostRejected'),
|
|
107
|
+
tecs('90', 'Cutoff is in process', 'Host im Tagesabschluss; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
108
|
+
tecs('91', 'Card issuer temporarily not reachable', 'Kartenherausgeber voruebergehend nicht erreichbar; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
109
|
+
tecs('92', 'The card type is not processed by the authorization center', 'Host-Ablehnung: Kartentyp wird nicht verarbeitet; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
110
|
+
tecs('93', 'Validation of law', 'Host-Ablehnung aus rechtlichen Gruenden; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
111
|
+
tecs('94', 'Data has been transmitted twice', 'Daten doppelt uebertragen -- ein erster Vorgang unter dieser Kennung kann belastet haben', 'hostUncertain', 'hostFault', false, true),
|
|
112
|
+
tecs('95', 'Reconcile / Prepay transaction failed', 'Abstimmung gescheitert -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
113
|
+
tecs('96', 'Processing temporarily not possible', 'Verarbeitung voruebergehend nicht moeglich; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
114
|
+
tecs('97', 'Security breach - MAC check indicates error condition', 'Host-Ablehnung: MAC-Pruefung gescheitert; nichts belastet', 'conclusive', 'hostRejected'),
|
|
115
|
+
tecs('98', 'Date and time not plausible', 'Host-Ablehnung: Datum und Uhrzeit unplausibel; nichts belastet', 'conclusive', 'hostRejected'),
|
|
116
|
+
tecs('99', 'Error in PAC encryption detected', 'Host-Ablehnung: Fehler in der PIN-Verschluesselung; nichts belastet', 'conclusive', 'hostRejected'),
|
|
117
|
+
tecs('117', 'Incorrect PIN', 'Host-Ablehnung: PIN falsch; nichts belastet', 'conclusive', 'wrongPin'),
|
|
118
|
+
// -- TECS-Backend --
|
|
119
|
+
tecs('3018', 'Invalid Currency', 'Waehrung ungueltig -- Abweisung der Anfrage; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
120
|
+
tecs('3019', 'Invalid Terminal', 'Terminal ungueltig -- Abweisung der Anfrage; nichts belastet', 'conclusive', 'acquirerSetup', true),
|
|
121
|
+
tecs('3021', 'Invalid Terminal Type', 'Terminaltyp ungueltig -- Abweisung der Anfrage; nichts belastet', 'conclusive', 'acquirerSetup', true),
|
|
122
|
+
tecs('3030', 'Declined Offline transaction', 'Offline-Vorgang abgelehnt; nichts belastet', 'conclusive', 'cardDeclined'),
|
|
123
|
+
tecs('3031', 'Compeletion Amout over CTLS Limit', 'Betrag ueber dem Kontaktlos-Limit; nichts belastet', 'conclusive', 'amountInvalid'),
|
|
124
|
+
tecs('3032', 'Invalid Refund password', 'Passwort fuer die Gutschrift falsch; nichts ausgezahlt', 'conclusive', 'refundPassword'),
|
|
125
|
+
tecs('3033', 'IBAN should be entered manually', 'Lastschriftverfahren: IBAN manuell eingeben -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
126
|
+
tecs('3034', 'entered IBAN not valid, try again', 'Lastschriftverfahren: IBAN ungueltig -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
127
|
+
tecs('3035', 'Empty Request', 'leere Anfrage -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
128
|
+
tecs('3036', 'Unknown Error - Fallback Exception', 'unbekannter Fehler im Backend -- ob belastet wurde, ist offen', 'hostUncertain', 'internalError'),
|
|
129
|
+
tecs('3037', 'Unsupported transaction type', 'Vorgangstyp nicht unterstuetzt -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
130
|
+
tecs('3038', 'Invalid card data', 'Kartendaten ungueltig; nichts belastet', 'conclusive', 'cardReadFailed'),
|
|
131
|
+
tecs('3039', 'Fatal error - backend offline', 'Backend nicht erreichbar; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
132
|
+
tecs('3050', 'ATM/POS terminal number cannot be located', 'Terminalnummer unbekannt -- Abweisung; nichts belastet', 'conclusive', 'acquirerSetup', true),
|
|
133
|
+
tecs('3051', 'Issuer response not received by CUPS', 'UnionPay: keine Antwort des Kartenherausgebers -- ob belastet wurde, ist offen', 'hostUncertain', 'hostTimeout', false, true),
|
|
134
|
+
tecs('3052', 'PIN Block Error', 'UnionPay: PIN-Block fehlerhaft; nichts belastet', 'conclusive', 'hostRejected'),
|
|
135
|
+
tecs('3053', 'Reversed internally: Successful transaction with fault', 'UnionPay: intern storniert; nichts belastet', 'conclusive', 'reversedByHost'),
|
|
136
|
+
tecs('3054', 'Account not found in Transfer-in side', 'UnionPay: Konto nicht gefunden; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
137
|
+
tecs('3055', 'Reversed internally: Successful transaction with fault', 'UnionPay: intern storniert; nichts belastet', 'conclusive', 'reversedByHost'),
|
|
138
|
+
tecs('3056', 'Reversed internally: Successful transaction with fault', 'UnionPay: intern storniert; nichts belastet', 'conclusive', 'reversedByHost'),
|
|
139
|
+
tecs('3057', 'Reversed internally: Successful transaction with fault', 'UnionPay: intern storniert; nichts belastet', 'conclusive', 'reversedByHost'),
|
|
140
|
+
tecs('3058', 'Security processing failure', 'UnionPay: Sicherheitsverarbeitung gescheitert; nichts belastet', 'conclusive', 'hostRejected'),
|
|
141
|
+
tecs('3059', 'No arrears (transaction receipt not printed)', 'UnionPay: Beleg nicht gedruckt -- keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
142
|
+
tecs('3060', 'Illegal Status of Acquirer', 'UnionPay: Acquirer-Status unzulaessig; nichts belastet', 'conclusive', 'acquirerSetup'),
|
|
143
|
+
tecs('3061', 'Incorrect IIN', 'UnionPay: IIN falsch; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
144
|
+
tecs('3062', 'Reversed internally: UPI action code Y1', 'UnionPay: intern storniert (Y1); nichts belastet', 'conclusive', 'reversedByHost'),
|
|
145
|
+
tecs('3063', 'Reversed internally: UPI action code Y3', 'UnionPay: intern storniert (Y3); nichts belastet', 'conclusive', 'reversedByHost'),
|
|
146
|
+
tecs('3064', 'declined, UPI action code Z1', 'UnionPay: abgelehnt (Z1); nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
147
|
+
tecs('3065', 'declined, UPI action code Z3', 'UnionPay: abgelehnt (Z3); nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
148
|
+
tecs('3066', 'Items not on Bankbook beyond limit, declined', 'UnionPay: Limit ueberschritten; nichts belastet', 'conclusive', 'insufficientFunds'),
|
|
149
|
+
tecs('3531', 'ws: TMC-lite Merchant Login error -WEBSERVICEONLY', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
150
|
+
tecs('3532', 'ws: TMC-lite Merchant Login error -INACTIVEUSER', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
151
|
+
tecs('3533', 'ws: TMC-lite Merchant Login error -LOCKEDUSER', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
152
|
+
tecs('3534', 'ws: TMC-lite Merchant Login error -PASSWORDEXPIRED', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
153
|
+
tecs('3537', 'ws: TMC-lite Merchant Login error -Username / Password invalid', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
154
|
+
tecs('3539', 'ws: TMC-lite Merchant Login error - NOTOK - General Error', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
155
|
+
tecs('3547', 'ws: TMC-lite Change Password error - Username / Password invalid', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
156
|
+
tecs('3549', 'ws: TMC-lite Change Password error - General failure', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
157
|
+
tecs('3559', 'ws: TMC-lite Reset Password error - General failure', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
158
|
+
tecs('3569', 'ws: TMC-lite Send receipt error - General failure', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
159
|
+
tecs('3579', 'ws: TMC-lite Signiture error - General failure', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
160
|
+
tecs('3589', 'ws: TMC-lite Get/Set MobileTx error - General failure', 'Webservice (TMC-lite) -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
161
|
+
tecs('3590', 'Template Webservice: Insertion Failure.', 'Webservice -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
162
|
+
tecs('3596', 'SendSMS Webservice: This phone number is not valid.', 'SMS-Versand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
163
|
+
tecs('3597', 'SendSMS Webservice: Twilio could not send the message.', 'SMS-Versand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
164
|
+
tecs('3598', 'SendSMS Webservice: SimpleSMS could not send the message.', 'SMS-Versand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
165
|
+
tecs('3693', 'SendEmail Webservice: The template could not be found.', 'Mailversand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
166
|
+
tecs('3694', 'SendEmail Webservice: The template could not be parsed.', 'Mailversand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
167
|
+
tecs('3695', 'SendEmail Webservice: The template could not be processed.', 'Mailversand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
168
|
+
tecs('3696', 'SendEmail Webservice: This email address is not valid.', 'Mailversand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
169
|
+
tecs('3697', 'SendEmail Webservice: Mail could not be sent.', 'Mailversand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
170
|
+
tecs('3699', 'SendEmail Webservice: general failure', 'Mailversand -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
171
|
+
tecs('3993', 'Fallback not allowed (CAT)', 'Rueckfall auf Magnetstreifen nicht erlaubt; nichts belastet', 'conclusive', 'cardReadFailed'),
|
|
172
|
+
tecs('3994', 'Fallback not allowed (DB)', 'Rueckfall auf Magnetstreifen nicht erlaubt; nichts belastet', 'conclusive', 'cardReadFailed'),
|
|
173
|
+
tecs('3995', 'Maestro PreAuth Not Allowed - Declined', 'Vorautorisierung mit Maestro nicht erlaubt; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
174
|
+
tecs('3996', 'Invalid TxDateTime (TX merchant time to server time too long)', 'Uhrzeit des Terminals weicht zu weit ab; nichts belastet', 'conclusive', 'hostRejected'),
|
|
175
|
+
tecs('4000', 'tmcpconsumer: APPLICATION_CONFIGURATION_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
176
|
+
tecs('4001', 'tmcpconsumer: ACCESS_DENIED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
177
|
+
tecs('4002', 'tmcpconsumer: APPLICATION_ERROR', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
178
|
+
tecs('4003', 'tmcpconsumer: ACCESS_FORBIDDEN', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
179
|
+
tecs('4004', 'tmcpconsumer: APPLICATION_INPUT_ERROR', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
180
|
+
tecs('4005', 'tmcpconsumer: INVALID_INPUT', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
181
|
+
tecs('4006', 'tmcpconsumer: USERACCOUNTNOTFOUND', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
182
|
+
tecs('4007', 'tmcpconsumer: TOKEN_NOT_VALID', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
183
|
+
tecs('4011', 'tmcpconsumer: ACTIVATECARD_ACCOUNTNOTFOUND', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
184
|
+
tecs('4012', 'tmcpconsumer: PAYMENTPROCESSING_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
185
|
+
tecs('4013', 'tmcpconsumer: PAYMENTPROCESSING_PARTIALLY_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
186
|
+
tecs('4020', 'tmcpconsumer: STARTPAYMENT_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
187
|
+
tecs('4021', 'tmcpconsumer: EXECUTEPAYMENT_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
188
|
+
tecs('4022', 'tmcpconsumer: SMSVERIFICATION_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
189
|
+
tecs('4023', 'tmcpconsumer: USERPROFILEUPDARE_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
190
|
+
tecs('4024', 'tmcpconsumer: SENDCONFIRMATIONSMS_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
191
|
+
tecs('4025', 'tmcpconsumer: GETUSERPROFILE_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
192
|
+
tecs('4026', 'tmcpconsumer: REGISTERNEWCONSUMER_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
193
|
+
tecs('4027', 'tmcpconsumer: CONFIRMUSERREGISTRATION_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
194
|
+
tecs('4028', 'tmcpconsumer: INVALIDCONFIRMATIONEMAIL', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
195
|
+
tecs('4029', 'tmcpconsumer: EMAILCONFIRMATION_TIME_EXCEEDED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
196
|
+
tecs('4030', 'tmcpconsumer: SMSCONFIRMATION_TIME_EXCEEDED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
197
|
+
tecs('4060', 'tmcpconsumer: WAVECREST_AUTHENTICATION_FAILED', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
198
|
+
tecs('4061', 'tmcpconsumer: WAVECREST_FAILED424', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
199
|
+
tecs('4062', 'tmcpconsumer: WAVECREST_FAILED400', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
200
|
+
tecs('4063', 'tmcpconsumer: WAVECREST_FAILED412', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
201
|
+
tecs('4064', 'tmcpconsumer: WAVECREST_FAILED500', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
202
|
+
tecs('4065', 'tmcpconsumer: WAVECREST_FAILED_COMMUNICATION', 'Verbraucher-Plattform (tmcpconsumer) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
203
|
+
tecs('5127', 'Technical Error HSM', 'technischer Fehler im Sicherheitsmodul des Backends -- ob belastet wurde, ist offen', 'hostUncertain', 'internalError'),
|
|
204
|
+
tecs('5158', 'Invalid Tx Date Time', 'Datum/Uhrzeit des Vorgangs ungueltig; nichts belastet', 'conclusive', 'hostRejected'),
|
|
205
|
+
tecs('5256', 'HSM Communication error', 'Verbindungsfehler zum Sicherheitsmodul des Backends -- ob belastet wurde, ist offen', 'hostUncertain', 'internalError'),
|
|
206
|
+
tecs('5271', 'HSM: wrong key derivation data (config?)', 'Schluesselableitung falsch (Einrichtung) -- vor der Weiterleitung; nichts belastet', 'conclusive', 'acquirerSetup'),
|
|
207
|
+
tecs('5272', 'Error recrypting PAC', 'PIN-Umschluesselung gescheitert -- vor der Weiterleitung; nichts belastet', 'conclusive', 'hostRejected'),
|
|
208
|
+
tecs('5273', 'MAC calculation failed', 'MAC-Berechnung gescheitert -- vor der Weiterleitung; nichts belastet', 'conclusive', 'hostRejected'),
|
|
209
|
+
tecs('5274', 'Error recalculating received MAC', 'MAC der Antwort nicht nachrechenbar -- die Antwort des Acquirers ist unbrauchbar, ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
210
|
+
tecs('5275', 'MAC received differs from recalculated value', 'MAC der Antwort weicht ab -- die Antwort des Acquirers ist unbrauchbar, ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
211
|
+
tecs('5276', 'Partial authorization not allowed', 'Teilgenehmigung nicht erlaubt -- der Kartenherausgeber hat einen Teilbetrag genehmigt, ob das zurueckgenommen ist, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
212
|
+
tecs('5277', 'Verification error acq response', 'Antwort des Acquirers fehlerhaft -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
213
|
+
tecs('5278', 'Invalid response from acquirer', 'Antwort des Acquirers ungueltig -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
214
|
+
tecs('6000', 'Risk Management - Process Tx failed', 'vom Risikomanagement abgewiesen; nichts belastet', 'conclusive', 'hostRejected'),
|
|
215
|
+
tecs('6001', 'Risk Management - Merchant checks failed', 'vom Risikomanagement abgewiesen (Haendlerpruefung); nichts belastet', 'conclusive', 'hostRejected'),
|
|
216
|
+
tecs('6002', 'Risk Management - PSP checks failed', 'vom Risikomanagement abgewiesen (PSP-Pruefung); nichts belastet', 'conclusive', 'hostRejected'),
|
|
217
|
+
tecs('6003', 'Risk Management - MC & PSP checks failed', 'vom Risikomanagement abgewiesen; nichts belastet', 'conclusive', 'hostRejected'),
|
|
218
|
+
tecs('7777', 'Transaction successful (MsgType 4 - Get User Data)', 'Nutzerdatenabfrage erfolgreich -- keine Zahlung, deshalb keine Aussage', 'noStatement', 'technicalError'),
|
|
219
|
+
tecs('7001', 'TecsWeb: Cancel pressed by user', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
220
|
+
tecs('7002', 'TecsWeb: Communication with TecsXML failed', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
221
|
+
tecs('7005', 'TecsWeb: MPI Error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
222
|
+
tecs('7006', 'TecsWeb: User validation failed', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
223
|
+
tecs('7007', 'TecsWeb: System error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
224
|
+
tecs('7008', 'TecsWeb: Unauthorized', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
225
|
+
tecs('7009', 'TecsWeb: TokenIO access denied', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
226
|
+
tecs('7010', 'TecsWeb: TokenIO error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
227
|
+
tecs('7011', 'TecsWeb: Reversal failed', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
228
|
+
tecs('7012', 'TecsWeb: Reversal', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
229
|
+
tecs('7013', 'TecsWeb: MPI2 Signature Mismatch', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
230
|
+
tecs('7014', 'TecsWeb: MPI2 Signature Missing', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
231
|
+
tecs('7015', 'TecsWeb: Signature Mismatch', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
232
|
+
tecs('7016', 'TecsWeb: Invalid Parameter', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
233
|
+
tecs('7017', 'TecsWeb: Invalid Merchant', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
234
|
+
tecs('7018', 'TecsWeb: Blik payment error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
235
|
+
tecs('7019', 'TecsWeb: Blik payment incomplete error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
236
|
+
tecs('7020', 'TecsWeb: Blik payment configuration error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
237
|
+
tecs('7021', 'TecsWeb: Pay By Link payment error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
238
|
+
tecs('7022', 'TecsWeb: Pay By Link incomplete error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
239
|
+
tecs('7023', 'TecsWeb: MPI1 Fallback error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
240
|
+
tecs('7024', 'TecsWeb: MPI2 error', 'Online-Zahlung (TecsWeb) -- betrifft keine Kartenzahlung am Terminal', 'noStatement', 'technicalError'),
|
|
241
|
+
tecs('7100', 'UNKNOWN (all other clearing.status)', 'Clearingstatus -- keine Aussage ueber den Vorgang am Terminal', 'noStatement', 'technicalError'),
|
|
242
|
+
tecs('7101', 'CANCELLED (if clearing.status 4 (cancelled))', 'Clearingstatus -- keine Aussage ueber den Vorgang am Terminal', 'noStatement', 'technicalError'),
|
|
243
|
+
tecs('7102', 'CLEARING_ERROR (if clearing.status 3 (error))', 'Clearingstatus -- keine Aussage ueber den Vorgang am Terminal', 'noStatement', 'technicalError'),
|
|
244
|
+
// -- TecsClient und PinPad --
|
|
245
|
+
tecs('8001', 'Parsing error', 'Anfrage nicht lesbar -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
246
|
+
tecs('8002', 'Invalid message type', 'Nachrichtentyp ungueltig -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
247
|
+
tecs('8003', 'PinPad device error', 'Geraetefehler am PinPad; nichts belastet', 'conclusive', 'terminalFault'),
|
|
248
|
+
tecs('8004', 'Transaction canceled by PinPad', 'am PinPad abgebrochen; nichts belastet', 'conclusive', 'aborted'),
|
|
249
|
+
tecs('8005', 'Transaction declined by PinPad', 'vom PinPad abgelehnt; nichts belastet', 'conclusive', 'cardDeclined'),
|
|
250
|
+
tecs('8006', 'Communication with TecsEngine failed', 'Verbindung zum Backend gescheitert -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
251
|
+
tecs('8007', 'Invalid card number', 'Kartennummer ungueltig; nichts belastet', 'conclusive', 'cardDeclined'),
|
|
252
|
+
tecs('8008', 'Technical cancellation failed', 'technische Stornierung gescheitert -- der Vorgang kann belastet sein', 'hostUncertain', 'hostFault', false, true),
|
|
253
|
+
tecs('8009', 'Technical cancellation', 'technisch storniert -- das Terminal hat den Vorgang selbst zurueckgenommen; nichts belastet', 'conclusive', 'hostTimeoutReversed'),
|
|
254
|
+
tecs('8010', 'Invalid response code from TecsEngine', 'ungueltiger Antwortcode vom Backend -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
255
|
+
tecs('8011', 'Unable to read magswipe', 'Magnetstreifen nicht lesbar; nichts belastet', 'conclusive', 'cardReadFailed'),
|
|
256
|
+
tecs('8012', 'ECRNotif communication failed', 'Benachrichtigung an die Kasse gescheitert -- keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
257
|
+
tecs('8013', 'PinPad not operable', 'PinPad nicht betriebsbereit; nichts belastet', 'conclusive', 'terminalFault'),
|
|
258
|
+
tecs('8014', 'PinPad Busy (Transaction in progress)', 'PinPad beschaeftigt -- die Anfrage wurde nicht angenommen; nichts belastet', 'conclusive', 'terminalBusy', true),
|
|
259
|
+
tecs('8015', 'Invalid Transaction (Trying to abort not-in-progress tx)', 'Abbruch eines nicht laufenden Vorgangs -- Abweisung der Anfrage', 'conclusive', 'notAbortable', true),
|
|
260
|
+
tecs('8016', 'EMV completion failed', 'EMV-Abschluss nach der Hostantwort gescheitert -- ob belastet bleibt, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
261
|
+
tecs('8017', 'Connection to local network failed (or terminal in force offline mode)', 'keine Netzverbindung bzw. Offline-Betrieb erzwungen; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
262
|
+
tecs('8018', 'PinPad Ready (PP status, resp to 9043)', 'Geraetestatus "bereit" -- kein Ergebnis eines Vorgangs', 'noStatement', 'noStatement'),
|
|
263
|
+
tecs('8019', 'Waiting for card (PP status, resp to 9043)', 'Geraetestatus "wartet auf Karte" -- kein Ergebnis eines Vorgangs', 'noStatement', 'noStatement'),
|
|
264
|
+
tecs('8020', 'Card read successfully (PP status, resp to 9043)', 'Geraetestatus "Karte gelesen" -- kein Ergebnis eines Vorgangs', 'noStatement', 'noStatement'),
|
|
265
|
+
tecs('81xx', 'Parsing problem: Field No. xx', 'Feld xx der Anfrage nicht lesbar -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
266
|
+
tecs('8201', 'Maximum amount limit for offline transaction exceeded', 'offline: Betragsgrenze ueberschritten; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
267
|
+
tecs('8202', 'Maximum offline transaction count exceeded', 'offline: Hoechstzahl an Vorgaengen erreicht; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
268
|
+
tecs('8203', 'Communication failed: Invalid card (Terminal is in force offline mode and card is not allowed for offline)', 'offline: Karte offline nicht erlaubt; nichts belastet', 'conclusive', 'hostUnavailable'),
|
|
269
|
+
tecs('8500', 'mPOS: (PosMate) General Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
270
|
+
tecs('8501', 'mPOS: (Chip) Application Selection Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
271
|
+
tecs('8502', 'mPOS: (Chip) Initiate Application Processing Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
272
|
+
tecs('8503', 'mPOS: (Chip) Read Application Data Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
273
|
+
tecs('8504', 'mPOS: (Chip) Offline Data Authentication Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
274
|
+
tecs('8505', 'mPOS: (Chip) Process Restrictions Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
275
|
+
tecs('8506', 'mPOS: (Chip) Terminal Risk Management Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
276
|
+
tecs('8507', 'mPOS: (Chip) Cardholder Verification Method Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
277
|
+
tecs('8508', 'mPOS: (Chip) Terminal Action Analysis Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
278
|
+
tecs('8509', 'mPOS: (Chip) Card Action Analysis Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
279
|
+
tecs('8510', 'mPOS: (Chip) Completion Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
280
|
+
tecs('8511', 'mPOS: (EPOS) Transaction Terminated', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
281
|
+
tecs('8512', 'mPOS: (Chip) No Answer to Reset', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
282
|
+
tecs('8513', 'mPOS: (Swipe) Read Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
283
|
+
tecs('8514', 'mPOS: (Chip) Card Removed', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
284
|
+
tecs('8515', 'mPOS: (PosMate) User Cancelled', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
285
|
+
tecs('8516', 'mPOS: (Chip) No Supported Applications', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
286
|
+
tecs('8517', 'mPOS: (Chip) Card Blocked', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
287
|
+
tecs('8518', 'mPOS: (Chip) Read Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
288
|
+
tecs('8519', 'mPOS: (PosMate) User Time Out', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
289
|
+
tecs('8520', 'mPOS: (PosMate) DUKPT Key Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
290
|
+
tecs('8521', 'mPOS: MK/SK Key Failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
291
|
+
tecs('8522', 'mPOS: (Contactless) Not Allowed', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
292
|
+
tecs('8523', 'mPOS: (Contactless) Aborted', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
293
|
+
tecs('8530', 'mPOS: TMC-lite Merchant Login successful', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
294
|
+
tecs('8531', 'mPOS: TMC-lite Merchant Login error - Webservice only user', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
295
|
+
tecs('8532', 'mPOS: TMC-lite Merchant Login error - Inactive user', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
296
|
+
tecs('8533', 'mPOS: TMC-lite Merchant Login error - Locked user', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
297
|
+
tecs('8534', 'mPOS: TMC-lite Merchant Login error - Password expired', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
298
|
+
tecs('8537', 'mPOS: TMC-lite Merchant Login error - Incorrect username', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
299
|
+
tecs('8538', 'mPOS: TMC-lite Merchant Login error - Incorrect password', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
300
|
+
tecs('8539', 'mPOS: TMC-lite Merchant Login error - General failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
301
|
+
tecs('8540', 'mPOS: TMC-lite Change Password successful', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
302
|
+
tecs('8547', 'mPOS: TMC-lite Change Password error - Incorrect username', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
303
|
+
tecs('8548', 'mPOS: TMC-lite Change Password error - Incorrect password', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
304
|
+
tecs('8549', 'mPOS: TMC-lite Change Password error - General failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
305
|
+
tecs('8550', 'mPOS: TMC-lite Send Receipt successful', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
306
|
+
tecs('8559', 'mPOS: TMC-lite Send Receipt error - General failure', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
307
|
+
tecs('8560', 'mPOS: Communication with TMC-lite failed', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
308
|
+
tecs('8561', 'mPOS: Communication with TUS failed', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
309
|
+
tecs('8562', 'mPOS: SW upgrade filesystem error', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
310
|
+
tecs('8563', 'mPOS: SW upgrade error', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
311
|
+
tecs('8564', 'mPOS: Bluetooth connect error', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
312
|
+
tecs('8565', 'mPOS: Logon error', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
313
|
+
tecs('8566', 'mPOS: Invalid Amount', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
314
|
+
tecs('8567', 'mPOS: Signature rejected', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
315
|
+
tecs('8568', 'mPOS: Signature callback was not set', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
316
|
+
tecs('8569', 'mPOS: Communication with TecsXML failed', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
317
|
+
tecs('8570', 'mPOS: Technical cancellation has been sent', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
318
|
+
tecs('8571', 'mPOS: Spm2 didn\'t respond within defined timeout to TCM', 'mPOS-Leser -- betrifft das HPS-Terminal nicht, keine Aussage ueber den Vorgang', 'noStatement', 'technicalError'),
|
|
319
|
+
tecs('8809', 'TecsClientECRRest, TC communication failed.', 'Verbindung zwischen Kassenschnittstelle und Zahlungsanwendung gescheitert -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
320
|
+
tecs('8999', 'TecsClient/PinPad System error', 'Systemfehler der Zahlungsanwendung -- ob belastet wurde, ist offen', 'hostUncertain', 'internalError'),
|
|
321
|
+
// -- TECS-Verarbeitung --
|
|
322
|
+
tecs('9001', 'Invalid Message received', 'Nachricht ungueltig -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
323
|
+
tecs('9004', 'Invalid Currency', 'Waehrung ungueltig -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
324
|
+
tecs('9005', 'Invalid Transaction Number', 'Vorgangsnummer ungueltig -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
325
|
+
tecs('9006', 'Technical error: Connection failed', 'Verbindung gescheitert -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
326
|
+
tecs('9007', 'Duplicate offline Tx', 'doppelter Offline-Vorgang -- ein erster Vorgang kann belastet haben', 'hostUncertain', 'hostFault', false, true),
|
|
327
|
+
tecs('9008', 'Invalid Card Number', 'Kartennummer ungueltig; nichts belastet', 'conclusive', 'cardDeclined'),
|
|
328
|
+
tecs('9009', 'Invalid Terminal No', 'Terminalnummer ungueltig -- Abweisung; nichts belastet', 'conclusive', 'acquirerSetup', true),
|
|
329
|
+
tecs('9010', 'CVV/CVC2 must be present', 'Pruefziffer fehlt -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
330
|
+
tecs('9012', 'Invalid Amount', 'Betrag ungueltig; nichts belastet', 'conclusive', 'amountInvalid'),
|
|
331
|
+
tecs('9013', 'Invalid Acquirer', 'Acquirer ungueltig -- Abweisung; nichts belastet', 'conclusive', 'acquirerSetup', true),
|
|
332
|
+
tecs('9014', 'Invalid PIN', 'PIN falsch; nichts belastet', 'conclusive', 'wrongPin'),
|
|
333
|
+
tecs('9015', 'PIN retry exceeded', 'PIN zu oft falsch; nichts belastet', 'conclusive', 'pinTriesExceeded'),
|
|
334
|
+
tecs('9016', 'Invalid Product', 'Kartenprodukt nicht zugelassen; nichts belastet', 'conclusive', 'issuerDeclined'),
|
|
335
|
+
tecs('9017', 'Limit exceeded', 'Limit ueberschritten; nichts belastet', 'conclusive', 'insufficientFunds'),
|
|
336
|
+
tecs('9018', 'Card in the Blacklist', 'Karte gesperrt (Sperrliste); nichts belastet', 'conclusive', 'cardBlocked'),
|
|
337
|
+
tecs('9019', 'Invalid ECR Data', 'Kassendaten ungueltig -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
338
|
+
tecs('9020', 'Refund retry exceeded', 'zu viele Gutschriftversuche; nichts ausgezahlt', 'conclusive', 'refundRejected'),
|
|
339
|
+
tecs('9021', 'Refund amount too high', 'Gutschriftbetrag zu hoch; nichts ausgezahlt', 'conclusive', 'refundRejected'),
|
|
340
|
+
tecs('9022', 'Pending', 'Vorgang schwebt -- kein Endstand; ob belastet wird, ist offen', 'hostUncertain', 'hostTimeout', false, true),
|
|
341
|
+
tecs('9023', 'Cancel Denied, TX already cleared', 'Aufhebung abgelehnt, bereits abgerechnet -- die Zahlung bleibt belastet', 'conclusive', 'cancelDenied'),
|
|
342
|
+
tecs('9024', 'Invalid IBAN: format error', 'Lastschriftverfahren: IBAN ungueltig -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
343
|
+
tecs('9025', 'Iban Blacklisted', 'Lastschriftverfahren: IBAN gesperrt -- betrifft keine Kartenzahlung', 'noStatement', 'technicalError'),
|
|
344
|
+
tecs('9026', 'Amount Limit Reached', 'Betragsgrenze erreicht; nichts belastet', 'conclusive', 'amountInvalid'),
|
|
345
|
+
tecs('9028', 'Declined, Refund already performed', 'Gutschrift bereits ausgefuehrt; nichts erneut ausgezahlt', 'conclusive', 'refundRejected'),
|
|
346
|
+
tecs('9029', 'TIP amount missing', 'Trinkgeldbetrag fehlt -- Abweisung; nichts belastet', 'conclusive', 'requestRejected', true),
|
|
347
|
+
tecs('9031', 'Cancellation of Refund not allowed', 'Aufhebung einer Gutschrift nicht erlaubt -- die Gutschrift bleibt bestehen', 'conclusive', 'requestRejected', true),
|
|
348
|
+
tecs('9032', 'Declined (completed only partially), reversed automatically', 'nur teilweise ausgefuehrt und automatisch storniert; nichts belastet', 'conclusive', 'reversedByHost'),
|
|
349
|
+
tecs('9033', 'Original TX declined - cannot cancel (cancelling a declined transaction is forbidden)', 'Originalzahlung war abgelehnt, nichts aufzuheben -- als Antwort auf eine Aufhebung keine Aussage "weiterhin belastet"', 'noStatement', 'originalDeclined'),
|
|
350
|
+
tecs('9034', 'Cardholder Initiated Transaction Not Found', 'Bezugsvorgang nicht gefunden -- keine Aussage ueber den Vorgang', 'noStatement', 'noStatement'),
|
|
351
|
+
tecs('9096', 'Invalid TxDateTime (TX merchant time to server time too long)', 'Uhrzeit des Terminals weicht zu weit ab; nichts belastet', 'conclusive', 'hostRejected'),
|
|
352
|
+
tecs('9222', 'Offline Tx Cancellation Denied', 'Aufhebung eines Offline-Vorgangs abgelehnt -- die Zahlung bleibt belastet', 'conclusive', 'cancelDenied'),
|
|
353
|
+
tecs('9901', 'Technical error: Internal application error', 'interner Anwendungsfehler im Backend -- ob belastet wurde, ist offen', 'hostUncertain', 'internalError'),
|
|
354
|
+
tecs('9902', 'Technical Error: Database', 'Datenbankfehler im Backend -- ob belastet wurde, ist offen', 'hostUncertain', 'internalError'),
|
|
355
|
+
tecs('9905', 'Acquirer Timeout', 'Zeitueberschreitung beim Acquirer -- ob belastet wurde, ist offen; laut hobex Storno nachschicken', 'hostUncertain', 'hostTimeout', false, true),
|
|
356
|
+
tecs('9906', 'Technical Error: Network error', 'Netzwerkfehler zum Acquirer -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
357
|
+
tecs('9907', 'Technical Error: Network error', 'Netzwerkfehler zum Acquirer -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
358
|
+
tecs('9908', 'Technical Error: Time Out received from acquirer', 'Zeitueberschreitung vom Acquirer gemeldet (im Betrieb 11.09.2026, TID 3556988) -- laut hobex (16.09.2026) ein Timeout wie jeder andere, Storno nachschicken', 'hostUncertain', 'hostTimeout', false, true),
|
|
359
|
+
tecs('9909', 'Technical Error: Disconnect received from acquirer', 'Verbindungsabbruch vom Acquirer gemeldet -- ob belastet wurde, ist offen', 'hostUncertain', 'hostFault', false, true),
|
|
360
|
+
tecs('30091', 'TerminalService: INVALID_Input', 'Terminalverwaltung (TerminalService) -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
361
|
+
tecs('30093', 'TerminalService: WRONG_TERMINAL_PASSWORD', 'Terminalverwaltung (TerminalService) -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
362
|
+
tecs('30094', 'TerminalService: INVALID_TERMINAL_NO', 'Terminalverwaltung (TerminalService) -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
363
|
+
tecs('30095', 'TerminalService: PAN_REF_NO_NOT_FOUND', 'Terminalverwaltung (TerminalService) -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
364
|
+
tecs('30096', 'TerminalService: UnexpectedExceptionOccurred', 'Terminalverwaltung (TerminalService) -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
365
|
+
tecs('30099', 'TerminalService: INVALID_CREDENTIALS', 'Terminalverwaltung (TerminalService) -- betrifft keine Zahlung', 'noStatement', 'technicalError'),
|
|
366
|
+
];
|
|
@@ -25,12 +25,22 @@
|
|
|
25
25
|
* bis dahin unbenannter Code ([TECHNICAL_ERROR_CODE], `9900`) war darueber
|
|
26
26
|
* schluessig und haette eine Zahlung, unter der tatsaechlich Geld geflossen
|
|
27
27
|
* sein kann, als `declined` gemeldet.
|
|
28
|
+
*
|
|
29
|
+
* Seit 16.09.2026 kommt die TECS-Liste dazu (`tecs-codes.ts`): das HPS
|
|
30
|
+
* reicht die Codes der TECS-Plattform durch, auf der hobex autorisiert. Neu
|
|
31
|
+
* sind dabei [HpsCode.sendReversal] (Storno nachschicken, siehe
|
|
32
|
+
* `payments.ts`) und die Schreibweise: TECS fuehrt `0055`, das Terminal
|
|
33
|
+
* sendet `55` -- [normalizeHpsCode] macht beides zu einem Code.
|
|
34
|
+
*
|
|
35
|
+
* **Einen neuen Code aufnehmen:** Eintrag hier oder in `tecs-codes.ts`,
|
|
36
|
+
* derselbe im Dart-Zwilling, `npm run fixtures:hobex-hps-codes`; ein neuer
|
|
37
|
+
* Grund braucht in jeder Kasse eine Uebersetzung.
|
|
28
38
|
*/
|
|
29
39
|
/** Wie ein Ergebniscode den Ausgang eines Vorgangs bestimmt. */
|
|
30
40
|
export type HpsCodeEffect =
|
|
31
41
|
/** Schreibt den Ausgang fest: `'0'` genehmigt, jeder andere abgelehnt. */
|
|
32
42
|
'conclusive'
|
|
33
|
-
/** Gemessen oder dokumentiert, aber KEINE Aussage (9027,
|
|
43
|
+
/** Gemessen oder dokumentiert, aber KEINE Aussage (9027, 100011, fremde TECS-Produkte). */
|
|
34
44
|
| 'noStatement'
|
|
35
45
|
/**
|
|
36
46
|
* Der Host war beteiligt, das Terminal storniert nicht selbst -- ob belastet
|
|
@@ -42,9 +52,12 @@ export type HpsCodeEffect =
|
|
|
42
52
|
export type HpsCodeSource =
|
|
43
53
|
/** Am Geraet gemessen (`doc/kartenzahlung.md` im Dart-Zwilling). */
|
|
44
54
|
'measured'
|
|
45
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Von hobex dokumentiert: HPS-Liste (11.09.2026) oder TECS-Liste
|
|
57
|
+
* (16.09.2026, dann ist `tecsTitle` gesetzt).
|
|
58
|
+
*/
|
|
46
59
|
| 'documented'
|
|
47
|
-
/** Beides. */
|
|
60
|
+
/** Beides: gemessen und von hobex bestaetigt. */
|
|
48
61
|
| 'measuredAndDocumented';
|
|
49
62
|
/**
|
|
50
63
|
* Worauf eine Kasse reagiert -- der Grund hinter einem Ergebniscode. Mehrere
|
|
@@ -53,12 +66,12 @@ export type HpsCodeSource =
|
|
|
53
66
|
* fuer den Bediener steht in [HPS_REASON_HINTS]; eine Kasse mit eigener
|
|
54
67
|
* Uebersetzung schluesselt ueber den Grund selbst.
|
|
55
68
|
*/
|
|
56
|
-
export type HpsCodeReason = 'approved' | 'aborted' | 'noCard' | 'cardReadFailed' | 'cardDeclined' | 'wrongPin' | 'amountInvalid' | 'tipNotSelected' | 'terminalBusy' | 'terminalBlocked' | 'terminalSetup' | 'terminalFault' | 'requestRejected' | 'invalidTransaction' | 'refundPassword' | 'refundDisabled' | 'hostTimeoutReversed' | 'hostFault' | 'internalError' | 'canceled' | 'notAbortable' | 'noStatement' | 'technicalError' | 'unknown';
|
|
69
|
+
export type HpsCodeReason = 'approved' | 'approvedWithCondition' | 'aborted' | 'noCard' | 'cardReadFailed' | 'cardDeclined' | 'issuerDeclined' | 'cardBlocked' | 'cardExpired' | 'insufficientFunds' | 'wrongPin' | 'pinTriesExceeded' | 'pinRequired' | 'amountInvalid' | 'tipNotSelected' | 'terminalBusy' | 'terminalBlocked' | 'terminalSetup' | 'acquirerSetup' | 'terminalFault' | 'requestRejected' | 'hostRejected' | 'hostUnavailable' | 'invalidTransaction' | 'refundPassword' | 'refundDisabled' | 'refundRejected' | 'hostTimeoutReversed' | 'reversedByHost' | 'voidedAfterHostFault' | 'hostFault' | 'hostTimeout' | 'internalError' | 'canceled' | 'cancelDenied' | 'originalDeclined' | 'notAbortable' | 'noStatement' | 'technicalError' | 'unknown';
|
|
57
70
|
/** Der Satz fuer den Bediener je Grund, deutsch. */
|
|
58
71
|
export declare const HPS_REASON_HINTS: Readonly<Record<HpsCodeReason, string>>;
|
|
59
72
|
/**
|
|
60
|
-
* Die
|
|
61
|
-
* geflossen ist, weiss das Terminal nicht.
|
|
73
|
+
* Die Gruende hinter einem Code mit `effect: 'hostUncertain'`: ob (und wie
|
|
74
|
+
* viel) Geld geflossen ist, weiss das Terminal nicht.
|
|
62
75
|
*/
|
|
63
76
|
export declare function isHostUncertainReason(reason: HpsCodeReason | undefined): boolean;
|
|
64
77
|
/** Ein Ergebniscode, dessen Bedeutung feststeht (gemessen oder dokumentiert). */
|
|
@@ -88,6 +101,20 @@ export interface HpsCode extends HpsMeasuredCode {
|
|
|
88
101
|
* nichts (gemessen fuer `100108`). Siehe [isConclusiveAsStatus].
|
|
89
102
|
*/
|
|
90
103
|
readonly rejectsRequest: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Bei diesem Code wird ein Storno nachgeschickt: der Host hat nicht oder
|
|
106
|
+
* nicht brauchbar geantwortet, und das Terminal nimmt den Vorgang nicht
|
|
107
|
+
* selbst zurueck. Nur bei `effect: 'hostUncertain'`. Vorgabe von hobex
|
|
108
|
+
* (16.09.2026) zu `9908`: "ein Timeout wie jeder andere. Richtigerweise
|
|
109
|
+
* sollte in dem Fall ein Storno nachgeschickt werden."
|
|
110
|
+
*/
|
|
111
|
+
readonly sendReversal: boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Titel in der TECS-Liste (16.09.2026), wenn der Code dort steht -- sonst
|
|
114
|
+
* `null`. Bei gemessenen Codes weicht er vom [title] ab (`55`: "PIN
|
|
115
|
+
* falsch" gegen "Incorrect PIN").
|
|
116
|
+
*/
|
|
117
|
+
readonly tecsTitle: string | null;
|
|
91
118
|
}
|
|
92
119
|
/**
|
|
93
120
|
* Die vollstaendige Codetabelle — Vertrag mit dem Dart-Zwilling
|
|
@@ -228,7 +255,19 @@ export declare const TERMINAL_BUSY_HTTP_STATUS = 409;
|
|
|
228
255
|
* HTTP-Status ist kein `responseCode`.
|
|
229
256
|
*/
|
|
230
257
|
export declare const NOT_FOUND_HTTP_STATUS = 404;
|
|
231
|
-
/**
|
|
258
|
+
/**
|
|
259
|
+
* Die Schreibweise, unter der [code] in [HPS_CODES] steht: ein rein
|
|
260
|
+
* numerischer Code ohne fuehrende Nullen (`0055` -> `55`, `0000` -> `0`),
|
|
261
|
+
* jeder andere unveraendert. Ohne diese Angleichung waere ein `0000` kein
|
|
262
|
+
* `0` -- und damit eine ABLEHNUNG einer genehmigten Zahlung.
|
|
263
|
+
* [parseHpsTransactionResponse] gleicht deshalb schon beim Einlesen an.
|
|
264
|
+
*/
|
|
265
|
+
export declare function normalizeHpsCode(code: string): string;
|
|
266
|
+
/**
|
|
267
|
+
* Der Eintrag zu [code] in [HPS_CODES], oder `undefined`, wenn seine
|
|
268
|
+
* Bedeutung nicht feststeht. Findet beide Schreibweisen
|
|
269
|
+
* ([normalizeHpsCode]) und die Familien mit Platzhalter (`8105` -> `81xx`).
|
|
270
|
+
*/
|
|
232
271
|
export declare function hpsCodeInfo(code: string | undefined): HpsCode | undefined;
|
|
233
272
|
/**
|
|
234
273
|
* Der Grund zu [code] -- `'unknown'` fuer einen Code ausserhalb der Tabelle,
|
|
@@ -294,7 +333,10 @@ export declare function isNotAbortable(res: Pick<HpsTransactionResponse, 'respon
|
|
|
294
333
|
* gemessen. `100011` ist dokumentiert, aber nie gesehen.
|
|
295
334
|
*/
|
|
296
335
|
export declare function isNoStatement(res: Pick<HpsTransactionResponse, 'responseCode'>): boolean;
|
|
297
|
-
/**
|
|
336
|
+
/**
|
|
337
|
+
* `true`, wenn das Terminal einen technischen Fehler meldet (9900). Seit der
|
|
338
|
+
* TECS-Liste zugleich [isHostUncertain]: ob belastet wurde, ist offen.
|
|
339
|
+
*/
|
|
298
340
|
export declare function isTechnicalError(res: Pick<HpsTransactionResponse, 'responseCode'>): boolean;
|
|
299
341
|
/**
|
|
300
342
|
* `true`, wenn der Vorgang unter dieser Kennung aufgehoben wurde (9011).
|
|
@@ -327,6 +369,12 @@ export declare function isConclusiveAsStatus(res: Pick<HpsTransactionResponse, '
|
|
|
327
369
|
* Speicher des Terminals, nicht den des Hosts.
|
|
328
370
|
*/
|
|
329
371
|
export declare function isHostUncertain(res: Pick<HpsTransactionResponse, 'responseCode'>): boolean;
|
|
372
|
+
/**
|
|
373
|
+
* `true`, wenn zu diesem Code ein Storno nachzuschicken ist
|
|
374
|
+
* ([HpsCode.sendReversal]) -- der Host hat nicht oder nicht brauchbar
|
|
375
|
+
* geantwortet, etwa `9908`.
|
|
376
|
+
*/
|
|
377
|
+
export declare function needsReversal(res: Pick<HpsTransactionResponse, 'responseCode'>): boolean;
|
|
330
378
|
/**
|
|
331
379
|
* `true`, wenn ein Ergebniscode VORHANDEN ist, dessen Bedeutung aber nicht
|
|
332
380
|
* feststeht -- er fehlt in [HPS_CODES]. Ein Code, den dieses Modell schlicht
|