Merge pull request #196 from Tria-plc/feat/payment-microservice

fix: ( telebirr ) fix webhook return types
This commit is contained in:
Abubeker Yasin
2026-06-17 12:12:34 +03:00
committed by GitHub
2 changed files with 9 additions and 10 deletions

View File

@@ -31,16 +31,15 @@ export class TelebirrWebhookService {
result: { result: {
status: mapped, status: mapped,
providerTxnId, providerTxnId,
paidAt: this.parseEpochSeconds(payload.trans_end_time), paidAt: this.parseEpoch(payload.trans_end_time),
failureCode: payload.trade_status, failureCode: payload.trade_status,
}, },
}); });
} }
private parseEpoch(raw: string | undefined): Date | undefined {
private parseEpochSeconds(raw: string | undefined): Date | undefined {
if (!raw) return undefined; if (!raw) return undefined;
const n = parseInt(raw, 10); const n = parseInt(raw, 10);
if (Number.isNaN(n)) return undefined; if (Number.isNaN(n)) return undefined;
return new Date(n * 1000); return new Date(n < 1e12 ? n * 1000 : n);
} }
} }

View File

@@ -139,14 +139,14 @@ export class TelebirrProvider implements PaymentProvider {
mapWebhookTradeStatus( mapWebhookTradeStatus(
tradeStatus: string | undefined, tradeStatus: string | undefined,
): ProviderPaymentStatus { ): ProviderPaymentStatus {
switch (tradeStatus) { switch (tradeStatus?.toUpperCase()) {
case "Completed": case "COMPLETED":
return ProviderPaymentStatus.SUCCEEDED; return ProviderPaymentStatus.SUCCEEDED;
case "Failure": case "FAILURE":
case "Expired":
return ProviderPaymentStatus.FAILED; return ProviderPaymentStatus.FAILED;
case "Paying": case "PAYING":
case "Pending": case "PENDING":
case "EXPIRED":
return ProviderPaymentStatus.PROCESSING; return ProviderPaymentStatus.PROCESSING;
default: default:
return ProviderPaymentStatus.PROCESSING; return ProviderPaymentStatus.PROCESSING;