From e8dc761f3bc93ec7c41fad9aa2e5d994b6357686 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Wed, 11 Aug 2021 16:54:49 +0200 Subject: merchant spec: compare fulfillment URL for already paid order --- merchant-spec/public-orders-get.ts | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'merchant-spec') diff --git a/merchant-spec/public-orders-get.ts b/merchant-spec/public-orders-get.ts index dbc3b8b1..f9668003 100644 --- a/merchant-spec/public-orders-get.ts +++ b/merchant-spec/public-orders-get.ts @@ -102,9 +102,15 @@ function handlePublicOrdersGet(mos: MerchantOrderStore, req: Req): Resp { } if (!!req.sessionId && req.sessionId !== ord.lastPaidSessionId) { - const alreadyPaidOrd = findAlreadyPaid(mos, req.sessionId); - if (!!alreadyPaidOrd) { - return respAlreadyPaid(req, alreadyPaidOrd); + if (!!ord.fulfillmentUrl) { + const alreadyPaidOrd = findAlreadyPaid( + mos, + req.sessionId, + ord.fulfillmentUrl + ); + if (!!alreadyPaidOrd) { + return respAlreadyPaid(req, alreadyPaidOrd); + } } return respUnpaid(req, ord); } @@ -219,10 +225,14 @@ function respPaid(req: Req, ord: MerchantOrderInfo): Resp { // Helper to find an already paid order ID. function findAlreadyPaid( mos: MerchantOrderStore, - sessionId: string + sessionId: string, + fulfillmentUrl: string ): MerchantOrderInfo | undefined { for (const orderId of Object.keys(mos)) { - if (mos[orderId].lastPaidSessionId === sessionId) { + if ( + mos[orderId].lastPaidSessionId === sessionId && + mos[orderId].fulfillmentUrl === fulfillmentUrl + ) { return mos[orderId]; } } -- cgit v1.2.3