// #ifdef H5 import jweixin from '@/lib/jweixin.js'; // #endif import dever from './core'; import html from './html'; var pay = { init: function(doc) { html.init(doc); }, // 支付 payment: function(order_no, param, callback, errCallback) { if (param.link) { return dever.location(param.link); } if (dever.env == 4) { // app this.appPayment(param, res => { if (callback) { callback(res) } else { dever.alert('支付成功'); } }, err => { if (errCallback) { errCallback(err) } else { dever.alert('支付失败'); } }); return; } else if (dever.env == 5) { // 小程序 console.info(param) this.appletPayment(param, res => { if (callback) { callback(res) } else { dever.alert('支付成功'); } }, err => { if (errCallback) { errCallback(err) } else { dever.alert('支付失败'); } }); return; } else if (dever.env == 2) { // h5支付 html.insert(param); if (callback) { callback() } else { dever.alert('支付成功'); } return; } else if (dever.env == 3) { // jsapi支付 this.wxJSApiPay(param, res => { if (callback) { callback(res) } else { dever.alert('支付成功'); } }, err => { if (errCallback) { errCallback(err) } else { dever.alert('支付失败'); } }); return; } }, // app支付 appPayment: function(param, callback, errorCallback) { let paymentType = dever.platform; if (dever.platform == 'weixin') { paymentType = 'wxpay' } uni.requestPayment({ provider: paymentType, orderInfo: param, success: function(res) { if (callback) { callback(res); } }, fail: function(err) { console.log('fail:' + JSON.stringify(err)); if (errorCallback) { errorCallback(err) } } }); }, // 小程序支付 appletPayment: function(param, callback, errorCallback) { let paymentType = dever.platform; if (dever.platform == 'weixin') { paymentType = 'wxpay' } uni.requestPayment({ provider: paymentType, timeStamp: String(param.timeStamp), // 必须转成字符串 nonceStr: param.nonceStr, package: param.package, // "prepay_id=xxx" signType: param.signType || 'MD5', paySign: param.paySign, success: function(res) { if (callback) { callback(res); } }, fail: function(err) { console.log('fail:' + JSON.stringify(err)); if (errorCallback) { errorCallback(err) } } }); }, // 微信公众号支付 wxJSApiPay: function(data, callback, errorCallback) { jweixin.config({ debug: false, // 开启调试模式 appId: data.appId, // 必填,公众号的唯一标识 timestamp: data.timeStamp, // 必填,生成签名的时间戳 nonceStr: data.nonceStr, // 必填,生成签名的随机串 signature: data.paySign, // 必填,签名,见附录1 jsApiList: ['checkJsApi', 'startRecord', 'stopRecord', 'translateVoice', 'scanQRCode', 'openCard' ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); jweixin.ready(function() { jweixin.checkJsApi({ jsApiList: ['checkJsApi', 'startRecord', 'stopRecord', 'translateVoice', 'scanQRCode', 'openCard' ], success: (res) => {}, fail: function(res) { tool.msg('支付呼起失败'); } }); jweixin.chooseWXPay({ timestamp: data.timeStamp, nonceStr: data.nonceStr, package: data.package, signType: data.signType, paySign: data.paySign, success: (res) => { tool.msg(res); // 前端判断返回方式,微信团队郑重提示:不保证绝对可靠,切记! if (res.errMsg == 'chooseWXPay:ok' && callback) { callback(res); } else { tool.msg('支付失败,请重试'); } }, cancel: (r) => { tool.msg('支付已取消'); }, fail: (err) => { if (errorCallback) { errorCallback(err) } } }); }); // config信息验证失败会执行error函数, jweixin.error(function(res) { console.log('jweixin.error失败:', res) }); } } module.exports = pay; /* const pay = { //拉起支付 pay : function(result, location, error) { var self = this; if (!error) { if (location.indexOf('?') == -1) { var fix = '?'; } else { var fix = '&'; } location = location + fix + 'order_id=' + result.order_id; } if (result.type == 'test') { self.alert('支付成功','none', function() { self.location(location, 'to'); }) } else if (self.source == 'h5') { uni.hideLoading(); uni.showLoading({title: '跳转中', mask: true}); self.html(result.order); } else if (self.source == 'app') { self.appPayment(result.type, result.order, function() { self.location(location, 'to'); }, function() { if (!error) { self.location(location + '&error=1', 'to'); } else { self.alert(error); } }); } }, //app支付 appPayment : function(type, order, callback, errorCallback) { uni.requestPayment({ provider: type, orderInfo: order, //微信、支付宝订单数据 success: function (res) { //console.log('success:' + JSON.stringify(res)); callback(res); }, fail: function (err) { //console.log('fail:' + JSON.stringify(err)); errorCallback(err) } }); }, }*/