@kreiseck/kasseneck-api 0.30.0 → 1.0.0-rc.1
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 +433 -0
- package/README.de.md +11 -7
- package/README.md +486 -126
- package/dist/cjs/client/api.d.ts +7 -6
- package/dist/cjs/client/api.js +2 -2
- package/dist/cjs/client/aufrufe.d.ts +29 -5
- package/dist/cjs/client/aufrufe.js +114 -2
- package/dist/cjs/client/auth.d.ts +2 -0
- package/dist/cjs/client/auth.js +17 -1
- package/dist/cjs/client/cashregisters.d.ts +1 -1
- package/dist/cjs/client/cashregisters.js +2 -2
- package/dist/cjs/client/errors.d.ts +78 -19
- package/dist/cjs/client/errors.js +107 -28
- package/dist/cjs/client/fehlercodes.d.ts +9 -0
- package/dist/cjs/client/fehlercodes.js +36 -0
- package/dist/cjs/client/index.d.ts +5 -5
- package/dist/cjs/client/index.js +11 -3
- package/dist/cjs/client/receipts.d.ts +131 -124
- package/dist/cjs/client/receipts.js +214 -137
- package/dist/cjs/client/reports.d.ts +26 -4
- package/dist/cjs/client/reports.js +37 -4
- package/dist/cjs/client/status.d.ts +3 -3
- package/dist/cjs/client/status.js +7 -7
- package/dist/cjs/client/transport.d.ts +56 -4
- package/dist/cjs/client/transport.js +222 -25
- package/dist/cjs/enums/vat-rate.d.ts +2 -2
- package/dist/cjs/enums/vat-rate.js +1 -1
- package/dist/cjs/index.d.ts +4 -3
- package/dist/cjs/index.js +42 -13
- package/dist/{esm/rechnung → cjs/invoice}/api.d.ts +18 -17
- package/dist/cjs/{rechnung → invoice}/api.js +6 -6
- package/dist/{esm/rechnung → cjs/invoice}/auth.d.ts +2 -2
- package/dist/cjs/{rechnung → invoice}/auth.js +5 -5
- package/dist/{esm/rechnung/rechnen.d.ts → cjs/invoice/calc.d.ts} +27 -27
- package/dist/cjs/{rechnung/rechnen.js → invoice/calc.js} +54 -54
- package/dist/{esm/rechnung → cjs/invoice}/endpunkte.d.ts +23 -21
- package/dist/cjs/{rechnung → invoice}/endpunkte.js +52 -42
- package/dist/cjs/invoice/fehler.d.ts +31 -0
- package/dist/cjs/invoice/fehler.js +39 -0
- package/dist/cjs/invoice/index.d.ts +21 -0
- package/dist/cjs/invoice/index.js +86 -0
- package/dist/cjs/{rechnung → invoice}/summen.d.ts +12 -12
- package/dist/cjs/{rechnung → invoice}/summen.js +14 -14
- package/dist/cjs/invoice/texte.d.ts +224 -0
- package/dist/cjs/invoice/texte.js +425 -0
- package/dist/{esm/rechnung → cjs/invoice}/typen.d.ts +32 -11
- package/dist/{esm/rechnung → cjs/invoice}/vertrag.d.ts +97 -71
- package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
- package/dist/cjs/models/cancellation.d.ts +53 -21
- package/dist/cjs/models/cancellation.js +94 -42
- package/dist/cjs/models/hobex-receipt.d.ts +3 -3
- package/dist/cjs/models/hobex-receipt.js +35 -35
- package/dist/cjs/models/index.d.ts +6 -5
- package/dist/cjs/models/index.js +22 -2
- package/dist/cjs/models/payment-errors.d.ts +32 -15
- package/dist/cjs/models/payment-errors.js +80 -32
- package/dist/cjs/models/receipt-company.d.ts +6 -5
- package/dist/cjs/models/receipt-company.js +4 -4
- package/dist/cjs/models/receipt-email.d.ts +32 -18
- package/dist/cjs/models/receipt-email.js +69 -24
- package/dist/cjs/models/receipt-errors.d.ts +39 -0
- package/dist/cjs/models/receipt-errors.js +94 -0
- package/dist/cjs/models/receipt-item.d.ts +9 -1
- package/dist/cjs/models/receipt-item.js +3 -0
- package/dist/cjs/models/receipt-payment.d.ts +2 -1
- package/dist/cjs/models/receipt-summary.d.ts +10 -4
- package/dist/cjs/models/receipt-summary.js +10 -4
- package/dist/cjs/models/receipt.d.ts +31 -2
- package/dist/cjs/models/receipt.js +28 -1
- package/dist/cjs/models/voucher.d.ts +7 -6
- package/dist/cjs/models/voucher.js +2 -7
- package/dist/cjs/partner/ablauf.d.ts +10 -10
- package/dist/cjs/partner/ablauf.js +29 -29
- package/dist/cjs/partner/api.d.ts +26 -23
- package/dist/cjs/partner/api.js +11 -13
- package/dist/cjs/partner/auth.d.ts +1 -1
- package/dist/cjs/partner/auth.js +2 -2
- package/dist/cjs/partner/betrieb.d.ts +7 -7
- package/dist/cjs/partner/betrieb.js +10 -10
- package/dist/cjs/partner/endpunkte.d.ts +27 -14
- package/dist/cjs/partner/endpunkte.js +80 -39
- package/dist/cjs/partner/fehler.d.ts +60 -30
- package/dist/cjs/partner/fehler.js +99 -43
- package/dist/cjs/partner/index.d.ts +13 -12
- package/dist/cjs/partner/index.js +35 -22
- package/dist/cjs/partner/secret.d.ts +3 -3
- package/dist/cjs/partner/secret.js +6 -6
- package/dist/cjs/partner/typen.d.ts +129 -71
- package/dist/cjs/partner/typen.js +76 -3
- package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
- package/dist/cjs/partner/webhook-signatur.js +12 -12
- package/dist/cjs/partner/webhooks.d.ts +60 -32
- package/dist/cjs/partner/webhooks.js +40 -34
- package/dist/cjs/payments/hobex-hps/transaction-response.js +28 -28
- package/dist/cjs/payments/hobex.d.ts +2 -2
- package/dist/cjs/payments/hobex.js +4 -4
- package/dist/cjs/payments/stripe.d.ts +2 -2
- package/dist/cjs/payments/stripe.js +4 -4
- package/dist/cjs/pos/artikel.d.ts +90 -0
- package/dist/cjs/pos/artikel.js +89 -0
- package/dist/cjs/pos/client.d.ts +27 -0
- package/dist/cjs/pos/client.js +144 -0
- package/dist/cjs/pos/drucker.d.ts +86 -0
- package/dist/cjs/pos/drucker.js +78 -0
- package/dist/cjs/pos/errors.d.ts +36 -0
- package/dist/cjs/pos/errors.js +95 -0
- package/dist/cjs/pos/index.d.ts +15 -0
- package/dist/cjs/pos/index.js +102 -0
- package/dist/cjs/pos/settings.d.ts +313 -0
- package/dist/cjs/pos/settings.js +376 -0
- package/dist/cjs/pos/texte.d.ts +883 -0
- package/dist/cjs/pos/texte.js +489 -0
- package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
- package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
- package/dist/cjs/printing/escpos.d.ts +29 -29
- package/dist/cjs/printing/escpos.js +61 -61
- package/dist/cjs/printing/index.d.ts +2 -2
- package/dist/cjs/printing/index.js +17 -17
- package/dist/cjs/printing/qr-groesse.d.ts +38 -38
- package/dist/cjs/printing/qr-groesse.js +47 -47
- package/dist/cjs/printing/webusb.d.ts +2 -2
- package/dist/cjs/printing/webusb.js +4 -4
- package/dist/cjs/react/index.d.ts +21 -21
- package/dist/cjs/react/index.js +40 -30
- package/dist/cjs/receipt/bild.d.ts +4 -4
- package/dist/cjs/receipt/bild.js +11 -11
- package/dist/cjs/receipt/blatt.d.ts +46 -46
- package/dist/cjs/receipt/blatt.js +59 -59
- package/dist/cjs/receipt/discount.d.ts +1 -1
- package/dist/cjs/receipt/discount.js +8 -8
- package/dist/cjs/receipt/due.d.ts +86 -0
- package/dist/cjs/receipt/due.js +261 -0
- package/dist/cjs/receipt/epos.d.ts +22 -22
- package/dist/cjs/receipt/epos.js +45 -45
- package/dist/cjs/receipt/grid.d.ts +10 -10
- package/dist/cjs/receipt/grid.js +20 -20
- package/dist/cjs/receipt/index.d.ts +9 -8
- package/dist/cjs/receipt/index.js +26 -23
- package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
- package/dist/cjs/receipt/layout-escpos.js +49 -49
- package/dist/cjs/receipt/layout.d.ts +28 -23
- package/dist/cjs/receipt/layout.js +45 -21
- package/dist/cjs/receipt/marke-daten.d.ts +8 -8
- package/dist/cjs/receipt/marke-daten.js +8 -8
- package/dist/cjs/receipt/marke.d.ts +7 -7
- package/dist/cjs/receipt/marke.js +10 -10
- package/dist/cjs/register/errors.d.ts +61 -0
- package/dist/cjs/register/errors.js +112 -0
- package/dist/cjs/register/index.d.ts +14 -1
- package/dist/cjs/register/index.js +20 -1
- package/dist/cjs/register/pairing.d.ts +55 -36
- package/dist/cjs/register/pairing.js +33 -29
- package/dist/cjs/register/session.d.ts +5 -5
- package/dist/cjs/register/session.js +7 -7
- package/dist/cjs/stored/draht.d.ts +45 -0
- package/dist/cjs/stored/draht.js +220 -0
- package/dist/cjs/stored/einstellungen.d.ts +23 -0
- package/dist/cjs/stored/einstellungen.js +200 -0
- package/dist/cjs/stored/index.d.ts +109 -0
- package/dist/cjs/stored/index.js +225 -0
- package/dist/cjs/stored/vokabular.d.ts +18 -0
- package/dist/cjs/stored/vokabular.js +389 -0
- package/dist/cjs/version.d.ts +7 -0
- package/dist/cjs/version.js +10 -0
- package/dist/cjs/vienna-time.d.ts +1 -1
- package/dist/cjs/vienna-time.js +2 -2
- package/dist/esm/client/api.d.ts +7 -6
- package/dist/esm/client/api.js +4 -4
- package/dist/esm/client/aufrufe.d.ts +29 -5
- package/dist/esm/client/aufrufe.js +111 -1
- package/dist/esm/client/auth.d.ts +2 -0
- package/dist/esm/client/auth.js +16 -1
- package/dist/esm/client/cashregisters.d.ts +1 -1
- package/dist/esm/client/cashregisters.js +2 -2
- package/dist/esm/client/errors.d.ts +78 -19
- package/dist/esm/client/errors.js +105 -27
- package/dist/esm/client/fehlercodes.d.ts +9 -0
- package/dist/esm/client/fehlercodes.js +32 -0
- package/dist/esm/client/index.d.ts +5 -5
- package/dist/esm/client/index.js +5 -5
- package/dist/esm/client/receipts.d.ts +131 -124
- package/dist/esm/client/receipts.js +213 -140
- package/dist/esm/client/reports.d.ts +26 -4
- package/dist/esm/client/reports.js +36 -4
- package/dist/esm/client/status.d.ts +3 -3
- package/dist/esm/client/status.js +7 -7
- package/dist/esm/client/transport.d.ts +56 -4
- package/dist/esm/client/transport.js +221 -24
- package/dist/esm/enums/vat-rate.d.ts +2 -2
- package/dist/esm/enums/vat-rate.js +1 -1
- package/dist/esm/index.d.ts +4 -3
- package/dist/esm/index.js +4 -3
- package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
- package/dist/esm/{rechnung → invoice}/api.js +6 -6
- package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
- package/dist/esm/{rechnung → invoice}/auth.js +4 -4
- package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
- package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
- package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
- package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
- package/dist/esm/invoice/fehler.d.ts +31 -0
- package/dist/esm/invoice/fehler.js +33 -0
- package/dist/esm/invoice/index.d.ts +21 -0
- package/dist/esm/invoice/index.js +20 -0
- package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
- package/dist/esm/{rechnung → invoice}/summen.js +12 -12
- package/dist/esm/invoice/texte.d.ts +224 -0
- package/dist/esm/invoice/texte.js +421 -0
- package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
- package/dist/{cjs/rechnung → esm/invoice}/vertrag.d.ts +97 -71
- package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
- package/dist/esm/models/cancellation.d.ts +53 -21
- package/dist/esm/models/cancellation.js +90 -41
- package/dist/esm/models/hobex-receipt.d.ts +3 -3
- package/dist/esm/models/hobex-receipt.js +35 -35
- package/dist/esm/models/index.d.ts +6 -5
- package/dist/esm/models/index.js +6 -5
- package/dist/esm/models/payment-errors.d.ts +32 -15
- package/dist/esm/models/payment-errors.js +77 -32
- package/dist/esm/models/receipt-company.d.ts +6 -5
- package/dist/esm/models/receipt-company.js +4 -4
- package/dist/esm/models/receipt-email.d.ts +32 -18
- package/dist/esm/models/receipt-email.js +65 -23
- package/dist/esm/models/receipt-errors.d.ts +39 -0
- package/dist/esm/models/receipt-errors.js +87 -0
- package/dist/esm/models/receipt-item.d.ts +9 -1
- package/dist/esm/models/receipt-item.js +3 -0
- package/dist/esm/models/receipt-payment.d.ts +2 -1
- package/dist/esm/models/receipt-summary.d.ts +10 -4
- package/dist/esm/models/receipt-summary.js +9 -3
- package/dist/esm/models/receipt.d.ts +31 -2
- package/dist/esm/models/receipt.js +28 -2
- package/dist/esm/models/voucher.d.ts +7 -6
- package/dist/esm/models/voucher.js +2 -7
- package/dist/esm/partner/ablauf.d.ts +10 -10
- package/dist/esm/partner/ablauf.js +27 -27
- package/dist/esm/partner/api.d.ts +26 -23
- package/dist/esm/partner/api.js +13 -15
- package/dist/esm/partner/auth.d.ts +1 -1
- package/dist/esm/partner/auth.js +2 -2
- package/dist/esm/partner/betrieb.d.ts +7 -7
- package/dist/esm/partner/betrieb.js +8 -8
- package/dist/esm/partner/endpunkte.d.ts +27 -14
- package/dist/esm/partner/endpunkte.js +79 -39
- package/dist/esm/partner/fehler.d.ts +60 -30
- package/dist/esm/partner/fehler.js +91 -35
- package/dist/esm/partner/index.d.ts +13 -12
- package/dist/esm/partner/index.js +12 -11
- package/dist/esm/partner/secret.d.ts +3 -3
- package/dist/esm/partner/secret.js +5 -5
- package/dist/esm/partner/typen.d.ts +129 -71
- package/dist/esm/partner/typen.js +75 -2
- package/dist/esm/partner/webhook-signatur.d.ts +2 -2
- package/dist/esm/partner/webhook-signatur.js +12 -12
- package/dist/esm/partner/webhooks.d.ts +60 -32
- package/dist/esm/partner/webhooks.js +38 -32
- package/dist/esm/payments/hobex-hps/transaction-response.js +28 -28
- package/dist/esm/payments/hobex.d.ts +2 -2
- package/dist/esm/payments/hobex.js +4 -4
- package/dist/esm/payments/stripe.d.ts +2 -2
- package/dist/esm/payments/stripe.js +4 -4
- package/dist/esm/pos/artikel.d.ts +90 -0
- package/dist/esm/pos/artikel.js +79 -0
- package/dist/esm/pos/client.d.ts +27 -0
- package/dist/esm/pos/client.js +137 -0
- package/dist/esm/pos/drucker.d.ts +86 -0
- package/dist/esm/pos/drucker.js +71 -0
- package/dist/esm/pos/errors.d.ts +36 -0
- package/dist/esm/pos/errors.js +88 -0
- package/dist/esm/pos/index.d.ts +15 -0
- package/dist/esm/pos/index.js +20 -0
- package/dist/esm/pos/settings.d.ts +313 -0
- package/dist/esm/pos/settings.js +367 -0
- package/dist/esm/pos/texte.d.ts +883 -0
- package/dist/esm/pos/texte.js +481 -0
- package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
- package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
- package/dist/esm/printing/escpos.d.ts +29 -29
- package/dist/esm/printing/escpos.js +56 -56
- package/dist/esm/printing/index.d.ts +2 -2
- package/dist/esm/printing/index.js +2 -2
- package/dist/esm/printing/qr-groesse.d.ts +38 -38
- package/dist/esm/printing/qr-groesse.js +42 -42
- package/dist/esm/printing/webusb.d.ts +2 -2
- package/dist/esm/printing/webusb.js +4 -4
- package/dist/esm/react/index.d.ts +21 -21
- package/dist/esm/react/index.js +39 -29
- package/dist/esm/receipt/bild.d.ts +4 -4
- package/dist/esm/receipt/bild.js +11 -11
- package/dist/esm/receipt/blatt.d.ts +46 -46
- package/dist/esm/receipt/blatt.js +55 -55
- package/dist/esm/receipt/discount.d.ts +1 -1
- package/dist/esm/receipt/discount.js +7 -7
- package/dist/esm/receipt/due.d.ts +86 -0
- package/dist/esm/receipt/due.js +257 -0
- package/dist/esm/receipt/epos.d.ts +22 -22
- package/dist/esm/receipt/epos.js +47 -47
- package/dist/esm/receipt/grid.d.ts +10 -10
- package/dist/esm/receipt/grid.js +18 -18
- package/dist/esm/receipt/index.d.ts +9 -8
- package/dist/esm/receipt/index.js +9 -8
- package/dist/esm/receipt/layout-escpos.d.ts +24 -24
- package/dist/esm/receipt/layout-escpos.js +51 -51
- package/dist/esm/receipt/layout.d.ts +28 -23
- package/dist/esm/receipt/layout.js +44 -20
- package/dist/esm/receipt/marke-daten.d.ts +8 -8
- package/dist/esm/receipt/marke-daten.js +7 -7
- package/dist/esm/receipt/marke.d.ts +7 -7
- package/dist/esm/receipt/marke.js +10 -10
- package/dist/esm/register/errors.d.ts +61 -0
- package/dist/esm/register/errors.js +104 -0
- package/dist/esm/register/index.d.ts +14 -1
- package/dist/esm/register/index.js +13 -0
- package/dist/esm/register/pairing.d.ts +55 -36
- package/dist/esm/register/pairing.js +33 -29
- package/dist/esm/register/session.d.ts +5 -5
- package/dist/esm/register/session.js +7 -7
- package/dist/esm/stored/draht.d.ts +45 -0
- package/dist/esm/stored/draht.js +208 -0
- package/dist/esm/stored/einstellungen.d.ts +23 -0
- package/dist/esm/stored/einstellungen.js +196 -0
- package/dist/esm/stored/index.d.ts +109 -0
- package/dist/esm/stored/index.js +217 -0
- package/dist/esm/stored/vokabular.d.ts +18 -0
- package/dist/esm/stored/vokabular.js +386 -0
- package/dist/esm/version.d.ts +7 -0
- package/dist/esm/version.js +7 -0
- package/dist/esm/vienna-time.d.ts +1 -1
- package/dist/esm/vienna-time.js +2 -2
- package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
- package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
- package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
- package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
- package/fixtures/expected/cancellation-full.sheet32.json +218 -0
- package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
- package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
- package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
- package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
- package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
- package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
- package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
- package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
- package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
- package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
- package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
- package/fixtures/expected/card-custom.sheet32.json +158 -0
- package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
- package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
- package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
- package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
- package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
- package/fixtures/expected/card-gptom.sheet32.json +230 -0
- package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
- package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
- package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
- package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
- package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
- package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
- package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
- package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
- package/fixtures/expected/card-mypos.sheet32.json +254 -0
- package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
- package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
- package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
- package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
- package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
- package/fixtures/expected/card-stripe.sheet32.json +212 -0
- package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
- package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
- package/fixtures/expected/card-sumup.sheet32.json +218 -0
- package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
- package/fixtures/expected/discount-lines.sheet32.json +200 -0
- package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
- package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
- package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
- package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
- package/fixtures/expected/discount-simple.sheet32.json +182 -0
- package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
- package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
- package/fixtures/expected/discount-tip.sheet32.json +212 -0
- package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
- package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
- package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
- package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
- package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
- package/fixtures/expected/long-item-name.sheet32.json +176 -0
- package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
- package/fixtures/expected/sale-card.sheet32.json +176 -0
- package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
- package/fixtures/expected/sale-cash.sheet32.json +176 -0
- package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
- package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
- package/fixtures/expected/sale-small-business.sheet32.json +182 -0
- package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
- package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
- package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
- package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
- package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
- package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
- package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
- package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
- package/fixtures/expected/split-cash-change.sheet32.json +194 -0
- package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
- package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
- package/fixtures/expected/split-long-amount.sheet32.json +266 -0
- package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
- package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
- package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
- package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
- package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
- package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
- package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
- package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
- package/fixtures/expected/split-tip-card.sheet32.json +272 -0
- package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
- package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
- package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
- package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
- package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
- package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
- package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
- package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
- package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
- package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
- package/fixtures/{erwartet → expected}/training.lines.json +2 -2
- package/fixtures/expected/training.sheet32.json +236 -0
- package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
- package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
- package/fixtures/expected/zero-annual.sheet32.json +212 -0
- package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
- package/fixtures/expected/zero-final.sheet32.json +206 -0
- package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
- package/fixtures/expected/zero-manual.sheet32.json +206 -0
- package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
- package/fixtures/expected/zero-monthly.sheet32.json +206 -0
- package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
- package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
- package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
- package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
- package/fixtures/expected/zero-start.sheet32.json +206 -0
- package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
- package/fixtures/hobex-hps-codes.json +40 -40
- package/fixtures/invoice-api-examples/brands-ok.json +8 -0
- package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
- package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
- package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
- package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
- package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
- package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
- package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
- package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
- package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
- package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
- package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
- package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
- package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
- package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
- package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
- package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
- package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
- package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
- package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
- package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
- package/fixtures/invoice-texts.json +464 -0
- package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
- package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
- package/fixtures/manifest.json +252 -252
- package/fixtures/pos-message-cases.json +32 -0
- package/fixtures/pos-settings-defaults.json +149 -0
- package/fixtures/pos-texts.json +957 -0
- package/fixtures/receipt-due-generated.json +1218 -0
- package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
- package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
- package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
- package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
- package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
- package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
- package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
- package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
- package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
- package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
- package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
- package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
- package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
- package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
- package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
- package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
- package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
- package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
- package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
- package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
- package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
- package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
- package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
- package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
- package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
- package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
- package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
- package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
- package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
- package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
- package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
- package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
- package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
- package/fixtures/{belege → receipts}/training.json +2 -2
- package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
- package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
- package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
- package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
- package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
- package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
- package/fixtures/renames-1.0.json +1490 -0
- package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +10 -8
- package/fixtures/surface.json +877 -0
- package/fixtures/v3/README.md +125 -0
- package/fixtures/v3/antworten/belege.json +4738 -0
- package/fixtures/v3/antworten/belegmail.json +154 -0
- package/fixtures/v3/antworten/kasse-belege.json +4304 -0
- package/fixtures/v3/antworten/kasse.json +12716 -0
- package/fixtures/v3/antworten/rechnungen.json +1712 -0
- package/fixtures/v3/antworten/storno.json +737 -0
- package/fixtures/v3/stored/belege.json +502 -0
- package/fixtures/v3/stored/kasse.json +3461 -0
- package/fixtures/v3/stored/rechnungen.json +750 -0
- package/fixtures/v3/v3-vokabular.json +3375 -0
- package/fixtures/v3/zahlbetrag-faelle.json +794 -0
- package/package.json +32 -18
- package/dist/cjs/kasse/artikel.d.ts +0 -83
- package/dist/cjs/kasse/artikel.js +0 -79
- package/dist/cjs/kasse/client.d.ts +0 -10
- package/dist/cjs/kasse/client.js +0 -38
- package/dist/cjs/kasse/drucker.d.ts +0 -59
- package/dist/cjs/kasse/drucker.js +0 -50
- package/dist/cjs/kasse/index.d.ts +0 -13
- package/dist/cjs/kasse/index.js +0 -79
- package/dist/cjs/kasse/settings.d.ts +0 -227
- package/dist/cjs/kasse/settings.js +0 -169
- package/dist/cjs/kasse/texte.d.ts +0 -458
- package/dist/cjs/kasse/texte.js +0 -244
- package/dist/cjs/rechnung/fehler.d.ts +0 -21
- package/dist/cjs/rechnung/fehler.js +0 -44
- package/dist/cjs/rechnung/index.d.ts +0 -21
- package/dist/cjs/rechnung/index.js +0 -82
- package/dist/cjs/rechnung/texte.d.ts +0 -222
- package/dist/cjs/rechnung/texte.js +0 -425
- package/dist/esm/kasse/artikel.d.ts +0 -83
- package/dist/esm/kasse/artikel.js +0 -70
- package/dist/esm/kasse/client.d.ts +0 -10
- package/dist/esm/kasse/client.js +0 -33
- package/dist/esm/kasse/drucker.d.ts +0 -59
- package/dist/esm/kasse/drucker.js +0 -45
- package/dist/esm/kasse/index.d.ts +0 -13
- package/dist/esm/kasse/index.js +0 -18
- package/dist/esm/kasse/settings.d.ts +0 -227
- package/dist/esm/kasse/settings.js +0 -165
- package/dist/esm/kasse/texte.d.ts +0 -458
- package/dist/esm/kasse/texte.js +0 -238
- package/dist/esm/rechnung/fehler.d.ts +0 -21
- package/dist/esm/rechnung/fehler.js +0 -39
- package/dist/esm/rechnung/index.d.ts +0 -21
- package/dist/esm/rechnung/index.js +0 -20
- package/dist/esm/rechnung/texte.d.ts +0 -222
- package/dist/esm/rechnung/texte.js +0 -421
- package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
- package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
- package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
- package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
- package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
- package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
- package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
- package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
- package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
- package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
- package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
- package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
- package/fixtures/erwartet/null-monat.blatt32.json +0 -206
- package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
- package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
- package/fixtures/erwartet/null-start.blatt32.json +0 -206
- package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
- package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
- package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
- package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
- package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
- package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
- package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
- package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
- package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
- package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
- package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
- package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
- package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
- package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
- package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
- package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
- package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
- package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
- package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
- package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
- package/fixtures/erwartet/training.blatt32.json +0 -236
- package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
- package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
- package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
- package/fixtures/kasse-meldungen-faelle.json +0 -32
- package/fixtures/kasse-texte.json +0 -513
- package/fixtures/oberflaeche.json +0 -557
- package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
- package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
- package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
- package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
- package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
- package/fixtures/rechnung-texte.json +0 -464
- /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
- /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
- /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
- /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
- /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
- /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
- /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
- /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
- /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
- /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
- /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
- /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
- /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
- /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
- /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
- /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
- /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
- /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
- /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
- /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
- /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
- /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
|
@@ -55,30 +55,30 @@ export const WEBHOOK_LIMIT = 10;
|
|
|
55
55
|
* Ausnahme im Inneren wird zur Ablehnung. Ein Aufrufer, der nur `ok` abfragt,
|
|
56
56
|
* kann damit nichts falsch machen.
|
|
57
57
|
*/
|
|
58
|
-
export async function verifyWebhookSignature(
|
|
58
|
+
export async function verifyWebhookSignature(options) {
|
|
59
59
|
try {
|
|
60
|
-
const secrets = (Array.isArray(
|
|
60
|
+
const secrets = (Array.isArray(options.secret) ? options.secret : [options.secret]).filter((s) => typeof s === 'string' && s.length > 0);
|
|
61
61
|
if (!secrets.length)
|
|
62
62
|
return { ok: false, reason: 'secret-missing' };
|
|
63
|
-
if (typeof
|
|
63
|
+
if (typeof options.signatureHeader !== 'string' || !options.signatureHeader.trim()) {
|
|
64
64
|
return { ok: false, reason: 'header-missing' };
|
|
65
65
|
}
|
|
66
|
-
const kopf = parseSignatureHeader(
|
|
66
|
+
const kopf = parseSignatureHeader(options.signatureHeader);
|
|
67
67
|
if (kopf === null)
|
|
68
68
|
return { ok: false, reason: 'header-malformed' };
|
|
69
|
-
if (
|
|
69
|
+
if (options.body === undefined || options.body === null)
|
|
70
70
|
return { ok: false, reason: 'body-missing' };
|
|
71
|
-
const jetzt = typeof
|
|
72
|
-
?
|
|
71
|
+
const jetzt = typeof options.nowSec === 'number' && Number.isFinite(options.nowSec)
|
|
72
|
+
? options.nowSec
|
|
73
73
|
: Math.floor(Date.now() / 1000);
|
|
74
|
-
const toleranz = typeof
|
|
75
|
-
?
|
|
74
|
+
const toleranz = typeof options.toleranceSec === 'number' && Number.isFinite(options.toleranceSec)
|
|
75
|
+
? options.toleranceSec
|
|
76
76
|
: WEBHOOK_TOLERANCE_SEC;
|
|
77
77
|
// In BEIDE Richtungen: eine vorgehende Uhr auf der Gegenseite darf ein
|
|
78
78
|
// altes Ereignis nicht wieder gueltig machen.
|
|
79
79
|
if (Math.abs(jetzt - kopf.t) > toleranz)
|
|
80
80
|
return { ok: false, reason: 'timestamp-outside-window' };
|
|
81
|
-
const nachricht = signierteBytes(kopf.t,
|
|
81
|
+
const nachricht = signierteBytes(kopf.t, options.body);
|
|
82
82
|
for (const secret of secrets) {
|
|
83
83
|
const soll = await hmacSha256(secret, nachricht);
|
|
84
84
|
for (const v1 of kopf.v1) {
|
|
@@ -98,8 +98,8 @@ export async function verifyWebhookSignature(optionen) {
|
|
|
98
98
|
* Zerlegt den Signaturkopf. `null`, wenn kein brauchbarer Zeitstempel oder gar
|
|
99
99
|
* kein `v1=`-Anteil darin steht.
|
|
100
100
|
*/
|
|
101
|
-
export function parseSignatureHeader(
|
|
102
|
-
const teile = String(
|
|
101
|
+
export function parseSignatureHeader(header) {
|
|
102
|
+
const teile = String(header).split(',').map((x) => x.trim());
|
|
103
103
|
const tTeil = teile.find((x) => x.startsWith('t='));
|
|
104
104
|
const v1 = teile.filter((x) => x.startsWith('v1=')).map((x) => x.slice(3));
|
|
105
105
|
if (!tTeil || !v1.length)
|
|
@@ -6,20 +6,20 @@
|
|
|
6
6
|
* einem, der sonst nichts von diesem Paket benutzt.
|
|
7
7
|
*/
|
|
8
8
|
import type { InternerTransport } from '../client/aufrufe.js';
|
|
9
|
+
import type { CashregisterActivationStep, ContractKind, ContractSource, PartnerEnv } from './typen.js';
|
|
9
10
|
import { type VerifyWebhookOptions, type WebhookVerifyReason } from './webhook-signatur.js';
|
|
10
11
|
/**
|
|
11
|
-
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann
|
|
12
|
+
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann, in der
|
|
13
|
+
* Reihenfolge des Backend-Katalogs (`listPartnerWebhooks().events`). Ein
|
|
12
14
|
* Endpunkt bekommt ausschliesslich die, die in seiner `events`-Liste stehen.
|
|
13
15
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* gegeneinander geprueft werden. Abonnieren geht trotzdem schon (`events`
|
|
18
|
-
* nimmt jeden Namen), die Nutzlast beschreibt [ContractAcceptedEventData].
|
|
16
|
+
* Die Nutzlasten der Ereignisse, die `/v3` uebersetzt, beschreiben
|
|
17
|
+
* [ContractAcceptedEventData], [SignatureFailedEventData] und
|
|
18
|
+
* [CashregisterFailedEventData].
|
|
19
19
|
*/
|
|
20
|
-
export declare const PARTNER_WEBHOOK_EVENTS: readonly ["customer.created", "customer.updated", "customer.status_changed", "customer.fon_verified", "customer.live_enabled", "signature.requested", "signature.ready", "signature.failed", "cashregister.created", "cashregister.live", "cashregister.failed", "app.version.accepted", "app.version.rejected", "webhook.test"];
|
|
20
|
+
export declare const PARTNER_WEBHOOK_EVENTS: readonly ["customer.created", "customer.updated", "customer.status_changed", "customer.fon_verified", "customer.live_enabled", "customer.avv_accepted", "customer.terms_accepted", "signature.requested", "signature.ready", "signature.failed", "cashregister.created", "cashregister.live", "cashregister.failed", "app.version.accepted", "app.version.rejected", "webhook.test"];
|
|
21
21
|
export type PartnerWebhookEventType = typeof PARTNER_WEBHOOK_EVENTS[number];
|
|
22
|
-
export declare function
|
|
22
|
+
export declare function isPartnerWebhookEvent(value: unknown): value is PartnerWebhookEventType;
|
|
23
23
|
/**
|
|
24
24
|
* Die Felder des Umschlags, so wie er auf der Leitung liegt.
|
|
25
25
|
*
|
|
@@ -27,7 +27,7 @@ export declare function istPartnerWebhookEvent(wert: unknown): wert is PartnerWe
|
|
|
27
27
|
* genau ein solches Feld verschwindet sonst auf einer Seite, ohne dass etwas
|
|
28
28
|
* rot wird.
|
|
29
29
|
*/
|
|
30
|
-
export declare const
|
|
30
|
+
export declare const WEBHOOK_ENVELOPE_FIELDS: readonly ["id", "type", "createdAt", "partnerId", "test", "data"];
|
|
31
31
|
/**
|
|
32
32
|
* Die Huelle jeder Zustellung. `type` bleibt bewusst offen fuer unbekannte
|
|
33
33
|
* Werte (`(string & {})`): ein spaeter ergaenztes Ereignis soll einen
|
|
@@ -69,14 +69,6 @@ export interface PartnerWebhookEvent<T = Record<string, unknown>> {
|
|
|
69
69
|
* Webhook hat.
|
|
70
70
|
*/
|
|
71
71
|
export type WebhookApiVersion = 'v1' | 'v3';
|
|
72
|
-
/** Art des Vertrags in `customer.avv_accepted` / `customer.terms_accepted`. */
|
|
73
|
-
export type ContractKind = 'avv' | 'terms';
|
|
74
|
-
/**
|
|
75
|
-
* Wo der Betrieb bestaetigt hat. Unter `v1` hiessen die ersten fuenf
|
|
76
|
-
* `einrichten`, `prozess`, `partner_vollmacht`, `admin_papier`,
|
|
77
|
-
* `papier_upload`; `app` und `portal` sind in beiden Sprachen gleich.
|
|
78
|
-
*/
|
|
79
|
-
export type ContractSource = 'setup_link' | 'process_link' | 'partner_power_of_attorney' | 'admin_paper' | 'paper_upload' | 'app' | 'portal' | (string & {});
|
|
80
72
|
/**
|
|
81
73
|
* Nutzlast von `customer.avv_accepted` und `customer.terms_accepted` in der
|
|
82
74
|
* Sprache `v3`. Ein Webhook mit `apiVersion: 'v1'` schickt hier weiter
|
|
@@ -90,6 +82,41 @@ export interface ContractAcceptedEventData {
|
|
|
90
82
|
confirmedAt: number;
|
|
91
83
|
source: ContractSource;
|
|
92
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Nutzlast von `signature.failed` in der Sprache `v3`. `code` ist immer
|
|
87
|
+
* `signature_failed` (FinanzOnline hat die Registrierung abgelehnt, `rc`
|
|
88
|
+
* nennt den Rueckgabecode); die Ursache im Einzelnen steht am Antrag
|
|
89
|
+
* (`getCustomerSignatureStatus`, `requests[].error.code`, siehe
|
|
90
|
+
* [SIGNATURE_ERROR_CODES]). `message` ist ein Text fuer Menschen.
|
|
91
|
+
*/
|
|
92
|
+
export interface SignatureFailedEventData {
|
|
93
|
+
customerId: string;
|
|
94
|
+
companyName: string;
|
|
95
|
+
requestId: string;
|
|
96
|
+
code: 'signature_failed' | (string & {});
|
|
97
|
+
/** Rueckgabecode von FinanzOnline, falls es einen gab. */
|
|
98
|
+
rc: string | null;
|
|
99
|
+
message: string;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Nutzlast von `cashregister.failed` in der Sprache `v3`: an welchem Schritt
|
|
103
|
+
* die Inbetriebnahme stehen blieb und mit welchem Code. Der Server feuert das
|
|
104
|
+
* Ereignis mit `signature_not_ready`, `fon_missing` oder `activation_failed`.
|
|
105
|
+
* Fehlende Vertraege (`contracts_pending`) loesen **kein** Ereignis aus: das
|
|
106
|
+
* meldet `activateCashregister` als Fehler, die Freigabe melden
|
|
107
|
+
* `customer.avv_accepted` und `customer.terms_accepted`.
|
|
108
|
+
*/
|
|
109
|
+
export interface CashregisterFailedEventData {
|
|
110
|
+
customerId: string;
|
|
111
|
+
companyName: string;
|
|
112
|
+
cashregisterId: string;
|
|
113
|
+
step: CashregisterActivationStep | null;
|
|
114
|
+
code: 'signature_not_ready' | 'fon_missing' | 'activation_failed' | (string & {});
|
|
115
|
+
/** Rueckgabecode von FinanzOnline, falls es einen gab. */
|
|
116
|
+
rc: string | null;
|
|
117
|
+
message: string;
|
|
118
|
+
env: PartnerEnv;
|
|
119
|
+
}
|
|
93
120
|
export type WebhookEventResult = {
|
|
94
121
|
ok: true;
|
|
95
122
|
event: PartnerWebhookEvent;
|
|
@@ -113,9 +140,10 @@ export type WebhookEventResult = {
|
|
|
113
140
|
* Eine ausbleibende Antwort wird bis zu fuenfmal wiederholt (1 min, 5 min,
|
|
114
141
|
* 30 min, 2 h, 12 h) und gilt dann als fehlgeschlagen.
|
|
115
142
|
*/
|
|
116
|
-
export declare function parseWebhookEvent(
|
|
117
|
-
/**
|
|
118
|
-
export
|
|
143
|
+
export declare function parseWebhookEvent(options: VerifyWebhookOptions): Promise<WebhookEventResult>;
|
|
144
|
+
/** Staende einer Zustellung; `/v1` sagte `offen`, `zugestellt`, `fehlgeschlagen`, `verworfen`. */
|
|
145
|
+
export declare const WEBHOOK_DELIVERY_STATUSES: readonly ["pending", "delivered", "failed", "dropped"];
|
|
146
|
+
export type WebhookDeliveryStatus = typeof WEBHOOK_DELIVERY_STATUSES[number];
|
|
119
147
|
export interface PartnerWebhook {
|
|
120
148
|
webhookId: string;
|
|
121
149
|
/** Sprache der Nutzlast; fehlt sie in der Antwort, ist es ein Bestands-Webhook und damit `v1`. */
|
|
@@ -173,7 +201,7 @@ export interface DeleteWebhookResult {
|
|
|
173
201
|
/** Unter `/v1` hiess das Feld `geloescht`. */
|
|
174
202
|
deleted: boolean;
|
|
175
203
|
}
|
|
176
|
-
export interface
|
|
204
|
+
export interface WebhookList {
|
|
177
205
|
webhooks: PartnerWebhook[];
|
|
178
206
|
/** Der Katalog: Ereignisname und deutscher Text, so wie das Panel ihn zeigt. */
|
|
179
207
|
events: {
|
|
@@ -181,7 +209,7 @@ export interface WebhookListe {
|
|
|
181
209
|
text: string;
|
|
182
210
|
}[];
|
|
183
211
|
}
|
|
184
|
-
export interface
|
|
212
|
+
export interface WebhookDelivery {
|
|
185
213
|
deliveryId: string;
|
|
186
214
|
webhookId: string;
|
|
187
215
|
event: string;
|
|
@@ -203,7 +231,7 @@ export interface WebhookZustellung {
|
|
|
203
231
|
* **Das Secret in der Antwort ist der einzige Weg dazu.** Es sofort dorthin
|
|
204
232
|
* schreiben, wo der Empfaenger es liest — nicht in ein Protokoll.
|
|
205
233
|
*/
|
|
206
|
-
export declare function createPartnerWebhook(
|
|
234
|
+
export declare function createPartnerWebhook(transport: InternerTransport, options: CreateWebhookOptions): Promise<CreateWebhookResult>;
|
|
207
235
|
/**
|
|
208
236
|
* Ein neues Secret fuer denselben Endpunkt.
|
|
209
237
|
*
|
|
@@ -214,22 +242,22 @@ export declare function createPartnerWebhook(rufen: InternerTransport, optionen:
|
|
|
214
242
|
* Das alte Secret gilt ab der Antwort NICHT mehr: die naechste Zustellung ist
|
|
215
243
|
* schon mit dem neuen signiert. Erst speichern, dann weiterarbeiten.
|
|
216
244
|
*/
|
|
217
|
-
export declare function rotatePartnerWebhookSecret(
|
|
245
|
+
export declare function rotatePartnerWebhookSecret(transport: InternerTransport, webhookId: string): Promise<CreateWebhookResult>;
|
|
218
246
|
/** Die Webhook-Endpunkte dieses Partners samt Ereignis-Katalog. */
|
|
219
|
-
export declare function listPartnerWebhooks(
|
|
247
|
+
export declare function listPartnerWebhooks(transport: InternerTransport): Promise<WebhookList>;
|
|
220
248
|
/**
|
|
221
249
|
* Aendert einen Endpunkt. Nur die genannten Felder — ein leeres `patch` lehnt
|
|
222
250
|
* das Backend ab (`validation`, Feld `patch`), statt stillschweigend nichts zu
|
|
223
251
|
* tun.
|
|
224
252
|
*/
|
|
225
|
-
export declare function updatePartnerWebhook(
|
|
253
|
+
export declare function updatePartnerWebhook(transport: InternerTransport, webhookId: string, patch: WebhookPatch): Promise<PartnerWebhook>;
|
|
226
254
|
/**
|
|
227
255
|
* Loescht einen Endpunkt. Danach kommt dort nichts mehr an; offene
|
|
228
256
|
* Zustellungen werden verworfen (`dropped`).
|
|
229
257
|
*/
|
|
230
|
-
export declare function deletePartnerWebhook(
|
|
258
|
+
export declare function deletePartnerWebhook(transport: InternerTransport, webhookId: string): Promise<DeleteWebhookResult>;
|
|
231
259
|
/** Eine Zustellung der Probe, so wie `sendPartnerWebhookTest` sie meldet. */
|
|
232
|
-
export interface
|
|
260
|
+
export interface WebhookTestDelivery {
|
|
233
261
|
deliveryId: string;
|
|
234
262
|
webhookId: string;
|
|
235
263
|
status: WebhookDeliveryStatus | (string & {});
|
|
@@ -239,7 +267,7 @@ export interface WebhookTestResult {
|
|
|
239
267
|
eventId: string;
|
|
240
268
|
/** Welches Ereignis geprobt wurde — ohne Angabe `webhook.test`. */
|
|
241
269
|
event: string;
|
|
242
|
-
deliveries:
|
|
270
|
+
deliveries: WebhookTestDelivery[];
|
|
243
271
|
}
|
|
244
272
|
/**
|
|
245
273
|
* Schickt eine Probe an genau diesen Endpunkt.
|
|
@@ -261,13 +289,13 @@ export interface WebhookTestResult {
|
|
|
261
289
|
* den Namen bei, damit ein Leser der Doku und ein Leser des Codes dasselbe
|
|
262
290
|
* suchen.
|
|
263
291
|
*/
|
|
264
|
-
export declare function sendPartnerWebhookTest(
|
|
292
|
+
export declare function sendPartnerWebhookTest(transport: InternerTransport, webhookId: string, event?: PartnerWebhookEventType | (string & {})): Promise<WebhookTestResult>;
|
|
265
293
|
/**
|
|
266
294
|
* Die letzten Zustellversuche — mit `webhookId` fuer einen Endpunkt, ohne ihn
|
|
267
295
|
* fuer alle. Die Stelle, an der sich „mein Server bekommt nichts" klaeren
|
|
268
296
|
* laesst, ohne bei Kasseneck nachzufragen.
|
|
269
297
|
*/
|
|
270
|
-
export declare function listPartnerWebhookDeliveries(
|
|
298
|
+
export declare function listPartnerWebhookDeliveries(transport: InternerTransport, options?: {
|
|
271
299
|
webhookId?: string;
|
|
272
300
|
limit?: number;
|
|
273
|
-
}): Promise<
|
|
301
|
+
}): Promise<WebhookDelivery[]>;
|
|
@@ -11,14 +11,13 @@ import { verifyWebhookSignature, } from './webhook-signatur.js';
|
|
|
11
11
|
// Ereignisse
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
13
13
|
/**
|
|
14
|
-
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann
|
|
14
|
+
* Alle Ereignisse, die ein Webhook abonnieren **und proben** kann, in der
|
|
15
|
+
* Reihenfolge des Backend-Katalogs (`listPartnerWebhooks().events`). Ein
|
|
15
16
|
* Endpunkt bekommt ausschliesslich die, die in seiner `events`-Liste stehen.
|
|
16
17
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* gegeneinander geprueft werden. Abonnieren geht trotzdem schon (`events`
|
|
21
|
-
* nimmt jeden Namen), die Nutzlast beschreibt [ContractAcceptedEventData].
|
|
18
|
+
* Die Nutzlasten der Ereignisse, die `/v3` uebersetzt, beschreiben
|
|
19
|
+
* [ContractAcceptedEventData], [SignatureFailedEventData] und
|
|
20
|
+
* [CashregisterFailedEventData].
|
|
22
21
|
*/
|
|
23
22
|
export const PARTNER_WEBHOOK_EVENTS = [
|
|
24
23
|
'customer.created',
|
|
@@ -26,6 +25,8 @@ export const PARTNER_WEBHOOK_EVENTS = [
|
|
|
26
25
|
'customer.status_changed',
|
|
27
26
|
'customer.fon_verified',
|
|
28
27
|
'customer.live_enabled',
|
|
28
|
+
'customer.avv_accepted',
|
|
29
|
+
'customer.terms_accepted',
|
|
29
30
|
'signature.requested',
|
|
30
31
|
'signature.ready',
|
|
31
32
|
'signature.failed',
|
|
@@ -36,8 +37,8 @@ export const PARTNER_WEBHOOK_EVENTS = [
|
|
|
36
37
|
'app.version.rejected',
|
|
37
38
|
'webhook.test',
|
|
38
39
|
];
|
|
39
|
-
export function
|
|
40
|
-
return typeof
|
|
40
|
+
export function isPartnerWebhookEvent(value) {
|
|
41
|
+
return typeof value === 'string' && PARTNER_WEBHOOK_EVENTS.includes(value);
|
|
41
42
|
}
|
|
42
43
|
/**
|
|
43
44
|
* Die Felder des Umschlags, so wie er auf der Leitung liegt.
|
|
@@ -46,7 +47,7 @@ export function istPartnerWebhookEvent(wert) {
|
|
|
46
47
|
* genau ein solches Feld verschwindet sonst auf einer Seite, ohne dass etwas
|
|
47
48
|
* rot wird.
|
|
48
49
|
*/
|
|
49
|
-
export const
|
|
50
|
+
export const WEBHOOK_ENVELOPE_FIELDS = ['id', 'type', 'createdAt', 'partnerId', 'test', 'data'];
|
|
50
51
|
/**
|
|
51
52
|
* Prueft die Signatur **und** liest das Ereignis — in dieser Reihenfolge. Wer
|
|
52
53
|
* zuerst parst und dann prueft, hat den fremden Rumpf schon durch seinen Code
|
|
@@ -62,11 +63,11 @@ export const WEBHOOK_UMSCHLAG_FELDER = ['id', 'type', 'createdAt', 'partnerId',
|
|
|
62
63
|
* Eine ausbleibende Antwort wird bis zu fuenfmal wiederholt (1 min, 5 min,
|
|
63
64
|
* 30 min, 2 h, 12 h) und gilt dann als fehlgeschlagen.
|
|
64
65
|
*/
|
|
65
|
-
export async function parseWebhookEvent(
|
|
66
|
-
const geprueft = await verifyWebhookSignature(
|
|
66
|
+
export async function parseWebhookEvent(options) {
|
|
67
|
+
const geprueft = await verifyWebhookSignature(options);
|
|
67
68
|
if (!geprueft.ok)
|
|
68
69
|
return { ok: false, reason: geprueft.reason };
|
|
69
|
-
const text = typeof
|
|
70
|
+
const text = typeof options.body === 'string' ? options.body : new TextDecoder('utf-8').decode(options.body);
|
|
70
71
|
let roh;
|
|
71
72
|
try {
|
|
72
73
|
roh = JSON.parse(text);
|
|
@@ -97,6 +98,11 @@ export async function parseWebhookEvent(optionen) {
|
|
|
97
98
|
},
|
|
98
99
|
};
|
|
99
100
|
}
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
// Endpunkte verwalten
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
/** Staende einer Zustellung; `/v1` sagte `offen`, `zugestellt`, `fehlgeschlagen`, `verworfen`. */
|
|
105
|
+
export const WEBHOOK_DELIVERY_STATUSES = ['pending', 'delivered', 'failed', 'dropped'];
|
|
100
106
|
function objekt(wert) {
|
|
101
107
|
return wert !== null && typeof wert === 'object' && !Array.isArray(wert) ? wert : {};
|
|
102
108
|
}
|
|
@@ -134,18 +140,18 @@ function webhook(eintrag) {
|
|
|
134
140
|
* **Das Secret in der Antwort ist der einzige Weg dazu.** Es sofort dorthin
|
|
135
141
|
* schreiben, wo der Empfaenger es liest — nicht in ein Protokoll.
|
|
136
142
|
*/
|
|
137
|
-
export async function createPartnerWebhook(
|
|
138
|
-
const url = typeof
|
|
143
|
+
export async function createPartnerWebhook(transport, options) {
|
|
144
|
+
const url = typeof options?.url === 'string' ? options.url.trim() : '';
|
|
139
145
|
if (!url)
|
|
140
146
|
throw new KasseneckValidationError('createPartnerWebhook', 'url fehlt', 'request');
|
|
141
|
-
if (!Array.isArray(
|
|
147
|
+
if (!Array.isArray(options.events) || options.events.length === 0) {
|
|
142
148
|
throw new KasseneckValidationError('createPartnerWebhook', 'events ist leer — ein Endpunkt ohne Ereignis bekaeme nie etwas', 'request');
|
|
143
149
|
}
|
|
144
|
-
const daten = objekt(await
|
|
150
|
+
const daten = objekt(await transport('createPartnerWebhook', {
|
|
145
151
|
url,
|
|
146
|
-
events:
|
|
147
|
-
description:
|
|
148
|
-
active:
|
|
152
|
+
events: options.events,
|
|
153
|
+
description: options.description,
|
|
154
|
+
active: options.active,
|
|
149
155
|
}));
|
|
150
156
|
const secret = daten['secret'];
|
|
151
157
|
if (typeof secret !== 'string' || !secret) {
|
|
@@ -163,11 +169,11 @@ export async function createPartnerWebhook(rufen, optionen) {
|
|
|
163
169
|
* Das alte Secret gilt ab der Antwort NICHT mehr: die naechste Zustellung ist
|
|
164
170
|
* schon mit dem neuen signiert. Erst speichern, dann weiterarbeiten.
|
|
165
171
|
*/
|
|
166
|
-
export async function rotatePartnerWebhookSecret(
|
|
172
|
+
export async function rotatePartnerWebhookSecret(transport, webhookId) {
|
|
167
173
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
168
174
|
if (!id)
|
|
169
175
|
throw new KasseneckValidationError('rotatePartnerWebhookSecret', 'webhookId fehlt', 'request');
|
|
170
|
-
const daten = objekt(await
|
|
176
|
+
const daten = objekt(await transport('rotatePartnerWebhookSecret', { webhookId: id }));
|
|
171
177
|
const secret = daten['secret'];
|
|
172
178
|
if (typeof secret !== 'string' || !secret) {
|
|
173
179
|
throw new KasseneckValidationError('rotatePartnerWebhookSecret', 'Antwort enthaelt kein secret — dann waere der Wechsel nicht nachvollziehbar', 'response');
|
|
@@ -175,8 +181,8 @@ export async function rotatePartnerWebhookSecret(rufen, webhookId) {
|
|
|
175
181
|
return { webhook: webhook(daten['webhook']), secret };
|
|
176
182
|
}
|
|
177
183
|
/** Die Webhook-Endpunkte dieses Partners samt Ereignis-Katalog. */
|
|
178
|
-
export async function listPartnerWebhooks(
|
|
179
|
-
const daten = objekt(await
|
|
184
|
+
export async function listPartnerWebhooks(transport) {
|
|
185
|
+
const daten = objekt(await transport('listPartnerWebhooks'));
|
|
180
186
|
return {
|
|
181
187
|
webhooks: (Array.isArray(daten['webhooks']) ? daten['webhooks'] : []).map(webhook),
|
|
182
188
|
events: (Array.isArray(daten['events']) ? daten['events'] : []).map((e) => ({
|
|
@@ -190,25 +196,25 @@ export async function listPartnerWebhooks(rufen) {
|
|
|
190
196
|
* das Backend ab (`validation`, Feld `patch`), statt stillschweigend nichts zu
|
|
191
197
|
* tun.
|
|
192
198
|
*/
|
|
193
|
-
export async function updatePartnerWebhook(
|
|
199
|
+
export async function updatePartnerWebhook(transport, webhookId, patch) {
|
|
194
200
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
195
201
|
if (!id)
|
|
196
202
|
throw new KasseneckValidationError('updatePartnerWebhook', 'webhookId fehlt', 'request');
|
|
197
203
|
if (patch === null || typeof patch !== 'object' || Object.keys(patch).length === 0) {
|
|
198
204
|
throw new KasseneckValidationError('updatePartnerWebhook', 'patch nennt keine Aenderung', 'request');
|
|
199
205
|
}
|
|
200
|
-
const daten = objekt(await
|
|
206
|
+
const daten = objekt(await transport('updatePartnerWebhook', { webhookId: id, patch }));
|
|
201
207
|
return webhook(daten['webhook']);
|
|
202
208
|
}
|
|
203
209
|
/**
|
|
204
210
|
* Loescht einen Endpunkt. Danach kommt dort nichts mehr an; offene
|
|
205
211
|
* Zustellungen werden verworfen (`dropped`).
|
|
206
212
|
*/
|
|
207
|
-
export async function deletePartnerWebhook(
|
|
213
|
+
export async function deletePartnerWebhook(transport, webhookId) {
|
|
208
214
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
209
215
|
if (!id)
|
|
210
216
|
throw new KasseneckValidationError('deletePartnerWebhook', 'webhookId fehlt', 'request');
|
|
211
|
-
const daten = objekt(await
|
|
217
|
+
const daten = objekt(await transport('deletePartnerWebhook', { webhookId: id }));
|
|
212
218
|
return {
|
|
213
219
|
webhookId: typeof daten['webhookId'] === 'string' ? daten['webhookId'] : id,
|
|
214
220
|
deleted: daten['deleted'] === true,
|
|
@@ -234,12 +240,12 @@ export async function deletePartnerWebhook(rufen, webhookId) {
|
|
|
234
240
|
* den Namen bei, damit ein Leser der Doku und ein Leser des Codes dasselbe
|
|
235
241
|
* suchen.
|
|
236
242
|
*/
|
|
237
|
-
export async function sendPartnerWebhookTest(
|
|
243
|
+
export async function sendPartnerWebhookTest(transport, webhookId, event) {
|
|
238
244
|
const id = typeof webhookId === 'string' ? webhookId.trim() : '';
|
|
239
245
|
if (!id)
|
|
240
246
|
throw new KasseneckValidationError('sendPartnerWebhookTest', 'webhookId fehlt', 'request');
|
|
241
247
|
const ereignis = typeof event === 'string' ? event.trim() : '';
|
|
242
|
-
const daten = objekt(await
|
|
248
|
+
const daten = objekt(await transport('sendPartnerWebhookTest', { webhookId: id, event: ereignis || undefined }));
|
|
243
249
|
return {
|
|
244
250
|
eventId: typeof daten['eventId'] === 'string' ? daten['eventId'] : '',
|
|
245
251
|
event: typeof daten['event'] === 'string' ? daten['event'] : ereignis || 'webhook.test',
|
|
@@ -259,11 +265,11 @@ export async function sendPartnerWebhookTest(rufen, webhookId, event) {
|
|
|
259
265
|
* fuer alle. Die Stelle, an der sich „mein Server bekommt nichts" klaeren
|
|
260
266
|
* laesst, ohne bei Kasseneck nachzufragen.
|
|
261
267
|
*/
|
|
262
|
-
export async function listPartnerWebhookDeliveries(
|
|
263
|
-
if (
|
|
268
|
+
export async function listPartnerWebhookDeliveries(transport, options = {}) {
|
|
269
|
+
if (options.limit !== undefined && (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 200)) {
|
|
264
270
|
throw new KasseneckValidationError('listPartnerWebhookDeliveries', 'limit muss zwischen 1 und 200 liegen', 'request');
|
|
265
271
|
}
|
|
266
|
-
const daten = objekt(await
|
|
272
|
+
const daten = objekt(await transport('listPartnerWebhookDeliveries', { webhookId: options.webhookId, limit: options.limit }));
|
|
267
273
|
return (Array.isArray(daten['deliveries']) ? daten['deliveries'] : []).map((eintrag) => {
|
|
268
274
|
const z = objekt(eintrag);
|
|
269
275
|
const zahl = (wert) => (typeof wert === 'number' && Number.isFinite(wert) ? wert : null);
|
|
@@ -40,40 +40,40 @@ import { TECS_CODES } from './tecs-codes.js';
|
|
|
40
40
|
/** Der Satz fuer den Bediener je Grund, deutsch. */
|
|
41
41
|
export const HPS_REASON_HINTS = {
|
|
42
42
|
approved: 'Vom Terminal genehmigt.',
|
|
43
|
-
approvedWithCondition: 'Das Terminal meldet eine Genehmigung mit Vorbehalt (etwa nur über einen Teilbetrag). Ob und in welcher Höhe belastet wurde, bitte am Terminalbeleg prüfen
|
|
43
|
+
approvedWithCondition: 'Das Terminal meldet eine Genehmigung mit Vorbehalt (etwa nur über einen Teilbetrag). Ob und in welcher Höhe belastet wurde, bitte am Terminalbeleg prüfen – nicht erneut kassieren, bevor es geklärt ist.',
|
|
44
44
|
aborted: 'Der Vorgang wurde abgebrochen. Es wurde kein Geld bewegt.',
|
|
45
|
-
noCard: 'Es wurde keine Karte vorgehalten. Es wurde kein Geld bewegt
|
|
46
|
-
cardReadFailed: 'Die Karte konnte nicht gelesen werden. Es wurde kein Geld bewegt
|
|
47
|
-
cardDeclined: 'Die Karte wurde vom Terminal abgelehnt. Es wurde kein Geld bewegt
|
|
48
|
-
issuerDeclined: 'Die Zahlung wurde von der Bank abgelehnt. Es wurde kein Geld bewegt
|
|
49
|
-
cardBlocked: 'Die Karte ist gesperrt. Es wurde kein Geld bewegt
|
|
50
|
-
cardExpired: 'Die Karte ist abgelaufen. Es wurde kein Geld bewegt
|
|
51
|
-
insufficientFunds: 'Das Konto ist nicht gedeckt oder das Kartenlimit ist erreicht. Es wurde kein Geld bewegt
|
|
52
|
-
wrongPin: 'Die PIN war falsch. Es wurde kein Geld bewegt
|
|
53
|
-
pinTriesExceeded: 'Die PIN wurde zu oft falsch eingegeben. Es wurde kein Geld bewegt
|
|
54
|
-
pinRequired: 'Die Bank verlangt die PIN. Es wurde kein Geld bewegt
|
|
45
|
+
noCard: 'Es wurde keine Karte vorgehalten. Es wurde kein Geld bewegt – bitte erneut versuchen.',
|
|
46
|
+
cardReadFailed: 'Die Karte konnte nicht gelesen werden. Es wurde kein Geld bewegt – bitte erneut versuchen, notfalls die Karte stecken statt auflegen.',
|
|
47
|
+
cardDeclined: 'Die Karte wurde vom Terminal abgelehnt. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
|
|
48
|
+
issuerDeclined: 'Die Zahlung wurde von der Bank abgelehnt. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
|
|
49
|
+
cardBlocked: 'Die Karte ist gesperrt. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
|
|
50
|
+
cardExpired: 'Die Karte ist abgelaufen. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
|
|
51
|
+
insufficientFunds: 'Das Konto ist nicht gedeckt oder das Kartenlimit ist erreicht. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
|
|
52
|
+
wrongPin: 'Die PIN war falsch. Es wurde kein Geld bewegt – bitte erneut versuchen.',
|
|
53
|
+
pinTriesExceeded: 'Die PIN wurde zu oft falsch eingegeben. Es wurde kein Geld bewegt – bitte eine andere Karte oder Zahlungsart verwenden.',
|
|
54
|
+
pinRequired: 'Die Bank verlangt die PIN. Es wurde kein Geld bewegt – bitte erneut versuchen, die Karte stecken und die PIN eingeben.',
|
|
55
55
|
amountInvalid: 'Das Terminal nimmt diesen Betrag nicht an. Es wurde kein Geld bewegt.',
|
|
56
|
-
tipNotSelected: 'Das Trinkgeld wurde nicht rechtzeitig gewählt. Es wurde kein Geld bewegt
|
|
57
|
-
terminalBusy: 'Das Terminal ist noch mit einem anderen Vorgang beschäftigt. Es wurde kein Geld bewegt
|
|
58
|
-
terminalBlocked: 'Das Terminal ist gesperrt. Es wurde kein Geld bewegt
|
|
59
|
-
terminalSetup: 'Das Terminal ist nicht richtig eingerichtet. Es wurde kein Geld bewegt
|
|
60
|
-
acquirerSetup: 'hobex nimmt dieses Terminal oder diesen Händler so nicht an. Es wurde kein Geld bewegt
|
|
61
|
-
terminalFault: 'Das Terminal meldet eine Störung. Es wurde kein Geld bewegt
|
|
62
|
-
requestRejected: 'Das Terminal hat die Anfrage abgewiesen. Es wurde kein Geld bewegt
|
|
63
|
-
hostRejected: 'hobex hat die Zahlung abgewiesen. Es wurde kein Geld bewegt
|
|
64
|
-
hostUnavailable: 'Die Bank oder hobex ist gerade nicht erreichbar. Es wurde kein Geld bewegt
|
|
56
|
+
tipNotSelected: 'Das Trinkgeld wurde nicht rechtzeitig gewählt. Es wurde kein Geld bewegt – bitte erneut versuchen.',
|
|
57
|
+
terminalBusy: 'Das Terminal ist noch mit einem anderen Vorgang beschäftigt. Es wurde kein Geld bewegt – kurz warten und erneut versuchen.',
|
|
58
|
+
terminalBlocked: 'Das Terminal ist gesperrt. Es wurde kein Geld bewegt – bitte hobex kontaktieren.',
|
|
59
|
+
terminalSetup: 'Das Terminal ist nicht richtig eingerichtet. Es wurde kein Geld bewegt – bitte die Terminal-ID in den Einstellungen prüfen, sonst hobex kontaktieren.',
|
|
60
|
+
acquirerSetup: 'hobex nimmt dieses Terminal oder diesen Händler so nicht an. Es wurde kein Geld bewegt – bitte hobex kontaktieren.',
|
|
61
|
+
terminalFault: 'Das Terminal meldet eine Störung. Es wurde kein Geld bewegt – bitte das Terminal neu starten und erneut versuchen.',
|
|
62
|
+
requestRejected: 'Das Terminal hat die Anfrage abgewiesen. Es wurde kein Geld bewegt – tritt das wieder auf, bitte den Support kontaktieren.',
|
|
63
|
+
hostRejected: 'hobex hat die Zahlung abgewiesen. Es wurde kein Geld bewegt – bitte erneut versuchen; tritt das wieder auf, hobex kontaktieren.',
|
|
64
|
+
hostUnavailable: 'Die Bank oder hobex ist gerade nicht erreichbar. Es wurde kein Geld bewegt – bitte später erneut versuchen oder eine andere Zahlungsart verwenden.',
|
|
65
65
|
invalidTransaction: 'Das Terminal kennt die ursprüngliche Zahlung nicht. Es wurde kein Geld bewegt.',
|
|
66
66
|
refundPassword: 'Das Passwort für die Gutschrift war falsch oder wurde nicht eingegeben. Es wurde nichts ausgezahlt.',
|
|
67
|
-
refundDisabled: 'Gutschriften sind an diesem Terminal abgeschaltet. Es wurde nichts ausgezahlt
|
|
67
|
+
refundDisabled: 'Gutschriften sind an diesem Terminal abgeschaltet. Es wurde nichts ausgezahlt – bitte hobex kontaktieren.',
|
|
68
68
|
refundRejected: 'Die Gutschrift wurde abgewiesen (Betrag zu hoch, bereits erstattet oder zu viele Versuche). Es wurde nichts ausgezahlt.',
|
|
69
|
-
hostTimeoutReversed: 'hobex hat nicht rechtzeitig geantwortet, das Terminal hat den Vorgang selbst storniert. Es wird kein Geld bewegt
|
|
70
|
-
reversedByHost: 'Die Zahlung wurde wegen einer Störung automatisch storniert. Es wurde kein Geld bewegt
|
|
71
|
-
voidedAfterHostFault: 'hobex hat nicht sauber geantwortet, die Zahlung wurde deshalb sicherheitshalber storniert. Es wurde kein Geld bewegt
|
|
72
|
-
hostFault: 'Die Verbindung zwischen Terminal und hobex ist gestört. Ob die Karte belastet wurde, weiß das Terminal nicht
|
|
73
|
-
hostTimeout: 'hobex hat nicht rechtzeitig geantwortet. Ob die Karte belastet wurde, weiß das Terminal nicht
|
|
74
|
-
internalError: 'Das Terminal meldet einen internen Fehler. Ob die Karte belastet wurde, ist unklar
|
|
69
|
+
hostTimeoutReversed: 'hobex hat nicht rechtzeitig geantwortet, das Terminal hat den Vorgang selbst storniert. Es wird kein Geld bewegt – bitte erneut versuchen.',
|
|
70
|
+
reversedByHost: 'Die Zahlung wurde wegen einer Störung automatisch storniert. Es wurde kein Geld bewegt – bitte erneut versuchen.',
|
|
71
|
+
voidedAfterHostFault: 'hobex hat nicht sauber geantwortet, die Zahlung wurde deshalb sicherheitshalber storniert. Es wurde kein Geld bewegt – bitte erneut versuchen.',
|
|
72
|
+
hostFault: 'Die Verbindung zwischen Terminal und hobex ist gestört. Ob die Karte belastet wurde, weiß das Terminal nicht – bitte nicht erneut kassieren, bevor es geklärt ist.',
|
|
73
|
+
hostTimeout: 'hobex hat nicht rechtzeitig geantwortet. Ob die Karte belastet wurde, weiß das Terminal nicht – bitte nicht erneut kassieren, bevor es geklärt ist.',
|
|
74
|
+
internalError: 'Das Terminal meldet einen internen Fehler. Ob die Karte belastet wurde, ist unklar – bitte nicht erneut kassieren, bevor es geklärt ist.',
|
|
75
75
|
canceled: 'Die Zahlung ist aufgehoben.',
|
|
76
|
-
cancelDenied: 'Die Zahlung lässt sich nicht mehr aufheben und bleibt belastet
|
|
76
|
+
cancelDenied: 'Die Zahlung lässt sich nicht mehr aufheben und bleibt belastet – bitte stattdessen eine Gutschrift ausführen.',
|
|
77
77
|
originalDeclined: 'Die ursprüngliche Zahlung war abgelehnt; es gibt nichts aufzuheben.',
|
|
78
78
|
notAbortable: 'Der Vorgang ist bereits abgeschlossen und lässt sich nicht mehr abbrechen.',
|
|
79
79
|
noStatement: 'Das Terminal hat zu diesem Vorgang keine Auskunft.',
|
|
@@ -46,7 +46,7 @@ export interface HobexTransactionIdOptions {
|
|
|
46
46
|
* **Der Endpunkt heisst `hobexPayApi`** — mit Suffix; ohne ihn gibt es ihn
|
|
47
47
|
* nicht.
|
|
48
48
|
*/
|
|
49
|
-
export declare function hobexPay(
|
|
49
|
+
export declare function hobexPay(transport: InternerTransport, options: HobexPayOptions): Promise<HobexReceipt>;
|
|
50
50
|
/**
|
|
51
51
|
* Erstattet eine zuvor ueber die Hobex-Cloud getaetigte Zahlung. Das Backend
|
|
52
52
|
* storniert zuerst (Void, solange der Tagesabschluss aussteht) und erstattet
|
|
@@ -61,7 +61,7 @@ export declare function hobexPay(rufen: InternerTransport, options: HobexPayOpti
|
|
|
61
61
|
*
|
|
62
62
|
* **Der Endpunkt heisst `hobexRefundApi`** — mit Suffix.
|
|
63
63
|
*/
|
|
64
|
-
export declare function hobexRefund(
|
|
64
|
+
export declare function hobexRefund(transport: InternerTransport, options: HobexRefundOptions): Promise<void>;
|
|
65
65
|
/**
|
|
66
66
|
* Erzeugt eine neue Hobex-Transaktionskennung: 19 Ziffern aus Zeitanteil und
|
|
67
67
|
* Zufall (Zwilling von `newHobexTransactionId` im Vorbild, Zeile 522).
|
|
@@ -37,13 +37,13 @@ const ENDPUNKT_REFUND = 'hobexRefundApi';
|
|
|
37
37
|
* **Der Endpunkt heisst `hobexPayApi`** — mit Suffix; ohne ihn gibt es ihn
|
|
38
38
|
* nicht.
|
|
39
39
|
*/
|
|
40
|
-
export async function hobexPay(
|
|
40
|
+
export async function hobexPay(transport, options) {
|
|
41
41
|
const params = zahlungsNutzlast(ENDPUNKT_PAY, options);
|
|
42
42
|
// `reference` steht im Vorbild **unbedingt** in der Nutzlast: ohne Angabe
|
|
43
43
|
// geht sie als null raus, nicht gar nicht. Der Transport wirft nur
|
|
44
44
|
// `undefined` weg, `null` bleibt erhalten — genau diese Unterscheidung.
|
|
45
45
|
params['reference'] = options.reference ?? null;
|
|
46
|
-
return belegAusNutzlast(await
|
|
46
|
+
return belegAusNutzlast(await transport(ENDPUNKT_PAY, params));
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
49
|
* Erstattet eine zuvor ueber die Hobex-Cloud getaetigte Zahlung. Das Backend
|
|
@@ -59,9 +59,9 @@ export async function hobexPay(rufen, options) {
|
|
|
59
59
|
*
|
|
60
60
|
* **Der Endpunkt heisst `hobexRefundApi`** — mit Suffix.
|
|
61
61
|
*/
|
|
62
|
-
export async function hobexRefund(
|
|
62
|
+
export async function hobexRefund(transport, options) {
|
|
63
63
|
// Anders als die Zahlung sendet der Refund im Vorbild **keine** reference.
|
|
64
|
-
await
|
|
64
|
+
await transport(ENDPUNKT_REFUND, zahlungsNutzlast(ENDPUNKT_REFUND, options));
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
67
|
* Erzeugt eine neue Hobex-Transaktionskennung: 19 Ziffern aus Zeitanteil und
|
|
@@ -50,7 +50,7 @@ export interface StripeCaptureResult {
|
|
|
50
50
|
* Methodenname und Endpunktname fallen wie schon beim Monatsbericht
|
|
51
51
|
* auseinander (siehe client/reports.ts).
|
|
52
52
|
*/
|
|
53
|
-
export declare function createStripeLink(
|
|
53
|
+
export declare function createStripeLink(transport: InternerTransport, options: CreateStripeLinkOptions): Promise<StripeUrlSession>;
|
|
54
54
|
/**
|
|
55
55
|
* Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein.
|
|
56
56
|
*
|
|
@@ -58,4 +58,4 @@ export declare function createStripeLink(rufen: InternerTransport, options: Crea
|
|
|
58
58
|
* das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender
|
|
59
59
|
* Pflichtparameter.
|
|
60
60
|
*/
|
|
61
|
-
export declare function stripeCaptureIntent(
|
|
61
|
+
export declare function stripeCaptureIntent(transport: InternerTransport, stripeSessionId: string): Promise<StripeCaptureResult>;
|
|
@@ -25,7 +25,7 @@ const ENDPUNKT_CAPTURE = 'stripeCaptureIntent';
|
|
|
25
25
|
* Methodenname und Endpunktname fallen wie schon beim Monatsbericht
|
|
26
26
|
* auseinander (siehe client/reports.ts).
|
|
27
27
|
*/
|
|
28
|
-
export async function createStripeLink(
|
|
28
|
+
export async function createStripeLink(transport, options) {
|
|
29
29
|
const { items } = options;
|
|
30
30
|
// Vor dem Senden pruefen: ein Zahlungslink ist zwar folgenlos wiederholbar,
|
|
31
31
|
// eine abgewiesene Anfrage aber eine unnoetige Runde ueber das Netz — und der
|
|
@@ -60,7 +60,7 @@ export async function createStripeLink(rufen, options) {
|
|
|
60
60
|
if (options.customerEmail != null) {
|
|
61
61
|
params['customer_email'] = options.customerEmail;
|
|
62
62
|
}
|
|
63
|
-
return sitzungAusNutzlast(await
|
|
63
|
+
return sitzungAusNutzlast(await transport(ENDPUNKT_LINK, params));
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
66
|
* Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein.
|
|
@@ -69,11 +69,11 @@ export async function createStripeLink(rufen, options) {
|
|
|
69
69
|
* das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender
|
|
70
70
|
* Pflichtparameter.
|
|
71
71
|
*/
|
|
72
|
-
export async function stripeCaptureIntent(
|
|
72
|
+
export async function stripeCaptureIntent(transport, stripeSessionId) {
|
|
73
73
|
if (typeof stripeSessionId !== 'string' || !stripeSessionId.trim()) {
|
|
74
74
|
throw eingabefehler(ENDPUNKT_CAPTURE, 'stripeSessionId fehlt');
|
|
75
75
|
}
|
|
76
|
-
const daten = await
|
|
76
|
+
const daten = await transport(ENDPUNKT_CAPTURE, { stripe_sessions_id: stripeSessionId });
|
|
77
77
|
return einzugAusNutzlast(daten);
|
|
78
78
|
}
|
|
79
79
|
/**
|