diff options
author | Florian Dold <florian@dold.me> | 2021-08-11 16:54:49 +0200 |
---|---|---|
committer | Florian Dold <florian@dold.me> | 2021-08-11 16:54:58 +0200 |
commit | e8dc761f3bc93ec7c41fad9aa2e5d994b6357686 (patch) | |
tree | b57e166eccc15bab2d200a8d5f00f79d65505344 | |
parent | 492a0cdc799502e6683d1611bf0fc4df00abf198 (diff) | |
download | docs-e8dc761f3bc93ec7c41fad9aa2e5d994b6357686.tar.gz docs-e8dc761f3bc93ec7c41fad9aa2e5d994b6357686.tar.bz2 docs-e8dc761f3bc93ec7c41fad9aa2e5d994b6357686.zip |
merchant spec: compare fulfillment URL for already paid order
-rw-r--r-- | merchant-spec/public-orders-get.ts | 20 |
1 files changed, 15 insertions, 5 deletions
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]; } } |