From f4a8702b3cf93f9edf96d1d1c8cb88baa309e301 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Tue, 21 Jul 2020 12:23:48 +0530 Subject: towards consuming new merchant API --- src/operations/pay.ts | 44 +++++++++++++++++--------------------------- 1 file changed, 17 insertions(+), 27 deletions(-) (limited to 'src/operations/pay.ts') diff --git a/src/operations/pay.ts b/src/operations/pay.ts index abcb2ad1d..74bfcc70b 100644 --- a/src/operations/pay.ts +++ b/src/operations/pay.ts @@ -42,6 +42,7 @@ import { codecForProposal, codecForContractTerms, CoinDepositPermission, + codecForMerchantPayResponse, } from "../types/talerTypes"; import { ConfirmPayResult, @@ -431,12 +432,6 @@ async function recordConfirmPay( sessionId = proposal.downloadSessionId; } logger.trace(`recording payment with session ID ${sessionId}`); - const payReq: PayReq = { - coins: coinDepositPermissions, - merchant_pub: d.contractData.merchantPub, - mode: "pay", - order_id: d.contractData.orderId, - }; const payCostInfo = await getTotalPaymentCost(ws, coinSelection); const t: PurchaseRecord = { abortDone: false, @@ -445,8 +440,8 @@ async function recordConfirmPay( contractData: d.contractData, lastSessionId: sessionId, payCoinSelection: coinSelection, - payReq, payCostInfo, + coinDepositPermissions, timestampAccept: getTimestampNow(), timestampLastRefundStatus: undefined, proposalId: proposal.proposalId, @@ -609,7 +604,6 @@ async function processDownloadProposalImpl( ).href; logger.trace("downloading contract from '" + orderClaimUrl + "'"); - const proposalResp = await httpPostTalerJson({ url: orderClaimUrl, body: { @@ -777,26 +771,24 @@ export async function submitPay( throw Error("not submitting payment for aborted purchase"); } const sessionId = purchase.lastSessionId; - let resp; - const payReq = { ...purchase.payReq, session_id: sessionId }; console.log("paying with session ID", sessionId); - const payUrl = new URL("pay", purchase.contractData.merchantBaseUrl).href; + const payUrl = new URL( + `orders/${purchase.contractData.orderId}/pay`, + purchase.contractData.merchantBaseUrl, + ).href; + + const merchantResp = await httpPostTalerJson({ + url: payUrl, + body: { + coins: purchase.coinDepositPermissions, + session_id: purchase.lastSessionId, + }, + codec: codecForMerchantPayResponse(), + http: ws.http, + }); - try { - console.log("pay req", payReq); - resp = await ws.http.postJson(payUrl, payReq); - } catch (e) { - // Gives the user the option to retry / abort and refresh - console.log("payment failed", e); - throw e; - } - if (resp.status !== 200) { - console.log(await resp.json()); - throw Error(`unexpected status (${resp.status}) for /pay`); - } - const merchantResp = await resp.json(); console.log("got success from pay URL", merchantResp); const now = getTimestampNow(); @@ -1030,7 +1022,7 @@ export async function confirmPay( coinPriv: coin.coinPriv, coinPub: coin.coinPub, contractTermsHash: d.contractData.contractTermsHash, - denomPub: coin.denomPub, + denomPubHash: coin.denomPubHash, denomSig: coin.denomSig, exchangeBaseUrl: coin.exchangeBaseUrl, feeDeposit: denom.feeDeposit, @@ -1050,8 +1042,6 @@ export async function confirmPay( sessionIdOverride, ); - logger.trace("confirmPay: submitting payment after creating purchase record"); - logger.trace("purchaseRecord:", purchase); return submitPay(ws, proposalId); } -- cgit v1.2.3