@lskjs/billing
Version:
LSK.js module for adding billing in cabinet
246 lines (245 loc) • 10.7 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _err = _interopRequireDefault(require("@lskjs/err"));
var _serverApi = _interopRequireDefault(require("@lskjs/server-api"));
var _set = _interopRequireDefault(require("lodash/set"));
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var InterkassaBillingApi = /*#__PURE__*/function (_Api) {
(0, _inherits2["default"])(InterkassaBillingApi, _Api);
var _super = _createSuper(InterkassaBillingApi);
function InterkassaBillingApi() {
(0, _classCallCheck2["default"])(this, InterkassaBillingApi);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(InterkassaBillingApi, [{
key: "getRoutes",
value: function getRoutes() {
return {
'/index': this.index.bind(this),
'/create': this.create.bind(this),
'/check': this.check.bind(this)
};
}
}, {
key: "url",
value: function url() {
var _this$app;
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return (_this$app = this.app).url.apply(_this$app, ["/api/billing/interkassa/".concat(args[0])].concat((0, _toConsumableArray2["default"])(args.slice(1))));
}
}, {
key: "index",
value: function index() {
return 'ok';
}
}, {
key: "check",
value: function () {
var _check = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(req) {
var _id, BillingTransactionModel, transaction;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
_context.next = 2;
return this.isAuth(req);
case 2:
_id = req.data._id;
if (_id) {
_context.next = 5;
break;
}
throw new _err["default"]('params.required', {
status: 400,
data: {
field: '_id'
}
});
case 5:
BillingTransactionModel = this.app.models.BillingTransactionModel;
_context.next = 8;
return BillingTransactionModel.findById(_id);
case 8:
transaction = _context.sent;
return _context.abrupt("return", this._checkTransactionAndSave(transaction));
case 10:
case "end":
return _context.stop();
}
}, _callee, this);
}));
function check(_x) {
return _check.apply(this, arguments);
}
return check;
}()
}, {
key: "_checkTransactionAndSave",
value: function () {
var _checkTransactionAndSave2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(transaction) {
var _yield$this$app$modul, billing, BillingTransactionModel, interkassaModule, res, pendingStates, status;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return this.app.module(['billing']);
case 2:
_yield$this$app$modul = _context2.sent;
billing = _yield$this$app$modul.billing;
BillingTransactionModel = this.app.models.BillingTransactionModel;
_context2.next = 7;
return billing.provider('interkassa');
case 7:
interkassaModule = _context2.sent;
_context2.prev = 8;
_context2.next = 11;
return interkassaModule.coInvoice(transaction.meta.id);
case 11:
res = _context2.sent;
this.log.trace('interkassaModule.coInvoice res', res);
transaction.addEvent({
type: 'coInvoice',
data: res
});
pendingStates = [0, 2, 3, 4];
if (res.state === 7) {
status = BillingTransactionModel.STATUS_SUCCESS;
} else if (pendingStates.includes(res.state)) {
status = BillingTransactionModel.STATUS_PENDING;
} else {
status = BillingTransactionModel.STATUS_CANCELED;
}
_context2.next = 18;
return transaction.setStatus(status);
case 18:
_context2.next = 20;
return transaction.save();
case 20:
return _context2.abrupt("return", transaction);
case 23:
_context2.prev = 23;
_context2.t0 = _context2["catch"](8);
this.log.error('check err', _context2.t0);
transaction.addEvent({
method: 'check',
data: _context2.t0
});
_context2.next = 29;
return transaction.save();
case 29:
throw _context2.t0;
case 30:
case "end":
return _context2.stop();
}
}, _callee2, this, [[8, 23]]);
}));
function _checkTransactionAndSave(_x2) {
return _checkTransactionAndSave2.apply(this, arguments);
}
return _checkTransactionAndSave;
}()
}, {
key: "create",
value: function () {
var _create = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(req) {
var _yield$this$app$modul2, billing, interkassaModule, BillingTransactionModel, amount, transaction, data, continueUrl;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return this.isAuth(req);
case 2:
_context3.next = 4;
return this.app.module(['billing']);
case 4:
_yield$this$app$modul2 = _context3.sent;
billing = _yield$this$app$modul2.billing;
_context3.next = 8;
return billing.provider('interkassa');
case 8:
interkassaModule = _context3.sent;
_context3.next = 11;
return this.app.module('models.BillingTransactionModel');
case 11:
BillingTransactionModel = _context3.sent;
// const BillingTransactionModel = await this.app.model('BillingTransactionModel');
// const { amount } = req.data;
amount = 100;
_context3.next = 15;
return BillingTransactionModel.createPayment({
type: BillingTransactionModel.TYPE_IN,
amount: amount,
currency: 'RUB',
provider: 'interkassa',
userId: req.user._id
});
case 15:
transaction = _context3.sent;
data = {
ik_pm_no: transaction._id,
ik_cur: transaction.currency,
ik_am: transaction.amount / 100,
ik_desc: "Transaction ".concat(transaction._id),
ik_cli: "UserId: ".concat(transaction.userId)
};
_context3.prev = 17;
this.log.debug('createPaymentUrl', 'transaction', transaction._id, 'data', data);
_context3.next = 21;
return interkassaModule.createPaymentUrl(data);
case 21:
continueUrl = _context3.sent;
this.log.trace('createPaymentUrl continueUrl', continueUrl);
transaction.addEvent({
method: 'createPaymentUrl',
continueUrl: continueUrl
});
(0, _set["default"])(transaction, 'meta.continueUrl', continueUrl);
transaction.markModified('meta.continueUrl');
_context3.next = 28;
return transaction.save();
case 28:
return _context3.abrupt("return", transaction);
case 31:
_context3.prev = 31;
_context3.t0 = _context3["catch"](17);
this.log.error('createPayment err', _context3.t0);
transaction.addEvent({
method: 'createPaymentUrl',
status: 'error',
err: _context3.t0
});
_context3.next = 37;
return transaction.save();
case 37:
throw _context3.t0;
case 38:
case "end":
return _context3.stop();
}
}, _callee3, this, [[17, 31]]);
}));
function create(_x3) {
return _create.apply(this, arguments);
}
return create;
}()
}]);
return InterkassaBillingApi;
}(_serverApi["default"]);
exports["default"] = InterkassaBillingApi;
//# sourceMappingURL=InterkassaBillingApi.js.map