From 672f58e21368f2688ec5e4b2a8e8b49a297e3d97 Mon Sep 17 00:00:00 2001 From: iamshabell <91321698+iamshabell@users.noreply.github.com> Date: Sat, 16 Dec 2023 13:21:46 +0300 Subject: [PATCH] Refactor Waafi handler and remove duplicate code --- packages/marupay/src/handlers/waafi/waafi.ts | 38 ++++++++++---------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/marupay/src/handlers/waafi/waafi.ts b/packages/marupay/src/handlers/waafi/waafi.ts index d6f2352..538da01 100644 --- a/packages/marupay/src/handlers/waafi/waafi.ts +++ b/packages/marupay/src/handlers/waafi/waafi.ts @@ -13,6 +13,23 @@ const waafiPurchase = z.object({ accountNumber: soPurchaseNumber, }); +async function sendRequest(url: string, data: API.PurchaseData) { + const response = await axios.post(url, data); + const { responseCode, responseMsg, errorCode, params } = response.data; + + if (responseCode !== '2001' || params == null) { + console.log(`WAAFI: API-RES: ${responseMsg} ERROR-CODE: ${errorCode}`); + throw new VendorErrorException(errorCode, responseMsg); + } + + return { + transactionId: params.transactionId, + paymentStatus: params.state, + referenceId: params.referenceId.toString(), + raw: response.data, + }; +} + export const createWaafiHandler = defineHandler({ schema: { config: z.object({ @@ -34,7 +51,7 @@ export const createWaafiHandler = defineHandler({ baseUrl: 'https://api.waafipay.net/asm', }, }, - purchase: async ({ ctx, options }: { ctx: PaymentCtx, options: PaymentOptions }) => { + purchase: async ({ ctx, options }) => { const parsedData = safeParse(waafiPurchase.pick({ accountNumber: true }), { accountNumber: options.accountNumber }); const accountNumber = parsedData.accountNumber.replace("+", ''); const requestUrl = `${ctx.links.baseUrl}`; @@ -42,7 +59,7 @@ export const createWaafiHandler = defineHandler({ return await sendRequest(requestUrl, PurchaseData); }, - credit: async ({ ctx, options }: { ctx: PaymentCtx, options: PaymentOptions }) => { + credit: async ({ ctx, options }) => { const parsedData = safeParse(waafiPurchase.pick({ accountNumber: true }), { accountNumber: options.accountNumber }); const accountNumber = parsedData.accountNumber.replace("+", ''); const requestUrl = `${ctx.links.baseUrl}`; @@ -53,20 +70,3 @@ export const createWaafiHandler = defineHandler({ }); export type WaafiHandler = ReturnType - -async function sendRequest(url: string, data: API.PurchaseData) { - const response = await axios.post(url, data); - const { responseCode, responseMsg, errorCode, params } = response.data; - - if (responseCode !== '2001' || params == null) { - console.log(`WAAFI: API-RES: ${responseMsg} ERROR-CODE: ${errorCode}`); - throw new VendorErrorException(errorCode, responseMsg); - } - - return { - transactionId: params.transactionId, - paymentStatus: params.state, - referenceId: params.referenceId.toString(), - raw: response.data, - }; -}