diff --git a/apps/edr-payment-api/src/modules/webhooks/handlers/telebirr-webhook.service.ts b/apps/edr-payment-api/src/modules/webhooks/handlers/telebirr-webhook.service.ts index e207e1d21..44af7d985 100644 --- a/apps/edr-payment-api/src/modules/webhooks/handlers/telebirr-webhook.service.ts +++ b/apps/edr-payment-api/src/modules/webhooks/handlers/telebirr-webhook.service.ts @@ -31,16 +31,15 @@ export class TelebirrWebhookService { result: { status: mapped, providerTxnId, - paidAt: this.parseEpochSeconds(payload.trans_end_time), + paidAt: this.parseEpoch(payload.trans_end_time), failureCode: payload.trade_status, }, }); } - - private parseEpochSeconds(raw: string | undefined): Date | undefined { + private parseEpoch(raw: string | undefined): Date | undefined { if (!raw) return undefined; const n = parseInt(raw, 10); if (Number.isNaN(n)) return undefined; - return new Date(n * 1000); + return new Date(n < 1e12 ? n * 1000 : n); } } diff --git a/packages/payment-providers/src/providers/telebirr/telebirr.provider.ts b/packages/payment-providers/src/providers/telebirr/telebirr.provider.ts index 1e898a069..ae24834c1 100644 --- a/packages/payment-providers/src/providers/telebirr/telebirr.provider.ts +++ b/packages/payment-providers/src/providers/telebirr/telebirr.provider.ts @@ -139,14 +139,14 @@ export class TelebirrProvider implements PaymentProvider { mapWebhookTradeStatus( tradeStatus: string | undefined, ): ProviderPaymentStatus { - switch (tradeStatus) { - case "Completed": + switch (tradeStatus?.toUpperCase()) { + case "COMPLETED": return ProviderPaymentStatus.SUCCEEDED; - case "Failure": - case "Expired": + case "FAILURE": return ProviderPaymentStatus.FAILED; - case "Paying": - case "Pending": + case "PAYING": + case "PENDING": + case "EXPIRED": return ProviderPaymentStatus.PROCESSING; default: return ProviderPaymentStatus.PROCESSING;