diff options
author | Florian Dold <florian@dold.me> | 2023-05-02 13:24:51 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-05-02 13:24:51 +0200 |
commit | 23fca6d8677a1e88dad426691fbe1033595f16a3 (patch) | |
tree | 11e68bb93df085d10e12586d47d6c8157211bc06 /packages/taler-wallet-core/src/operations | |
parent | 16d30adf0d57f6d954230c437e56e8a8700ef2ae (diff) | |
download | wallet-core-23fca6d8677a1e88dad426691fbe1033595f16a3.tar.xz |
wallet-core: report pay-merchant DD37 state
Diffstat (limited to 'packages/taler-wallet-core/src/operations')
-rw-r--r-- | packages/taler-wallet-core/src/operations/pay-merchant.ts | 63 | ||||
-rw-r--r-- | packages/taler-wallet-core/src/operations/transactions.ts | 3 |
2 files changed, 63 insertions, 3 deletions
diff --git a/packages/taler-wallet-core/src/operations/pay-merchant.ts b/packages/taler-wallet-core/src/operations/pay-merchant.ts index e6ade08aa..d2713dc9d 100644 --- a/packages/taler-wallet-core/src/operations/pay-merchant.ts +++ b/packages/taler-wallet-core/src/operations/pay-merchant.ts @@ -71,6 +71,8 @@ import { TalerErrorDetail, TalerProtocolTimestamp, TalerProtocolViolationError, + TransactionMajorState, + TransactionMinorState, TransactionState, TransactionType, URL, @@ -2477,8 +2479,65 @@ export async function abortPay( }); } -export function computeWithdrawalTransactionStatus( +export function computePayMerchantTransactionState( purchaseRecord: PurchaseRecord, ): TransactionState { - throw Error("not implemented"); + switch (purchaseRecord.purchaseStatus) { + case PurchaseStatus.DownloadingProposal: + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.ClaimProposal, + }; + case PurchaseStatus.Paid: + return { + major: TransactionMajorState.Done, + }; + case PurchaseStatus.PaymentAbortFinished: + return { + major: TransactionMajorState.Aborted, + }; + case PurchaseStatus.Proposed: + return { + major: TransactionMajorState.Dialog, + }; + case PurchaseStatus.ProposalDownloadFailed: + return { + major: TransactionMajorState.Failed, + minor: TransactionMinorState.ClaimProposal, + }; + case PurchaseStatus.RepurchaseDetected: + return { + major: TransactionMajorState.Failed, + minor: TransactionMinorState.Repurchase, + }; + case PurchaseStatus.AbortingWithRefund: + return { + major: TransactionMajorState.Aborting, + }; + case PurchaseStatus.Paying: + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.Pay, + }; + case PurchaseStatus.PayingReplay: + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.RebindSession, + }; + case PurchaseStatus.ProposalRefused: + return { + major: TransactionMajorState.Failed, + minor: TransactionMinorState.Refused, + }; + case PurchaseStatus.QueryingAutoRefund: + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.AutoRefund, + }; + case PurchaseStatus.QueryingRefund: + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.CheckRefunds, + }; + } } diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 02b0b56ba..c122bb651 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -88,6 +88,7 @@ import { import { getExchangeDetails } from "./exchanges.js"; import { abortPay, + computePayMerchantTransactionState, expectProposalDownload, extractContractData, processPurchasePay, @@ -1030,7 +1031,7 @@ async function buildTransactionForPurchase( return { type: TransactionType.Payment, - txState: mkTxStateUnknown(), + txState: computePayMerchantTransactionState(purchaseRecord), amountRaw: Amounts.stringify(contractData.amount), amountEffective: Amounts.stringify(purchaseRecord.payInfo.totalPayCost), totalRefundRaw: Amounts.stringify(totalRefund.raw), |