chuck-wechat
Version:
403 lines (332 loc) • 10.9 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _regenerator = require('babel-runtime/regenerator');
var _regenerator2 = _interopRequireDefault(_regenerator);
var _asyncToGenerator2 = require('babel-runtime/helpers/asyncToGenerator');
var _asyncToGenerator3 = _interopRequireDefault(_asyncToGenerator2);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _xml2js = require('xml2js');
var _utility = require('./utility');
var _config = require('./config');
var _requestPromiseNative = require('request-promise-native');
var _requestPromiseNative2 = _interopRequireDefault(_requestPromiseNative);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var Wechat = function () {
function Wechat(_ref) {
var appid = _ref.appid,
mch_id = _ref.mch_id,
partnerKey = _ref.partnerKey,
appSecret = _ref.appSecret;
(0, _classCallCheck3.default)(this, Wechat);
this.appid = appid;
this.mch_id = mch_id;
this.partnerKey = partnerKey;
this.appSecret = appSecret;
}
// 微信扫码支付
(0, _createClass3.default)(Wechat, [{
key: 'codePay',
value: function () {
var _ref2 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee(params) {
var obj, data, sign, xml, result, wechatObj;
return _regenerator2.default.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
obj = {
nonce_str: (0, _utility.generateRandomStr)(),
trade_type: 'NATIVE',
appid: this.appid,
mch_id: this.mch_id
};
data = params;
Object.assign(data, obj);
sign = (0, _utility.generateSign)({ data: data, partnerKey: this.partnerKey });
Object.assign(data, { sign: sign });
xml = (0, _utility.generateXml)(data);
_context.next = 8;
return (0, _requestPromiseNative2.default)({
method: 'post',
uri: _config.unifiedorderUrl,
body: xml
});
case 8:
result = _context.sent;
wechatObj = null;
(0, _xml2js.parseString)(result.toString(), function (err, xml) {
wechatObj = xml.xml;
});
return _context.abrupt('return', wechatObj);
case 12:
case 'end':
return _context.stop();
}
}
}, _callee, this);
}));
function codePay(_x) {
return _ref2.apply(this, arguments);
}
return codePay;
}()
// 微信扫码登录
}, {
key: 'codeLogin',
value: function () {
var _ref3 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee2(code) {
var getUserInfo = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
var obj, accesstokenUrl, accessTokenResult, accessTokenObj, access_token, openid, userParams, userInfo, userObj;
return _regenerator2.default.wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
obj = {
appid: this.appid,
secret: this.secret,
code: code,
grant_type: 'authorization_code'
};
accesstokenUrl = '' + _config.getAccessTokenUrl + (0, _utility.generateParams)(obj);
_context2.next = 4;
return (0, _requestPromiseNative2.default)({
method: 'get',
uri: '' + _config.getAccessTokenUrl + (0, _utility.generateParams)(obj)
});
case 4:
accessTokenResult = _context2.sent;
accessTokenObj = JSON.parse(accessTokenResult.content);
if (getUserInfo) {
_context2.next = 8;
break;
}
return _context2.abrupt('return', accessTokenObj);
case 8:
access_token = accessTokenObj.access_token, openid = accessTokenObj.openid;
userParams = {
access_token: access_token,
openid: openid
};
_context2.next = 12;
return (0, _requestPromiseNative2.default)({
method: 'get',
uri: '' + _config.userInfoUrl + (0, _utility.generateParams)(userParams)
});
case 12:
userInfo = _context2.sent;
userObj = JSON.parse(userInfo.content);
return _context2.abrupt('return', Object.assign(userObj, accessTokenObj));
case 15:
case 'end':
return _context2.stop();
}
}
}, _callee2, this);
}));
function codeLogin(_x2) {
return _ref3.apply(this, arguments);
}
return codeLogin;
}()
// 小程序登录
}, {
key: 'miniLogin',
value: function () {
var _ref4 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee3(code) {
var obj, userInfo;
return _regenerator2.default.wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
obj = {
appid: this.appid,
secret: this.appSecret,
js_code: code,
grant_type: 'authorization_code'
};
_context3.next = 3;
return (0, _requestPromiseNative2.default)({
method: 'get',
uri: '' + _config.miniUserUrl + (0, _utility.generateParams)(obj)
});
case 3:
userInfo = _context3.sent;
return _context3.abrupt('return', userInfo);
case 5:
case 'end':
return _context3.stop();
}
}
}, _callee3, this);
}));
function miniLogin(_x4) {
return _ref4.apply(this, arguments);
}
return miniLogin;
}()
// 小程序支付
}, {
key: 'miniPay',
value: function () {
var _ref5 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee4(params) {
var obj, data, sign, xml, result, wechatObj;
return _regenerator2.default.wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
// const { appid, mch_id, partnerKey } = wechatParams;
obj = {
nonce_str: (0, _utility.generateRandomStr)(),
trade_type: 'JSAPI',
appid: this.appid,
mch_id: this.mch_id
};
data = params;
Object.assign(data, obj);
sign = (0, _utility.generateSign)({ data: data, partnerKey: this.partnerKey });
Object.assign(data, { sign: sign });
xml = (0, _utility.generateXml)(data);
_context4.next = 8;
return (0, _requestPromiseNative2.default)({
method: 'post',
uri: _config.unifiedorderUrl,
body: xml
});
case 8:
result = _context4.sent;
wechatObj = null;
(0, _xml2js.parseString)(result.toString(), function (err, xml) {
wechatObj = xml.xml;
});
return _context4.abrupt('return', wechatObj);
case 12:
case 'end':
return _context4.stop();
}
}
}, _callee4, this);
}));
function miniPay(_x5) {
return _ref5.apply(this, arguments);
}
return miniPay;
}()
// 退款
}, {
key: 'refund',
value: function () {
var _ref6 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee5(params, certUrl) {
var appid, mch_id, obj, data, sign, xml, result, wechatObj;
return _regenerator2.default.wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
appid = this.appid;
mch_id = this.mch_id;
obj = {
nonce_str: (0, _utility.generateRandomStr)(),
appid: appid,
mch_id: this.mch_id
};
data = params;
Object.assign(data, obj);
sign = (0, _utility.generateSign)({ data: data, partnerKey: this.partnerKey });
Object.assign(data, { sign: sign });
xml = (0, _utility.generateXml)(data);
// console.log(data);
_context5.next = 10;
return (0, _requestPromiseNative2.default)({
method: 'post',
uri: _config.refundUrl,
body: xml,
agentOptions: {
// formal
pfx: require('fs').readFileSync(certUrl),
// test
passphrase: mch_id
}
});
case 10:
result = _context5.sent;
wechatObj = null;
(0, _xml2js.parseString)(result.toString(), function (err, xml) {
wechatObj = xml.xml;
});
return _context5.abrupt('return', wechatObj);
case 14:
case 'end':
return _context5.stop();
}
}
}, _callee5, this);
}));
function refund(_x6, _x7) {
return _ref6.apply(this, arguments);
}
return refund;
}()
// 企业付款到零钱
}, {
key: 'transfer',
value: function () {
var _ref7 = (0, _asyncToGenerator3.default)( /*#__PURE__*/_regenerator2.default.mark(function _callee6(params, certUrl) {
var appid, mch_id, obj, data, sign, xml, result, wechatObj;
return _regenerator2.default.wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
appid = this.appid, mch_id = this.mch_id;
obj = {
nonce_str: (0, _utility.generateRandomStr)(),
mch_appid: appid,
mchid: mch_id
};
data = params;
Object.assign(data, obj);
sign = (0, _utility.generateSign)({ data: data, partnerKey: this.partnerKey });
Object.assign(data, { sign: sign });
xml = (0, _utility.generateXml)(data);
_context6.next = 9;
return (0, _requestPromiseNative2.default)({
method: 'post',
uri: _config.businessToUserUrl,
body: xml,
agentOptions: {
// formal
pfx: require('fs').readFileSync(certUrl),
// test
passphrase: mch_id
}
});
case 9:
result = _context6.sent;
_context6.prev = 10;
wechatObj = null;
(0, _xml2js.parseString)(result.toString(), function (err, xml) {
wechatObj = xml.xml;
});
return _context6.abrupt('return', wechatObj);
case 16:
_context6.prev = 16;
_context6.t0 = _context6['catch'](10);
return _context6.abrupt('return', _context6.t0);
case 19:
case 'end':
return _context6.stop();
}
}
}, _callee6, this, [[10, 16]]);
}));
function transfer(_x8, _x9) {
return _ref7.apply(this, arguments);
}
return transfer;
}()
}]);
return Wechat;
}();
exports.default = Wechat;