taler-docs

Documentation for GNU Taler components, APIs and protocols
Log | Files | Refs | README | LICENSE

commit e8dc761f3bc93ec7c41fad9aa2e5d994b6357686
parent 492a0cdc799502e6683d1611bf0fc4df00abf198
Author: Florian Dold <florian@dold.me>
Date:   Wed, 11 Aug 2021 16:54:49 +0200

merchant spec: compare fulfillment URL for already paid order

Diffstat:
Mmerchant-spec/public-orders-get.ts | 20+++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)

diff --git 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]; } }