From 0e88ef9bd2ea76e5b44cc0d4459b9a2e553b8d24 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 24 Aug 2020 19:39:09 +0530 Subject: implement fulfillment_message and make fulfillment_url optional --- packages/taler-wallet-core/src/operations/pay.ts | 33 +++++++--------------- packages/taler-wallet-core/src/operations/state.ts | 3 +- .../src/operations/transactions.ts | 4 +-- 3 files changed, 13 insertions(+), 27 deletions(-) (limited to 'packages/taler-wallet-core/src/operations') diff --git a/packages/taler-wallet-core/src/operations/pay.ts b/packages/taler-wallet-core/src/operations/pay.ts index 0d1d4f993..6b45e3da2 100644 --- a/packages/taler-wallet-core/src/operations/pay.ts +++ b/packages/taler-wallet-core/src/operations/pay.ts @@ -513,17 +513,6 @@ async function recordConfirmPay( return t; } -function getNextUrl(contractData: WalletContractData): string { - const f = contractData.fulfillmentUrl; - if (f.startsWith("http://") || f.startsWith("https://")) { - const fu = new URL(contractData.fulfillmentUrl); - fu.searchParams.set("order_id", contractData.orderId); - return fu.href; - } else { - return f; - } -} - async function incrementProposalRetry( ws: InternalWalletState, proposalId: string, @@ -642,7 +631,10 @@ async function processDownloadProposalImpl( const httpResponse = await ws.http.postJson(orderClaimUrl, requestBody, { timeout: getProposalRequestTimeout(proposal), }); - const r = await readSuccessResponseJsonOrErrorCode(httpResponse, codecForProposal()); + const r = await readSuccessResponseJsonOrErrorCode( + httpResponse, + codecForProposal(), + ); if (r.isError) { switch (r.talerErrorResponse.code) { case TalerErrorCode.ORDERS_ALREADY_CLAIMED: @@ -652,7 +644,8 @@ async function processDownloadProposalImpl( { orderId: proposal.orderId, claimUrl: orderClaimUrl, - }); + }, + ); default: throwUnexpectedRequestError(httpResponse, r.talerErrorResponse); } @@ -723,8 +716,9 @@ async function processDownloadProposalImpl( contractTermsRaw: JSON.stringify(proposalResp.contract_terms), }; if ( - fulfillmentUrl.startsWith("http://") || - fulfillmentUrl.startsWith("https://") + fulfillmentUrl && + (fulfillmentUrl.startsWith("http://") || + fulfillmentUrl.startsWith("https://")) ) { const differentPurchase = await tx.getIndexed( Stores.purchases.fulfillmentUrlIndex, @@ -968,15 +962,9 @@ export async function submitPay( await storePayReplaySuccess(ws, proposalId, sessionId); } - const nextUrl = getNextUrl(purchase.contractData); - ws.cachedNextUrl[purchase.contractData.fulfillmentUrl] = { - nextUrl, - lastSessionId: sessionId, - }; - return { type: ConfirmPayResultType.Done, - nextUrl, + contractTerms: JSON.parse(purchase.contractTermsRaw), }; } @@ -1089,7 +1077,6 @@ export async function preparePayForUri( contractTerms: JSON.parse(purchase.contractTermsRaw), contractTermsHash: purchase.contractData.contractTermsHash, paid: true, - nextUrl: r.nextUrl, amountRaw: Amounts.stringify(purchase.contractData.amount), amountEffective: Amounts.stringify(purchase.payCostInfo.totalCost), }; diff --git a/packages/taler-wallet-core/src/operations/state.ts b/packages/taler-wallet-core/src/operations/state.ts index 582dd92d3..131e9083d 100644 --- a/packages/taler-wallet-core/src/operations/state.ts +++ b/packages/taler-wallet-core/src/operations/state.ts @@ -15,7 +15,7 @@ */ import { HttpRequestLibrary } from "../util/http"; -import { NextUrlResult, BalancesResponse } from "../types/walletTypes"; +import { BalancesResponse } from "../types/walletTypes"; import { CryptoApi, CryptoWorkerFactory } from "../crypto/workers/cryptoApi"; import { AsyncOpMemoMap, AsyncOpMemoSingle } from "../util/asyncMemo"; import { Logger } from "../util/logging"; @@ -32,7 +32,6 @@ export const EXCHANGE_COINS_LOCK = "exchange-coins-lock"; export const EXCHANGE_RESERVES_LOCK = "exchange-reserves-lock"; export class InternalWalletState { - cachedNextUrl: { [fulfillmentUrl: string]: NextUrlResult } = {}; memoProcessReserve: AsyncOpMemoMap = new AsyncOpMemoMap(); memoMakePlanchet: AsyncOpMemoMap = new AsyncOpMemoMap(); memoGetPending: AsyncOpMemoSingle< diff --git a/packages/taler-wallet-core/src/operations/transactions.ts b/packages/taler-wallet-core/src/operations/transactions.ts index 8300864b2..7b42b9a5f 100644 --- a/packages/taler-wallet-core/src/operations/transactions.ts +++ b/packages/taler-wallet-core/src/operations/transactions.ts @@ -35,7 +35,7 @@ import { PaymentStatus, WithdrawalType, WithdrawalDetails, - PaymentShortInfo, + OrderShortInfo, } from "../types/transactions"; import { getFundingPaytoUris } from "./reserves"; @@ -234,7 +234,7 @@ export async function getTransactions( if (!proposal) { return; } - const info: PaymentShortInfo = { + const info: OrderShortInfo = { fulfillmentUrl: pr.contractData.fulfillmentUrl, merchant: pr.contractData.merchant, orderId: pr.contractData.orderId, -- cgit v1.2.3