@deploily/ttk-epay-nodejs-client
Version:
Node.js client for TTK E-Pay payment gateway
99 lines (82 loc) • 2.92 kB
JavaScript
const axios = require('axios');
const { Invoice, InvoiceDto } = require('./models');
const BASE_URL = 'https://pay.demo.deploily.cloud/api/v1';
class TtkEpay {
constructor(baseUrl, secretKey) {
this.baseUrl = baseUrl;
this.secretKey = secretKey
this.client = axios.create({
baseURL: this.baseUrl,
headers: {
'Accept': '*/*',
'Content-Type': 'application/json',
'X-Api-Key': this.secretKey,
},
});
}
async getInvoices(pageNumber = 1, pageSize = 10) {
const response = await this.client.get('/admin/invoices', {
params: { pageNumber, pageSize },
});
return response.data;
}
async createInvoice(invoiceData) {
const response = await this.client.post('/admin/invoices', invoiceData);
return response.data;
}
async getInvoiceById(invoiceId) {
const response = await this.client.get(`/admin/invoices/${invoiceId}`);
return response.data;
}
async updateInvoice(invoiceId, invoiceData) {
const response = await this.client.patch(`/admin/invoices/${invoiceId}`, invoiceData);
return response.data;
}
async generateLink(orderId, clientCode) {
const response = await this.client.get(`/admin/generate-link/`, {
params: { orderID: orderId, clientCode: clientCode }
});
return response.data;
}
async getPayments({ pageNumber, pageSize, satim_order_id, invoice_id, from_date, to_date } = {}) {
const params = {};
if (pageNumber) params.pageNumber = pageNumber;
if (pageSize) params.pageSize = pageSize;
if (satim_order_id) params.SatimOrderId = satim_order_id;
if (invoice_id) params.InvoiceId = invoice_id;
if (from_date) params.FromDate = from_date;
if (to_date) params.toDate = to_date;
const response = await this.client.get('/admin/payments', { params });
return response.data;
}
async getPaymentById(paymentId) {
const response = await this.client.get(`/admin/payments/${paymentId}`);
return response.data;
}
async getPdfRecipt(satim_order_id) {
const response = await this.client.get('/epayment/generate-pdf', {
params: { SATIM_ORDER_ID: satim_order_id },
responseType: 'arraybuffer',
});
return response.data;
}
async sendPdfReceiptMail(satim_order_id, email) {
const response = await this.client.get('/epayment/send-mail', {
params: { SATIM_ORDER_ID: satim_order_id, EMAIL: email },
});
return response.headers['content-type'] === 'application/json'
? response.data
: response.data.toString();
}
async postPayement(paymentData) {
const response = await this.client.post('/epayment', paymentData);
return response.data;
}
async getPaymentStatus(satim_order_id) {
const response = await this.client.get('/epayment', {
params: { SATIM_ORDER_ID: satim_order_id },
});
return response.data;
}
}
module.exports = { TtkEpay };