UNPKG

cryptomus-sdk

Version:

This is not an official one created for simplified work with Cryptomus API

91 lines 3.94 kB
"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