@vegaci_shared/vsplit-payment-gateway
Version:
A B2B payment gateway integration package for Stripe with split payment capabilities
115 lines (114 loc) • 3.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiClient = void 0;
/**
* API Client for backend communication
*/
class ApiClient {
constructor(config) {
this.config = config;
this.baseHeaders = {
'Content-Type': 'application/json',
...(config.apiKey && { Authorization: `Bearer ${config.apiKey}` }),
};
}
/**
* Make a GET request
*/
async get(endpoint) {
return this.request('GET', endpoint);
}
/**
* Make a POST request
*/
async post(endpoint, data) {
return this.request('POST', endpoint, data);
}
/**
* Make a PUT request
*/
async put(endpoint, data) {
return this.request('PUT', endpoint, data);
}
/**
* Make a DELETE request
*/
async delete(endpoint) {
return this.request('DELETE', endpoint);
}
/**
* Generic request method
*/
async request(method, endpoint, data) {
try {
const url = `${this.config.apiEndpoint}${endpoint}`;
const options = {
method,
headers: this.baseHeaders,
...(data && { body: JSON.stringify(data) }),
};
const response = await fetch(url, options);
const responseData = await response.json();
if (!response.ok) {
return {
success: false,
error: responseData.error ||
`HTTP ${response.status}: ${response.statusText}`,
code: responseData.code || response.status.toString(),
};
}
return {
success: true,
data: responseData.data || responseData,
metadata: responseData.metadata,
};
}
catch (error) {
return {
success: false,
error: error instanceof Error ? error.message : 'Network error',
code: 'NETWORK_ERROR',
};
}
}
/**
* Upload file (for future use)
*/
async uploadFile(endpoint, file) {
try {
const formData = new FormData();
formData.append('file', file);
const response = await fetch(`${this.config.apiEndpoint}${endpoint}`, {
method: 'POST',
headers: {
...(this.config.apiKey && {
Authorization: `Bearer ${this.config.apiKey}`,
}),
},
body: formData,
});
const responseData = await response.json();
if (!response.ok) {
return {
success: false,
error: responseData.error ||
`HTTP ${response.status}: ${response.statusText}`,
code: responseData.code || response.status.toString(),
};
}
return {
success: true,
data: responseData.data || responseData,
metadata: responseData.metadata,
};
}
catch (error) {
return {
success: false,
error: error instanceof Error ? error.message : 'Upload error',
code: 'UPLOAD_ERROR',
};
}
}
}
exports.ApiClient = ApiClient;