diff options
author | Florian Dold <florian.dold@gmail.com> | 2020-08-24 19:39:09 +0530 |
---|---|---|
committer | Florian Dold <florian.dold@gmail.com> | 2020-08-24 19:39:09 +0530 |
commit | 0e88ef9bd2ea76e5b44cc0d4459b9a2e553b8d24 (patch) | |
tree | badf53269fb0775b11fc0160ab5b5c0d66903dd1 /packages/taler-wallet-core/src/operations/pay.ts | |
parent | 69c495076252a22bda341f58d7976e55078bd78c (diff) | |
download | wallet-core-0e88ef9bd2ea76e5b44cc0d4459b9a2e553b8d24.tar.xz |
implement fulfillment_message and make fulfillment_url optional
Diffstat (limited to 'packages/taler-wallet-core/src/operations/pay.ts')
-rw-r--r-- | packages/taler-wallet-core/src/operations/pay.ts | 33 |
1 files changed, 10 insertions, 23 deletions
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), }; |