UNPKG

@lskjs/billing

Version:

LSK.js module for adding billing in cabinet

246 lines (245 loc) 10.7 kB
"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