payeer-api
Version:
Node.js wrapper for the Payeer.com
108 lines (80 loc) • 2.66 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.paymentHash = paymentHash;
exports.paymentUrl = paymentUrl;
exports.paymentCheck = paymentCheck;
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _crypto = require('crypto');
var _crypto2 = _interopRequireDefault(_crypto);
var _querystring = require('querystring');
var _querystring2 = _interopRequireDefault(_querystring);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var logger = (0, _debug2.default)('payeer-api');
var payeerMerchantUrl = 'https://payeer.com/merchant/';
function paymentHash(_ref) {
var m_shop = _ref.m_shop,
m_orderid = _ref.m_orderid,
m_amount = _ref.m_amount,
m_curr = _ref.m_curr,
m_desc = _ref.m_desc,
m_key = _ref.m_key;
m_amount = Number(m_amount).toFixed(2);
m_desc = new Buffer(m_desc).toString('base64');
var arHash = [m_shop, m_orderid, m_amount, m_curr, m_desc];
/*
TODO: additional params code
*/
arHash.push(m_key);
var hash = _crypto2.default.createHash('sha256');
var m_sign = hash.update(arHash.join(':')).digest('hex').toUpperCase();
return {
m_shop: m_shop,
m_orderid: m_orderid,
m_amount: m_amount,
m_curr: m_curr,
m_desc: m_desc,
m_sign: m_sign
};
}
function paymentUrl(oHash) {
var uri = _querystring2.default.stringify(oHash);
return [payeerMerchantUrl, uri].join('?');
}
function paymentCheck(arParams, m_key, ip) {
var addresses = ['185.71.65.92', '185.71.65.189', '149.202.17.210'];
if (ip && !addresses.includes(ip)) {
return {
reply: [arParams.m_orderid, 'error'].join('|'),
error: 'bad ip address'
};
}
if (arParams.m_operation_id && arParams.m_sign) {
var arHash = ['m_operation_id', 'm_operation_ps', 'm_operation_date', 'm_operation_pay_date', 'm_shop', 'm_orderid', 'm_amount', 'm_curr', 'm_desc', 'm_status'].map(function (key) {
return arParams[key];
});
if (arParams.m_params) {
arHash.push(arParams.m_params);
}
arHash.push(m_key);
var hash = _crypto2.default.createHash('sha256');
var m_sign = hash.update(arHash.join(':')).digest('hex').toUpperCase();
if (arParams.m_sign == m_sign && arParams.m_status == 'success') {
return {
reply: [arParams.m_orderid, 'success'].join('|'),
error: false
};
} else {
return {
reply: [arParams.m_orderid, 'error'].join('|'),
error: 'wrong sign'
};
}
}
return {
reply: [arParams.m_orderid, 'error'].join('|'),
error: 'wrong params'
};
}