diff options
Diffstat (limited to 'packages')
-rw-r--r-- | packages/taler-wallet-core/src/pay-merchant.ts | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/packages/taler-wallet-core/src/pay-merchant.ts b/packages/taler-wallet-core/src/pay-merchant.ts index 40abd44a0..62309a300 100644 --- a/packages/taler-wallet-core/src/pay-merchant.ts +++ b/packages/taler-wallet-core/src/pay-merchant.ts @@ -284,11 +284,6 @@ export class PayMerchantTransactionContext implements TransactionContext { } const oldTxState = computePayMerchantTransactionState(purchase); const oldStatus = purchase.purchaseStatus; - if (purchase.timestampFirstSuccessfulPay) { - // No point in aborting it. We don't even report an error. - logger.warn(`tried to abort successful payment`); - return; - } switch (oldStatus) { case PurchaseStatus.Done: return; @@ -318,9 +313,22 @@ export class PayMerchantTransactionContext implements TransactionContext { } break; } + case PurchaseStatus.PendingQueryingAutoRefund: + case PurchaseStatus.SuspendedQueryingAutoRefund: + case PurchaseStatus.PendingAcceptRefund: + case PurchaseStatus.SuspendedPendingAcceptRefund: + case PurchaseStatus.PendingQueryingRefund: + case PurchaseStatus.SuspendedQueryingRefund: + if (!purchase.timestampFirstSuccessfulPay) { + throw Error("invalid state"); + } + purchase.purchaseStatus = PurchaseStatus.Done; + break; case PurchaseStatus.DialogProposed: purchase.purchaseStatus = PurchaseStatus.AbortedProposalRefused; break; + default: + return; } await tx.purchases.put(purchase); await tx.operationRetries.delete(this.taskId); |