taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

commit ef5b6bac0549d800ed5956303139b6d421fbbf27
parent 35b03e891fc636dc890ceb2b85e18d4b9509f795
Author: Florian Dold <florian@dold.me>
Date:   Mon,  4 Nov 2024 11:12:31 +0100

util: handle BIC in Swiss QR code generation

Diffstat:
Mpackages/taler-util/src/qr.ts | 18+++++++-----------
1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/packages/taler-util/src/qr.ts b/packages/taler-util/src/qr.ts @@ -37,13 +37,14 @@ function encodePaytoAsSwissQrBill(paytoUri: string): EncodeResult { if (amountStr === undefined) { return { type: "skip" }; } - const iban = parsedPayto.targetPath; - const countryCode = iban.slice(0, 2); + const targetPathParts = parsedPayto.targetPath.split("/"); + const beneficiaryIban = targetPathParts[targetPathParts.length - 1]; + const countryCode = beneficiaryIban.slice(0, 2); const lines = [ "SPC", // QRType "0200", // Version "1", // Character set (1: UTF-8) - iban, // Beneficiary IBAN + beneficiaryIban, // Beneficiary IBAN // Group: Beneficiary "S", // Address type (S: structured) parsedPayto.params["receiver-name"], // Beneficiary name @@ -99,11 +100,8 @@ function encodePaytoAsEpcQr(paytoUri: string): EncodeResult { return { type: "skip" }; } const amountStr = parsedPayto.params["amount"]; - - const parts = parsedPayto.targetPath.split("/"); - - const iban = parts[parts.length - 1]; - + const targetPathParts = parsedPayto.targetPath.split("/"); + const beneficiaryIban = targetPathParts[targetPathParts.length - 1]; const amt = amountStr !== undefined ? `${Amounts.currencyOf(amountStr)}${Amounts.stringifyValue( @@ -111,7 +109,6 @@ function encodePaytoAsEpcQr(paytoUri: string): EncodeResult { 2, )}` : ""; - const lines = [ "BCD", // service tag "002", // version @@ -119,12 +116,11 @@ function encodePaytoAsEpcQr(paytoUri: string): EncodeResult { "SCT", // Identification "", // optional BIC parsedPayto.params["receiver-name"], // Beneficiary name - iban, // Beneficiary IBAN + beneficiaryIban, // Beneficiary IBAN amt, // Amount (optional) "", // AT-44 Purpose parsedPayto.params["message"], // AT-05 Unstructured remittance information ]; - return { type: "ok", qrContent: lines.join("\n"),