cryptomus-sdk
Version:
This is not an official one created for simplified work with Cryptomus API
91 lines • 3.94 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.Cryptomus = void 0;
const node_crypto_1 = require("node:crypto");
const axios_1 = require("axios");
const payment_interface_1 = require("./interfaces/payment.interface");
const uuid_1 = require("uuid");
const shortUUID = require("short-uuid");
class Cryptomus {
constructor(merchant, paymentKey, payoutKey) {
this.merchant = merchant;
this.paymentKey = paymentKey;
this.payoutKey = payoutKey;
this.url = 'https://api.cryptomus.com/v1/';
}
async requestBuilder(keyType, url, options) {
const key = keyType === payment_interface_1.KeyType.payment ? this.paymentKey : this.payoutKey;
const sign = (0, node_crypto_1.createHash)('md5')
.update(Buffer.from(JSON.stringify(options) || '').toString('base64') + key)
.digest('hex');
const headers = {
merchant: this.merchant,
sign: sign,
'Content-Type': 'application/json',
};
try {
const { data } = await (0, axios_1.default)({
method: 'POST',
url: url,
data: options,
headers: headers,
});
return data;
}
catch (err) {
if (err instanceof axios_1.AxiosError) {
throw new Error(err.response.data);
}
}
}
async createPayment(paymentOptions) {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'payment', paymentOptions);
}
async getPaymentInfo(options) {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'payment/info', options);
}
async getPaymentHistory(paymentListOptions, cursor) {
return this.requestBuilder(payment_interface_1.KeyType.payment, cursor ? this.url + `payment/list?cursor=${cursor}` : this.url + 'payment/list', paymentListOptions);
}
async getPaymentServices() {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'payment/services');
}
async refund(refundOptions) {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'payment/refund', refundOptions);
}
async getBalance() {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'balance');
}
async resendWebhook(resendOptions) {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'payment/resend', resendOptions);
}
async createWallet(walletOptions) {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'wallet', walletOptions);
}
async blockWallet(walletOptions) {
return this.requestBuilder(payment_interface_1.KeyType.payment, this.url + 'wallet/block-address', walletOptions);
}
async createPayout(payoutOptions) {
return this.requestBuilder(payment_interface_1.KeyType.payout, this.url + 'payout', payoutOptions);
}
async getPayoutInfo(payoutInfoOptions) {
return this.requestBuilder(payment_interface_1.KeyType.payout, this.url + 'payout/info', payoutInfoOptions);
}
async getPayoutHistory(cursor) {
return this.requestBuilder(payment_interface_1.KeyType.payout, cursor ? this.url + `payout/list?cursor=${cursor}` : this.url + 'payout/list');
}
async getPayoutServices() {
return this.requestBuilder(payment_interface_1.KeyType.payout, this.url + 'payout/services');
}
async transferToWallet(walletType, transferOption) {
return this.requestBuilder(payment_interface_1.KeyType.payout, this.url + `transfer/to-${walletType}`, transferOption);
}
generateUUID() {
return (0, uuid_1.v4)();
}
generateShortUUID() {
return shortUUID.generate();
}
}
exports.Cryptomus = Cryptomus;
//# sourceMappingURL=index.js.map