From 67504954cdc20fc26f8a3bd5a556515b382fb38c Mon Sep 17 00:00:00 2001 From: G Date: Tue, 18 Jun 2024 10:38:13 +0000 Subject: [PATCH] basic implementation of wave payment workflow --- src/utils/requests/wavePayment.ts | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/utils/requests/wavePayment.ts diff --git a/src/utils/requests/wavePayment.ts b/src/utils/requests/wavePayment.ts new file mode 100644 index 0000000..255dc13 --- /dev/null +++ b/src/utils/requests/wavePayment.ts @@ -0,0 +1,92 @@ +import { LOG } from "@logger"; +import base64 from "react-native-base64"; +import axiosRequest from "../axios-request"; + +const log = LOG.extend("wavePayment"); + +export interface IwavePaymentStarter { + // biome-ignore lint/style/useNamingConvention: + type_paiement: 2; // id 2 is for wave. + marchand: string; + service: string; + montant: number; +} + +export interface IwaveStarterRespone { + id: string; + amount: string; + // biome-ignore lint/style/useNamingConvention: + checkout_status: string; + // biome-ignore lint/style/useNamingConvention: + client_reference: unknown; + currenfy: string; + // biome-ignore lint/style/useNamingConvention: + error_url: string; + // biome-ignore lint/style/useNamingConvention: + last_payment_errror: unknown; + // biome-ignore lint/style/useNamingConvention: + business_name: string; + // biome-ignore lint/style/useNamingConvention: + payment_status: string; + // biome-ignore lint/style/useNamingConvention: + succes_url: string; + // biome-ignore lint/style/useNamingConvention: + wave_launch_url: string; + // biome-ignore lint/style/useNamingConvention: + when_completed: unknown; + // biome-ignore lint/style/useNamingConvention: + when_created: string; + // biome-ignore lint/style/useNamingConvention: + when_expires: string; +} + +export interface IwaveStatusResponse { + status: string; + code: number; + message: IwaveStarterRespone; +} + +const basictoken = base64.encode("admin:admin"); + +export const initTransaction = async (payload: IwavePaymentStarter) => { + log.http("initTransaction", payload); + + // const basictoken = base64.encode("admin:admin"); + try { + const response = await axiosRequest({ + url: "/transactions/", + method: "POST", + headers: { + // biome-ignore lint/style/useNamingConvention: + Authorization: `Basic ${basictoken}`, + }, + data: payload, + }); + log.http("initTransaction |", JSON.stringify(response, null, 2)); + return response; + } catch (error) { + log.error("getTransactionStatus |", error); + throw error; + } +}; + +export const getTransactionStatus = async (id: string) => { + log.http("getTransactionStatus", id); + + // const basictoken = base64.encode("admin:admin"); + try { + const response = await axiosRequest({ + url: `/wave-session/${id}`, + headers: { + // biome-ignore lint/style/useNamingConvention: + Authorization: `Basic ${basictoken}`, + }, + }); + log.http("getTransactionStatus |", JSON.stringify(response, null, 2)); + + return response; + } catch (error) { + log.error("getTransactionStatus |", error); + throw error; + } +}; -- libgit2 0.27.1