aboutsummaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/pay-merchant.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/pay-merchant.ts')
-rw-r--r--packages/taler-wallet-core/src/pay-merchant.ts57
1 files changed, 45 insertions, 12 deletions
diff --git a/packages/taler-wallet-core/src/pay-merchant.ts b/packages/taler-wallet-core/src/pay-merchant.ts
index 41e1b3c9e..91ea4bd1d 100644
--- a/packages/taler-wallet-core/src/pay-merchant.ts
+++ b/packages/taler-wallet-core/src/pay-merchant.ts
@@ -34,7 +34,6 @@ import {
assertUnreachable,
AsyncFlag,
checkDbInvariant,
- CheckPaymentResponse,
CheckPayTemplateReponse,
CheckPayTemplateRequest,
codecForAbortResponse,
@@ -1027,11 +1026,17 @@ async function storeFirstPaySuccess(
purchase.merchantPaySig = payResponse.sig;
purchase.posConfirmation = payResponse.pos_confirmation;
const dl = purchase.download;
- checkDbInvariant(!!dl, `purchase ${purchase.orderId} without ct downloaded`);
+ checkDbInvariant(
+ !!dl,
+ `purchase ${purchase.orderId} without ct downloaded`,
+ );
const contractTermsRecord = await tx.contractTerms.get(
dl.contractTermsHash,
);
- checkDbInvariant(!!contractTermsRecord, `no contract terms found for purchase ${purchase.orderId}`);
+ checkDbInvariant(
+ !!contractTermsRecord,
+ `no contract terms found for purchase ${purchase.orderId}`,
+ );
const contractData = extractContractData(
contractTermsRecord.contractTermsRaw,
dl.contractTermsHash,
@@ -2650,21 +2655,45 @@ export function computePayMerchantTransactionActions(
switch (purchaseRecord.purchaseStatus) {
// Pending States
case PurchaseStatus.PendingDownloadingProposal:
- return [TransactionAction.Suspend, TransactionAction.Abort];
+ return [
+ TransactionAction.Retry,
+ TransactionAction.Suspend,
+ TransactionAction.Abort,
+ ];
case PurchaseStatus.PendingPaying:
- return [TransactionAction.Suspend, TransactionAction.Abort];
+ return [
+ TransactionAction.Retry,
+ TransactionAction.Suspend,
+ TransactionAction.Abort,
+ ];
case PurchaseStatus.PendingPayingReplay:
// Special "abort" since it goes back to "done".
- return [TransactionAction.Suspend, TransactionAction.Abort];
+ return [
+ TransactionAction.Retry,
+ TransactionAction.Suspend,
+ TransactionAction.Abort,
+ ];
case PurchaseStatus.PendingQueryingAutoRefund:
// Special "abort" since it goes back to "done".
- return [TransactionAction.Suspend, TransactionAction.Abort];
+ return [
+ TransactionAction.Retry,
+ TransactionAction.Suspend,
+ TransactionAction.Abort,
+ ];
case PurchaseStatus.PendingQueryingRefund:
// Special "abort" since it goes back to "done".
- return [TransactionAction.Suspend, TransactionAction.Abort];
+ return [
+ TransactionAction.Retry,
+ TransactionAction.Suspend,
+ TransactionAction.Abort,
+ ];
case PurchaseStatus.PendingAcceptRefund:
// Special "abort" since it goes back to "done".
- return [TransactionAction.Suspend, TransactionAction.Abort];
+ return [
+ TransactionAction.Retry,
+ TransactionAction.Suspend,
+ TransactionAction.Abort,
+ ];
// Suspended Pending States
case PurchaseStatus.SuspendedDownloadingProposal:
return [TransactionAction.Resume, TransactionAction.Abort];
@@ -2684,14 +2713,18 @@ export function computePayMerchantTransactionActions(
return [TransactionAction.Resume, TransactionAction.Abort];
// Aborting States
case PurchaseStatus.AbortingWithRefund:
- return [TransactionAction.Fail, TransactionAction.Suspend];
+ return [
+ TransactionAction.Retry,
+ TransactionAction.Fail,
+ TransactionAction.Suspend,
+ ];
case PurchaseStatus.SuspendedAbortingWithRefund:
return [TransactionAction.Fail, TransactionAction.Resume];
// Dialog States
case PurchaseStatus.DialogProposed:
- return [];
+ return [TransactionAction.Retry];
case PurchaseStatus.DialogShared:
- return [];
+ return [TransactionAction.Retry];
// Final States
case PurchaseStatus.AbortedProposalRefused:
case PurchaseStatus.AbortedOrderDeleted: