UNPKG

@phygrid/checkout

Version:

43 lines (42 loc) 1.97 kB
import axios from "axios"; import { DataResidencyEnum, } from "../types"; class CheckoutService { constructor({ dataResidency, tenantId }) { this.tenantId = tenantId; this.dataResidency = dataResidency; this.baseUrl = `${this.getBaseUrl(this.dataResidency)}/${this.tenantId}`; this.httpClient = axios.create({ baseURL: this.baseUrl }); } getBaseUrl(dataResidency) { const baseUrlMap = { [DataResidencyEnum.AU]: "https://api.omborigrid.com/regions/au/phycheckout/api/tenants", [DataResidencyEnum.EU]: "https://api.omborigrid.com/regions/eu/phycheckout/api/tenants", [DataResidencyEnum.IN]: "https://api.omborigrid.com/regions/in/phycheckout/api/tenants", [DataResidencyEnum.UAE]: "https://api.omborigrid.com/regions/uae/phycheckout/api/tenants", [DataResidencyEnum.US]: "https://api.omborigrid.com/regions/us/phycheckout/api/tenants", [DataResidencyEnum.QA]: "https://api.omborigrid.com/regions/qa/phycheckout/api/tenants", [DataResidencyEnum.DEV]: "https://api.griddeveloper.com/regions/dev/phycheckout/api/tenants", }; const baseUrl = baseUrlMap[dataResidency]; if (!baseUrl) { throw new Error(`Invalid data residency: ${dataResidency}`); } return baseUrl; } async getTransaction(transactionId) { const { data } = await this.httpClient.get(`/transactions/${transactionId}`); return data.data; } async createTransaction(payload) { const { data } = await this.httpClient.post("/transactions", payload); return data.data; } async cancelTransaction(transactionId) { return await this.httpClient.delete(`/transactions/${transactionId}`); } async createPayment(payload) { const { data } = await this.httpClient.post("/payments", payload); return data.data; } } export default CheckoutService;