UNPKG

react-native-priv-sdk

Version:

Official MyCover.ai SDK. Supercharge your product with MyCover AI Insurance offerings. Create embedded insurance offerings or full white label insurance applications that excite your customers.

109 lines (93 loc) 3.29 kB
// import ApiService from '../api/api_service'; // Import ApiService import ApiEndpoints from '../../constants/ApiEndpoints'; // Import API endpoints import GenericResponse from '../api/GenericResponse'; import customLog from '../../utils/logger'; import globalObject from '../../store/globalObject'; import { getApiServiceV1 } from '../../utils/getApiService'; // Assuming a generic response structure interface IPaymentRepository { initiateGatewayPurchase(data: GatewayPurchaseData): Promise<GenericResponse>; initiateWalletPurchase(data: WalletPurchaseData): Promise<GenericResponse>; getUssdProviders(): Promise<GenericResponse>; verifyPayment(reference: string): Promise<GenericResponse>; getPurchaseInfo(reference: string): Promise<GenericResponse>; } // const apiService = new ApiService('https://staging.api.mycover.ai/v1',globalObject.publicKey??''); const apiService = getApiServiceV1(); export class PaymentRepository implements IPaymentRepository { // apiService: ApiService; // constructor(baseUrl: string) { // this.apiService = new ApiService(baseUrl); // } async initiateGatewayPurchase( data: GatewayPurchaseData ): Promise<GenericResponse> { // log.debug('response data', JSON.stringify(response.data, null, 2)) const requestData = { payload: data.payload, payment_channel: Object.fromEntries(data.paymentChannel), instance_id: globalObject.businessDetails?.instanceId || '', }; customLog.debug('data', JSON.stringify(requestData, null, 2)); const res = await apiService.post( ApiEndpoints.initiatePurchase, requestData, { useToken: true, } ); return new GenericResponse(res); } async initiateWalletPurchase( data: WalletPurchaseData ): Promise<GenericResponse> { customLog.debug('data', data); const requestData = { payload: data.payload, reference: data.reference, instance_id: globalObject.businessDetails?.instanceId || '', }; const res = await apiService.post( ApiEndpoints.initiatePurchase, requestData, { useToken: true, } ); return new GenericResponse(res); } async getUssdProviders(): Promise<GenericResponse> { const res = await apiService.get(ApiEndpoints.getUssdProviders, { useToken: true, }); return new GenericResponse(res); } async verifyPayment(reference: string): Promise<GenericResponse> { const requestData = { transaction_reference: reference, }; const res = await apiService.post(ApiEndpoints.verifyPayment, requestData, { useToken: true, }); return new GenericResponse(res); } async getPurchaseInfo(reference: string): Promise<GenericResponse> { const query = `?reference=${reference}`; const res = await apiService.get(ApiEndpoints.getPurchaseInfo + query, { useToken: true, }); return new GenericResponse(res); } } export default PaymentRepository; // Define types for input data for each method interface GatewayPurchaseData { paymentChannel: Map<string, any>; payload: Record<string, any>; instanceId?: string; // Optional } interface WalletPurchaseData { payload: Record<string, any>; reference: string; instanceId?: string; // Optional }