alfabank
Version:
Pay API for alfa-biz.by (alfabank belarus)
107 lines (99 loc) • 3.68 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/lib/index.ts
var _axios = require('axios'); var _axios2 = _interopRequireDefault(_axios);
// src/lib/utils.ts
var isObject = (obj) => typeof obj === "object" && obj !== null;
var stringify = (value) => {
try {
return JSON.stringify(value);
} catch (e) {
return value;
}
};
var encode = (obj) => {
const params = new URLSearchParams();
for (let [key, value] of Object.entries(obj)) {
if (!value)
continue;
params.append(key, isObject(value) ? stringify(value) : value);
}
return params.toString();
};
var paramsToObject = (arr) => {
let result = {};
for (const item of arr) {
result[item.name] = item.value;
}
return result;
};
// src/enums/orderStatus.ts
var OrderStatus;
(function(OrderStatus2) {
OrderStatus2[OrderStatus2["CREATED"] = 0] = "CREATED";
OrderStatus2[OrderStatus2["APPROVED"] = 1] = "APPROVED";
OrderStatus2[OrderStatus2["DEPOSITED"] = 2] = "DEPOSITED";
OrderStatus2[OrderStatus2["REVERSED"] = 3] = "REVERSED";
OrderStatus2[OrderStatus2["REFUNDED"] = 4] = "REFUNDED";
OrderStatus2[OrderStatus2["AUTHORIZATION_INITIALIZED"] = 5] = "AUTHORIZATION_INITIALIZED";
OrderStatus2[OrderStatus2["DECLINED"] = 6] = "DECLINED";
})(OrderStatus || (OrderStatus = {}));
// src/lib/index.ts
var useAlfaBank = ({
token,
password,
userName,
language = "ru"
} = {}) => {
let isDebug = true;
let instance = _axios2.default.create();
let baseUrl = "https://web.rbsuat.com/ab_by";
const request = async (url, data = {}) => {
try {
let dataEncoded = encode({
language,
...{token, password, userName},
...data
});
const resp = await instance.post([baseUrl, url].join(""), dataEncoded);
return resp.data;
} catch (e) {
if (isDebug)
console.log(e.response.data);
return null;
}
};
const register = async (data) => {
return await request("/rest/register.do", data);
};
const refund = async (data) => {
return await request("/rest/refund.do", data);
};
const getOrderStatus = async (data) => {
return await request("/rest/getOrderStatus.do", data);
};
const getOrderStatusExtended = async (data) => {
const req = await request("/rest/getOrderStatusExtended.do", data);
if (req) {
const params = req.merchantOrderParams;
req.params = params ? paramsToObject(params) : {};
req.paid = req.orderStatus === OrderStatus.APPROVED || req.orderStatus === OrderStatus.DEPOSITED;
}
return req;
};
const addParams = async (data) => {
const req = await request("/rest/addParams.do", data);
return _optionalChain([req, 'optionalAccess', _ => _.errorCode]) === 0 ? true : req;
};
return {
instance,
register,
refund,
addParams,
getOrderStatus,
getOrderStatusExtended
};
};
// src/lib/helpers.ts
var toBynPenny = (value) => {
return parseFloat((value * 100).toFixed(2));
};
exports.toBynPenny = toBynPenny; exports.useAlfaBank = useAlfaBank;