diff options
Diffstat (limited to 'packages/taler-wallet-core/src')
-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), |