summaryrefslogtreecommitdiff
path: root/packages/taler-wallet-core/src/operations
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2023-05-02 13:24:51 +0200
committerFlorian Dold <florian@dold.me>2023-05-02 13:24:51 +0200
commit23fca6d8677a1e88dad426691fbe1033595f16a3 (patch)
tree11e68bb93df085d10e12586d47d6c8157211bc06 /packages/taler-wallet-core/src/operations
parent16d30adf0d57f6d954230c437e56e8a8700ef2ae (diff)
downloadwallet-core-23fca6d8677a1e88dad426691fbe1033595f16a3.tar.gz
wallet-core-23fca6d8677a1e88dad426691fbe1033595f16a3.tar.bz2
wallet-core-23fca6d8677a1e88dad426691fbe1033595f16a3.zip
wallet-core: report pay-merchant DD37 state
Diffstat (limited to 'packages/taler-wallet-core/src/operations')
-rw-r--r--packages/taler-wallet-core/src/operations/pay-merchant.ts63
-rw-r--r--packages/taler-wallet-core/src/operations/transactions.ts3
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),