UNPKG

payeer-api

Version:
108 lines (80 loc) 2.66 kB
'use strict'; 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' }; }