@phygrid/checkout
Version:
43 lines (42 loc) • 1.97 kB
JavaScript
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;