// 1. 格式化
// 2. 加大括号
// 3. 语义化转换
var app = getApp();
/**
* 作用是 app是否含有onShowData字段,如果没有,就添加,如果有继续将 app.onShowData.scene 赋值为 e
* @returns app.onShowData.scene: e
*/
function setOnShowScene(e) {
app.onShowData || (app.onShowData = {
});
app.onShowData.scene = e;
}
// 对外封装了一层
var pay = {
init: function (l, e) {
// this
var _ = this;
// 封装的所有api
var d = getApp().api;
// l(函数输入参数)
_.page = l;
// e(函数输入第二参数)
app = e;
// 获取内存中字段名为 ‘PARENT_ID’ 的属性(可以类比理解为userId)
var A = getApp().core.getStorageSync(getApp().const.PARENT_ID);
// 若userId不存在,则将userId设置为0
A || (A = 0);
// l(函数输入参数).orderPay = 函数
_.page.orderPay = function (e) {
// 获取页面传入参数index设置为t
var t = e.currentTarget.dataset.index;
// 获取l(函数输入参数).data.order_list[index],作用是获取指定订单
var o = _.page.data.order_list[t];
// 新建数组 a
var a = new Array();
if (void 0 !== _.page.data.pay_type_list) {
// l(函数输入参数).data.pay_type_list !== 0
// void 0 可以代替 undefined 可以节省3个字符
// l(函数输入参数).data.pay_type_list
a = _.page.data.pay_type_list;
} else if (void 0 !== o.pay_type_list) {
// l(函数输入参数).data.order_list[index].pay_type_list !== undefined
// 订单列表对应索引.pay_type_list
a = o.pay_type_list;
} else if (void 0 !== o.goods_list[0].pay_type_list) {
// l(函数输入参数).data.order_list[index].goods_list[0].pay_type_list !== undefined
a = o.goods_list[0].pay_type_list;
} else {
// 默认推送 [{ payment: 0 }]
a.push({
payment: 0 });
}
/** 获取当前页面栈。数组中第一个元素为首页,最后一个元素为当前页面。 */
var r = getCurrentPages();
/** 获取最后一个页面的路径 */
var p = r[r.length - 1].route;
var s = {
};
if (-1 != p.indexOf('pt')) {
// 最后一个页面是拼团活动
// c 赋值为 api.group.pay_data 获取支付参数的url
c = d.group.pay_data;
// s: { order_id: 获取l(函数输入参数).data.order_list[index],作用是获取指定订单的单号 }
s.order_id = o.order_id;
} else if (-1 != p.indexOf('miaosha')) {
// 最后一个页面是秒杀活动
c = d.miaosha.pay_data;
s.order_id = o.order_id;
} else if (-1 != p.indexOf('book')) {
// 最后一个页面是预定活动
c = d.book.order_pay;
s.id = o.id;
} else {
// 最最普通的活动(兜底)
var c = d.order.pay_data;
s.order_id = o.order_id;
}
/** 线上支付 */
// e: 之前配置的 {parent_id, condition: 2, order_id/id}
// t: 请求支付的路由(用来发起预下单)
// o: 获取最后一个页面的路径(用来判断啥活动)
function n(e, t, o) {
e.pay_type = 'WECHAT_PAY';
// 函数输入第二参数, 请求 t(url), 请求参数 e(传进来的第一个参数)
// 调取预下单接口
app.request({
url: t,
data: e,
complete: function () {
// 隐藏loading
getApp().core.hideLoading();
},
success: function (e) {
// 当 e.code == 0 代表请求成功
if (e.code == 0) {
// 设置 app.onShowData.scene : 'pay'
setOnShowScene('pay');
// 调用微信小程序接口 wx.requestPayment({...})
getApp().core.requestPayment({
_res: e,
timeStamp: e.data.timeStamp,
nonceStr: e.data.nonceStr,
package: e.data.package,
signType: e.data.signType,
paySign: e.data.paySign,
success: function (e) {
// TODO: 拉起 支付 订阅消息(支付)
getApp().subscribeMessage([
'pay_tpl',
'send_tpl',
]);
},
fail: function (e) {
},
complete: function (e) {
// 当用户取消或者支付失败
'requestPayment:fail' != e.errMsg &&
'requestPayment:fail cancel' != e.errMsg
?
// 跳转到 路由最后一个页面,且携带参数 status = 1(应该是错误标记)
getApp().core.redirectTo({
url: '/' + o + '?status=1',
})
:
// 弹出确认框
getApp().core.showModal({
title: '提示',
content: '订单尚未支付',
showCancel: !1,
confirmText: '确认',
success: function (e) {
// 用户点击了确认则跳转 路由最后一个页面,且携带参数 status = 0(应该是正确标记)
e.confirm &&
getApp().core.redirectTo({
url: '/' + o + '?status=0',
});
},
});
},
});
}
// 0 == e.code &&
// (setOnShowScene('pay'),
复杂js文件分析
最新推荐文章于 2024-10-23 17:47:46 发布