fix: ( payment ) prevent duplicate booking charges and fix D-Money queryOrder

This commit is contained in:
Abubeker Yasin
2026-07-24 13:51:53 +03:00
parent e2bdc21c95
commit 3d1b06b7ee
3 changed files with 109 additions and 17 deletions

View File

@@ -102,8 +102,12 @@ export class DMoneyProvider implements PaymentProvider {
async queryStatus(merchantOrderId: string): Promise<ProviderStatus> {
const fabricToken = await this.applyFabricToken();
const requestBody = this.buildQueryOrderRequest(merchantOrderId);
const { sign: _sign, ...sanitizedBody } = requestBody;
this.logger.log(
`D-Money queryOrder send request merchOrderId=${merchantOrderId} body=${JSON.stringify(sanitizedBody)}`,
);
const response = await this.postJson<DMoneyQueryOrderResponse>(
`${this.baseUrl}/apiaccess/payment/v1/merchant/queryOrder`,
`${this.baseUrl}/apiaccess/payment/gateway/payment/v1/merchant/queryOrder`,
requestBody,
{
"Content-Type": "application/json",
@@ -112,9 +116,18 @@ export class DMoneyProvider implements PaymentProvider {
},
);
this.logger.log(
`D-Money queryOrder response merchOrderId=${merchantOrderId} body=${JSON.stringify(response)}`,
);
const orderStatus = response.biz_content?.order_status;
const providerTxnId = response.biz_content?.payment_order_id;
const mapped = this.mapOrderStatus(orderStatus);
this.logger.log(
`D-Money queryOrder result merchOrderId=${merchantOrderId} ` +
`orderStatus=${orderStatus ?? "n/a"} mapped=${mapped} ` +
`providerTxnId=${providerTxnId ?? "n/a"}`,
);
return {
status: mapped,