summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations/pay-merchant.ts
diff options
context:
space:
mode:
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pay-merchant.ts')
-rw-r--r--packages/taler-wallet-core/src/operations/pay-merchant.ts102
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,
};
}
}