dkudrin-payeer-api
Version:
Node.js wrapper for the Payeer.com
244 lines (194 loc) • 6.71 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _util = require('util');
var _util2 = _interopRequireDefault(_util);
var _https = require('https');
var _https2 = _interopRequireDefault(_https);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var logger = (0, _debug2.default)('payeer-api');
var Payeer = function () {
function Payeer() {
_classCallCheck(this, Payeer);
this.hostname = 'payeer.com';
this.path = '/ajax/api/api.php';
this.agent = 'Mozilla/5.0 (Windows NT 6.1; rv:12.0) Gecko/20100101 Firefox/12.0';
this.auth = {};
this._output = null;
this.errors = null;
this.language = 'ru';
}
_createClass(Payeer, [{
key: 'isAuth',
value: function isAuth() {
return !_lodash2.default.isEmpty(this.auth);
}
}, {
key: 'getResponse',
value: function getResponse(arPost, callback) {
if (this.isAuth()) {
_lodash2.default.extend(arPost, this.auth);
}
var data = [];
_lodash2.default.keys(arPost).forEach(function (key) {
var urlParam = encodeURIComponent(key) + '=' + encodeURIComponent(arPost[key]);
data.push(urlParam);
});
data.push('language=' + this.language);
var dataStr = data.join('&');
var options = {
hostname: this.hostname,
path: this.path,
method: 'POST',
headers: {
'User-Agent': this.agent,
'Content-Length': dataStr.length,
'Accept': '*/*',
'Content-Type': 'application/x-www-form-urlencoded'
}
};
var request = _https2.default.request(options, function (response) {
logger('response status: ' + response.statusCode);
logger('response headers:\n' + _util2.default.inspect(response.headers));
response.setEncoding('utf8');
var responseData = '';
response.on('data', function (chunk) {
responseData += chunk;
});
response.on('end', function () {
logger('response data:\n' + responseData);
var parsedResponse = JSON.parse(responseData || '{}');
var error = null;
if (!_lodash2.default.isEmpty(parsedResponse.errors)) {
error = new Error(_util2.default.inspect(parsedResponse.errors));
}
callback(error, parsedResponse);
});
});
request.write(dataStr);
request.end();
}
}, {
key: 'getPaySystems',
value: function getPaySystems(callback) {
this.getResponse({ action: 'getPaySystems' }, function (error, response) {
callback(error, response);
});
}
}, {
key: 'initOutput',
value: function initOutput(arr, callback) {
var _this = this;
var arrPost = _lodash2.default.clone(arr);
arrPost.action = 'initOutput';
this.getResponse(arrPost, function (error, response) {
if (_lodash2.default.isEmpty(response.errors)) {
_this._output = arr;
callback(error, true);
} else {
_this.errors = response.errors;
callback(error, false);
}
});
}
}, {
key: 'output',
value: function output(callback) {
var _this2 = this;
var arrPost = this._output;
arrPost.action = 'output';
this.getResponse(arrPost, function (error, response) {
if (_lodash2.default.isEmpty(response.errors)) {
callback(error, response.historyId);
} else {
_this2.errors = response.errors;
callback(error, false);
}
});
}
}, {
key: 'getHistoryInfo',
value: function getHistoryInfo(historyId, callback) {
this.getResponse({ action: 'historyInfo', historyId: historyId }, function (error, response) {
callback(error, response);
});
}
}, {
key: 'getBalance',
value: function getBalance(callback) {
this.getResponse({ action: 'balance' }, function (error, response) {
callback(error, response);
});
}
}, {
key: 'getErrors',
value: function getErrors() {
return this.errors;
}
}, {
key: 'transfer',
value: function transfer(arPost, callback) {
arPost.action = 'transfer';
this.getResponse(arPost, function (error, response) {
callback(error, response);
});
}
}, {
key: 'setLang',
value: function setLang(language) {
this.language = language;
return this;
}
}, {
key: 'getShopOrderInfo',
value: function getShopOrderInfo(arPost, callback) {
arPost.action = 'shopOrderInfo';
this.getResponse(arPost, function (error, response) {
callback(error, response);
});
}
}, {
key: 'checkUser',
value: function checkUser(arPost, callback) {
var _this3 = this;
arPost.action = 'checkUser';
this.getResponse(arPost, function (error, response) {
if (_lodash2.default.isEmpty(response.errors)) {
callback(error, true);
} else {
_this3.errors = response.errors;
callback(error, false);
}
});
}
}], [{
key: 'create',
value: function create(account, apiId, apiPass, callback) {
var payeer = new Payeer();
var arr = {
account: account,
apiId: apiId,
apiPass: apiPass
};
payeer.getResponse(arr, function (error, response) {
if (!_lodash2.default.isEmpty(response.errors)) {
payeer.errors = response.errors;
} else if (response.auth_error == '0') {
payeer.auth = arr;
} else {
error = new Error('Authentication failed');
}
callback(error, payeer);
});
}
}]);
return Payeer;
}();
exports.default = Payeer;