diff --git a/src/modules/IPG/gateways/sep.ts b/src/modules/IPG/gateways/sep.ts index 14282e1..f01ca2f 100644 --- a/src/modules/IPG/gateways/sep.ts +++ b/src/modules/IPG/gateways/sep.ts @@ -92,7 +92,30 @@ class SepGateway implements IGateway { verifyData, { headers: this.requestHeader } ); - return response.data; + + const sepResponse = response.data; + + // Normalize SEP response to match expected format + // SEP considers ResultCode = 0 and Success = true as successful + const isSuccess = sepResponse.ResultCode === 0 && sepResponse.Success === true; + + // Validate amount if transaction details are available + let amountValid = true; + if (sepResponse.TransactionDetail && sepResponse.TransactionDetail.OrginalAmount) { + // According to SEP docs, OrginalAmount should match the expected amount + amountValid = sepResponse.TransactionDetail.OrginalAmount === data.amount; + if (!amountValid) { + this.logger.warn(`SEP amount mismatch: expected ${data.amount}, got ${sepResponse.TransactionDetail.OrginalAmount}`); + } + } + + return { + code: (isSuccess && amountValid) ? 100 : sepResponse.ResultCode, // Use 100 for success to match expected format + message: sepResponse.ResultDescription, + ref_id: data.refNum, // SEP uses refNum as transaction identifier + success: isSuccess && amountValid, + raw_response: sepResponse // Keep original response for debugging + }; } catch (error) { this.logger.error("error in SEP payment verification", error); throw new InternalError(["error in SEP payment verification"]);