commit 7f198766a5ca4d9c68410c325a6a217181078c95 parent e5947e117c0f7a0e18118fa1f01e24c8f750990c Author: Florian Dold <florian@dold.me> Date: Wed, 8 Oct 2025 18:30:10 +0200 donau: also return legal_domain and year in statements Diffstat:
4 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/packages/taler-util/src/http-client/donau-client.ts b/packages/taler-util/src/http-client/donau-client.ts @@ -41,6 +41,7 @@ import { codecForDonauKeysResponse, codecForDonauVersionResponse, codecForIssuePrepareResponse, + DonauVersionResponse, IssuePrepareRequest, IssueReceiptsRequest, SubmitDonationReceiptsRequest, @@ -116,7 +117,9 @@ export class DonauHttpClient { * * @returns */ - async getConfig() { + async getConfig(): Promise< + OperationOk<DonauVersionResponse> | OperationFail<HttpStatusCode.NotFound> + > { const url = new URL(`config`, this.baseUrl); const resp = await this.httpLib.fetch(url.href, { method: "GET", diff --git a/packages/taler-util/src/types-donau.ts b/packages/taler-util/src/types-donau.ts @@ -60,7 +60,7 @@ export interface DonauVersionResponse { currency: string; // Financial domain by this Donau. - //domain: string; + legal_domain: string; } export const codecForDonauVersionResponse = (): Codec<DonauVersionResponse> => @@ -68,7 +68,7 @@ export const codecForDonauVersionResponse = (): Codec<DonauVersionResponse> => .property("version", codecForString()) .property("name", codecForConstString("donau")) .property("currency", codecForString()) - //.property("domain", codecForString()) + .property("legal_domain", codecForString()) .build("DonauApi.DonauVersionResponse"); /** diff --git a/packages/taler-util/src/types-taler-wallet.ts b/packages/taler-util/src/types-taler-wallet.ts @@ -4325,6 +4325,8 @@ export const codecForSetDonauRequest = (): Codec<SetDonauRequest> => export interface DonauStatementItem { total: AmountString; + year: number; + legalDomain: string; uri: string; donationStatementSig: EddsaSignatureString; donauPub: EddsaPublicKeyString; diff --git a/packages/taler-wallet-core/src/donau.ts b/packages/taler-wallet-core/src/donau.ts @@ -92,6 +92,7 @@ export async function handleGetDonauStatements( for (const donauUrl of donauUrls) { const donauClient = new DonauHttpClient(donauUrl); + const conf = succeedOrThrow(await donauClient.getConfig()); // Map from `${taxIdHash}-${year}` to receipts (in the same hash/year/baseUrl) const buckets: Map<string, DonationReceiptRecord[]> = new Map(); for (const receipt of pendingReceipts) { @@ -139,6 +140,8 @@ export async function handleGetDonauStatements( donationStatementSig: stmt.donation_statement_sig, donauPub: stmt.donau_pub, total: stmt.total, + year: r0.donationYear, + legalDomain: conf.legal_domain, // FIXME: Generate this using some helper // FIXME: What about a donau not at the root path? uri: `${proto}://${parsedDonauUrl.host}/${r0.donationYear}/${taxIdEnc}/${saltEnc}?total=${stmt.total}&sig=ED25519:${stmt.donation_statement_sig}`,