diff options
author | Florian Dold <florian@dold.me> | 2023-05-25 11:52:20 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2023-05-25 11:52:20 +0200 |
commit | c3ef842df0ca80c5fe8deb5dabea44d5c817d7ed (patch) | |
tree | 37942171cf5a4f2f0518ba5955b258eb155efa68 /packages/taler-wallet-core/src/operations/pay-merchant.ts | |
parent | 5f325aa4d33b4f33a2afd7d7f8aa33807c521017 (diff) | |
download | wallet-core-c3ef842df0ca80c5fe8deb5dabea44d5c817d7ed.tar.xz |
wallet-core: add pay-merchant suspended states
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pay-merchant.ts')
-rw-r--r-- | packages/taler-wallet-core/src/operations/pay-merchant.ts | 102 |
1 files changed, 74 insertions, 28 deletions
diff --git a/packages/taler-wallet-core/src/operations/pay-merchant.ts b/packages/taler-wallet-core/src/operations/pay-merchant.ts index 1614677ed..4473b0be6 100644 --- a/packages/taler-wallet-core/src/operations/pay-merchant.ts +++ b/packages/taler-wallet-core/src/operations/pay-merchant.ts @@ -373,7 +373,6 @@ async function processDownloadProposal( return tx.operationRetries.get(opId); }); - // FIXME: Do this in the background using the new return value const httpResponse = await ws.http.fetch(orderClaimUrl, { body: requestBody, timeout: getProposalRequestTimeout(retryRecord?.retryInfo), @@ -1499,6 +1498,13 @@ export async function processPurchase( case PurchaseStatus.Proposed: case PurchaseStatus.AbortedProposalRefused: case PurchaseStatus.AbortedIncompletePayment: + case PurchaseStatus.SuspendedAbortingWithRefund: + case PurchaseStatus.SuspendedDownloadingProposal: + case PurchaseStatus.SuspendedPaying: + case PurchaseStatus.SuspendedPayingReplay: + case PurchaseStatus.SuspendedPendingAcceptRefund: + case PurchaseStatus.SuspendedQueryingAutoRefund: + case PurchaseStatus.SuspendedQueryingRefund: return { type: OperationAttemptResultType.Finished, result: undefined, @@ -1785,67 +1791,107 @@ export function computePayMerchantTransactionState( purchaseRecord: PurchaseRecord, ): TransactionState { switch (purchaseRecord.purchaseStatus) { + // Pending States case PurchaseStatus.DownloadingProposal: return { major: TransactionMajorState.Pending, minor: TransactionMinorState.ClaimProposal, }; - case PurchaseStatus.Done: + case PurchaseStatus.Paying: return { - major: TransactionMajorState.Done, + major: TransactionMajorState.Pending, + minor: TransactionMinorState.SubmitPayment, }; - case PurchaseStatus.AbortedIncompletePayment: + case PurchaseStatus.PayingReplay: return { - major: TransactionMajorState.Aborted, + major: TransactionMajorState.Pending, + minor: TransactionMinorState.RebindSession, }; - case PurchaseStatus.Proposed: + case PurchaseStatus.QueryingAutoRefund: return { - major: TransactionMajorState.Dialog, - minor: TransactionMinorState.MerchantOrderProposed, + major: TransactionMajorState.Pending, + minor: TransactionMinorState.AutoRefund, }; - case PurchaseStatus.FailedClaim: + case PurchaseStatus.QueryingRefund: return { - major: TransactionMajorState.Failed, + major: TransactionMajorState.Pending, + minor: TransactionMinorState.CheckRefund, + }; + case PurchaseStatus.PendingAcceptRefund: + return { + major: TransactionMajorState.Pending, + minor: TransactionMinorState.AcceptRefund, + }; + // Suspended Pending States + case PurchaseStatus.SuspendedDownloadingProposal: + return { + major: TransactionMajorState.Suspended, minor: TransactionMinorState.ClaimProposal, }; - case PurchaseStatus.RepurchaseDetected: + case PurchaseStatus.SuspendedPaying: return { - major: TransactionMajorState.Failed, - minor: TransactionMinorState.Repurchase, + major: TransactionMajorState.Suspended, + minor: TransactionMinorState.SubmitPayment, + }; + case PurchaseStatus.SuspendedPayingReplay: + return { + major: TransactionMajorState.Suspended, + minor: TransactionMinorState.RebindSession, + }; + case PurchaseStatus.SuspendedQueryingAutoRefund: + return { + major: TransactionMajorState.Suspended, + minor: TransactionMinorState.AutoRefund, + }; + case PurchaseStatus.SuspendedQueryingRefund: + return { + major: TransactionMajorState.Suspended, + minor: TransactionMinorState.CheckRefund, + }; + case PurchaseStatus.SuspendedPendingAcceptRefund: + return { + major: TransactionMajorState.Suspended, + minor: TransactionMinorState.AcceptRefund, }; + // Aborting States case PurchaseStatus.AbortingWithRefund: return { major: TransactionMajorState.Aborting, }; - case PurchaseStatus.Paying: + // Suspended Aborting States + case PurchaseStatus.SuspendedAbortingWithRefund: return { - major: TransactionMajorState.Pending, - minor: TransactionMinorState.SubmitPayment, + major: TransactionMajorState.SuspendedAborting, }; - case PurchaseStatus.PayingReplay: + // Dialog States + case PurchaseStatus.Proposed: return { - major: TransactionMajorState.Pending, - minor: TransactionMinorState.RebindSession, + major: TransactionMajorState.Dialog, + minor: TransactionMinorState.MerchantOrderProposed, }; + // Final States case PurchaseStatus.AbortedProposalRefused: return { major: TransactionMajorState.Failed, minor: TransactionMinorState.Refused, }; - case PurchaseStatus.QueryingAutoRefund: + case PurchaseStatus.Done: return { - major: TransactionMajorState.Pending, - minor: TransactionMinorState.AutoRefund, + major: TransactionMajorState.Done, }; - case PurchaseStatus.QueryingRefund: + case PurchaseStatus.RepurchaseDetected: return { - major: TransactionMajorState.Pending, - minor: TransactionMinorState.CheckRefund, + major: TransactionMajorState.Failed, + minor: TransactionMinorState.Repurchase, }; - case PurchaseStatus.PendingAcceptRefund: + case PurchaseStatus.AbortedIncompletePayment: return { - major: TransactionMajorState.Pending, - minor: TransactionMinorState.AcceptRefund, + major: TransactionMajorState.Aborted, + }; + case PurchaseStatus.FailedClaim: + return { + major: TransactionMajorState.Failed, + minor: TransactionMinorState.ClaimProposal, }; } } |