summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2021-08-11 16:54:49 +0200
committerFlorian Dold <florian@dold.me>2021-08-11 16:54:58 +0200
commite8dc761f3bc93ec7c41fad9aa2e5d994b6357686 (patch)
treeb57e166eccc15bab2d200a8d5f00f79d65505344
parent492a0cdc799502e6683d1611bf0fc4df00abf198 (diff)
downloaddocs-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.ts20
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];
}
}