@nkhind/vivawallet-sdk
Version:
Non-Official VivaWallet API SDK
147 lines (146 loc) • 4.95 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const VivaAuth_class_1 = require("../vivabases/VivaAuth.class");
const axiosInstance_ts_1 = require("../utils/axiosInstance.ts");
const functions_1 = require("../utils/functions");
class VivaTransactions extends VivaAuth_class_1.VivaAuth {
constructor(datas) {
super(datas);
}
/** ------------------ TRANSACTION ------------------ */
/** Return the transaction if exist, or `null` if error/not exist */
async getTransactionById(transactionId) {
const vivaToken = (await this.getVivaToken()).data;
if (!vivaToken) {
return {
success: false,
message: 'Init not called',
code: 'initerror',
data: null,
};
}
try {
const response = await axiosInstance_ts_1.useAxios.get(this.endpoints.transaction.get.url.replace('{transactionId}', transactionId), {
headers: {
Authorization: 'Bearer ' + vivaToken,
},
});
if (!response.data) {
return {
success: false,
message: 'Transaction not found',
code: 'nodatas',
data: null,
};
}
return {
success: true,
message: 'Transaction retrieved successfully',
data: response.data,
};
}
catch (e) {
console.error('Viva Transaction Error', e);
return {
success: false,
message: 'Failed to get transaction',
code: 'error',
data: null,
};
}
}
/** Make transaction by transactionId */
async makeTransaction(options) {
if (!this.merchantId || !this.apikey) {
return {
success: false,
message: 'Init not called',
code: 'initerror',
data: null,
};
}
if (!options.amount || !options.id) {
return {
success: false,
message: 'Amount and ID are required',
code: 'invaliddatas',
data: null,
};
}
try {
const transactionUrl = this.endpoints.transaction.create.url.replace('{transactionId}', options.id);
const response = await axiosInstance_ts_1.useAxios.post(transactionUrl, options, {
headers: {
Authorization: 'Bearer ' + this.getVivaBasicToken(),
},
});
if (!response.data) {
return {
success: false,
message: 'Transaction creation failed',
code: 'nodatas',
data: null,
};
}
return {
success: true,
message: 'Transaction created successfully',
data: response.data,
};
}
catch (e) {
console.error('Viva Transaction Error', e);
return {
success: false,
message: 'Failed to create transaction',
code: 'error',
data: null,
};
}
}
/** Allow cancel transaction (refund) */
async cancelTransaction(transactionId, refundOptions) {
const vivaToken = await this.getVivaBasicToken();
if (!vivaToken) {
return {
success: false,
message: 'Init not called',
code: 'initerror',
data: null,
};
}
const queries = (0, functions_1.querifyDatas)(refundOptions);
try {
const response = await axiosInstance_ts_1.useAxios.delete(this.endpoints.transaction.cancel.url.replace('{transactionId}', transactionId) +
'?' +
queries, {
headers: {
Authorization: 'Bearer ' + vivaToken,
},
});
if (!response.data) {
return {
success: false,
message: 'Transaction refund failed',
code: 'nodatas',
data: null,
};
}
return {
success: true,
message: 'Transaction refunded successfully',
data: response.data,
};
}
catch (e) {
console.error('Viva Refund Error', e);
return {
success: false,
message: 'Failed to refund transaction',
code: 'error',
data: null,
};
}
}
}
exports.default = VivaTransactions;