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:
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];
}
}