From 6308c7ea6ba195199ee413c6c485321a013a514a Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 10 May 2023 17:30:38 +0200 Subject: wallet-core: return txid when starting refund via URI --- packages/taler-wallet-core/src/operations/pay-merchant.ts | 13 +++++++++++-- packages/taler-wallet-core/src/wallet-api-types.ts | 3 ++- packages/taler-wallet-core/src/wallet.ts | 3 +-- 3 files changed, 14 insertions(+), 5 deletions(-) (limited to 'packages/taler-wallet-core') diff --git a/packages/taler-wallet-core/src/operations/pay-merchant.ts b/packages/taler-wallet-core/src/operations/pay-merchant.ts index e34dc7443..49ab63b19 100644 --- a/packages/taler-wallet-core/src/operations/pay-merchant.ts +++ b/packages/taler-wallet-core/src/operations/pay-merchant.ts @@ -69,6 +69,7 @@ import { PrepareRefundResult, randomBytes, RefreshReason, + StartRefundQueryForUriResponse, TalerError, TalerErrorCode, TalerErrorDetail, @@ -2051,7 +2052,7 @@ async function processPurchaseAcceptRefund( export async function startRefundQueryForUri( ws: InternalWalletState, talerUri: string, -): Promise { +): Promise { const parsedUri = parseTalerUri(talerUri); if (!parsedUri) { throw Error("invalid taler:// URI"); @@ -2070,7 +2071,15 @@ export async function startRefundQueryForUri( if (!purchaseRecord) { throw Error("no purchase found, can't refund"); } - return startQueryRefund(ws, purchaseRecord.proposalId); + const proposalId = purchaseRecord.proposalId; + const transactionId = constructTransactionIdentifier({ + tag: TransactionType.Payment, + proposalId, + }); + await startQueryRefund(ws, proposalId); + return { + transactionId, + } } export async function startQueryRefund( diff --git a/packages/taler-wallet-core/src/wallet-api-types.ts b/packages/taler-wallet-core/src/wallet-api-types.ts index f0da6059f..d8424494b 100644 --- a/packages/taler-wallet-core/src/wallet-api-types.ts +++ b/packages/taler-wallet-core/src/wallet-api-types.ts @@ -110,6 +110,7 @@ import { WithdrawFakebankRequest, WithdrawTestBalanceRequest, WithdrawUriInfoResponse, + StartRefundQueryForUriResponse, } from "@gnu-taler/taler-util"; import { AuditorTrustRecord, WalletContractData } from "./db.js"; import { @@ -438,7 +439,7 @@ export type ConfirmPayOp = { export type StartRefundQueryForUriOp = { op: WalletApiOperation.StartRefundQueryForUri; request: PrepareRefundRequest; - response: EmptyObject; + response: StartRefundQueryForUriResponse; }; export type StartRefundQueryOp = { diff --git a/packages/taler-wallet-core/src/wallet.ts b/packages/taler-wallet-core/src/wallet.ts index d76aa4ec9..01df4a5e1 100644 --- a/packages/taler-wallet-core/src/wallet.ts +++ b/packages/taler-wallet-core/src/wallet.ts @@ -1288,8 +1288,7 @@ async function dispatchRequestInternal( } case WalletApiOperation.StartRefundQueryForUri: { const req = codecForPrepareRefundRequest().decode(payload); - await startRefundQueryForUri(ws, req.talerRefundUri); - return {}; + return await startRefundQueryForUri(ws, req.talerRefundUri); } case WalletApiOperation.StartRefundQuery: { const req = codecForStartRefundQueryRequest().decode(payload); -- cgit v1.2.3