You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
382 lines
10 KiB
JavaScript
382 lines
10 KiB
JavaScript
9 months ago
|
const app = getApp();
|
||
|
const util = require('../../utils/util.js');
|
||
|
const utils = require('../../utils/utils.js');
|
||
|
const loginApi = require('../../utils/loginApi.js');
|
||
|
const card = require('../../utils/card.js');
|
||
|
Page({
|
||
|
|
||
|
/**
|
||
|
* 页面的初始数据
|
||
|
*/
|
||
|
data: {
|
||
|
hidden: true,
|
||
|
amount: 0,
|
||
|
totalAmount: 0.0,
|
||
|
tagsList: [],
|
||
|
schemeData: {
|
||
|
minAmount: 0,
|
||
|
maxAmount: 0,
|
||
|
inputFlag: 1
|
||
|
},
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 生命周期函数--监听页面加载
|
||
|
*/
|
||
|
onLoad: function(options) {
|
||
|
var that = this;
|
||
|
card.WxRechargeScheme(function(json) {
|
||
|
console.log(json);
|
||
|
var result = json.data;
|
||
|
var schemeData = {};
|
||
|
if (result.status == 1) {
|
||
|
var data = result.data;
|
||
|
schemeData.schemeId = data.schemeId;
|
||
|
schemeData.schemeNo = data.schemeNo;
|
||
|
schemeData.minAmount = data.minAmount;
|
||
|
schemeData.maxAmount = data.maxAmount;
|
||
|
schemeData.inputFlag = data.inputFlag;
|
||
|
var discountContent = data.discountContent;
|
||
|
var details = data.detail;
|
||
|
var detailsList = [];
|
||
|
var desList = [];
|
||
|
if (discountContent && discountContent != "" && discountContent != "{}") {
|
||
|
console.log("----------------");
|
||
|
for (var value of details) {
|
||
|
var des = {};
|
||
|
des.amount = value.startAmount;
|
||
|
des.desc = value.giftAmountValue;
|
||
|
des.imgurl = "../../images/icon-coupon-one.png";
|
||
|
desList.push(des);
|
||
|
}
|
||
|
} else {
|
||
|
for (var detail of details) {
|
||
|
var detailData = {};
|
||
|
var startAmountCn = detail.startAmount; // 起始金额
|
||
|
var startAmount = parseFloat(startAmountCn).toFixed(2);
|
||
|
var giftAmountType = detail.giftAmountType; // 赠送类型 0按比例 1固定值
|
||
|
var giftAmountValue = detail.giftAmountValue; // 赠送值
|
||
|
var giftAmount = giftAmountValue;
|
||
|
if (giftAmountType == 0) {
|
||
|
giftAmount = parseFloat(parseFloat(startAmount) * (parseFloat(giftAmountValue) / 100)).toFixed(2);
|
||
|
} else if (giftAmountType == 1) {
|
||
|
giftAmount = parseFloat(giftAmountValue).toFixed(2);
|
||
|
}
|
||
|
detailData.startAmountCn = startAmountCn;
|
||
|
detailData.startAmount = startAmount;
|
||
|
detailData.giftAmount = giftAmount;
|
||
|
detailData.giftAmountCn = parseInt(giftAmount);
|
||
|
detailsList.push(detailData);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
that.setData({
|
||
|
schemeData: schemeData,
|
||
|
desList: desList,
|
||
|
detailsList: detailsList,
|
||
|
totalAmount: app.cardInfo.totalAmount,
|
||
|
});
|
||
|
} else {
|
||
|
that.setData({
|
||
|
totalAmount: app.cardInfo.totalAmount,
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
cy_rechargeRecord: function(e) {
|
||
|
var url = "recharge_record"
|
||
|
wx.navigateTo({
|
||
|
url: url,
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
cy_memberEquity: function(e) {
|
||
|
var url = "cardEquity"
|
||
|
wx.navigateTo({
|
||
|
url: url,
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
cy_consumeRecord: function(e) {
|
||
|
var url = "consume_record"
|
||
|
wx.navigateTo({
|
||
|
url: url,
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 选择充值方案
|
||
|
*/
|
||
|
cy_rechargeScheme: function(e) {
|
||
|
var index = e.currentTarget.dataset.index;
|
||
|
for (var map of this.data.desList) {
|
||
|
map.imgurl = "../../images/icon-coupon-one.png";
|
||
|
}
|
||
|
var map = this.data.desList[index];
|
||
|
map.imgurl = "../../images/icon-coupon-two.png";
|
||
|
this.setData({
|
||
|
amount: map.amount,
|
||
|
desList: this.data.desList
|
||
|
});
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 确认充值
|
||
|
*/
|
||
|
cy_onceRecharge: function(e) {
|
||
|
this.cy_recharge();
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
cy_selectAmount: function(e) {
|
||
|
var index = e.currentTarget.dataset.index;
|
||
|
for (var i = 0; i < this.data.tagsList.length; i++) {
|
||
|
var map = this.data.tagsList[i];
|
||
|
map.checked = false;
|
||
|
if (index == i) {
|
||
|
map.checked = true;
|
||
|
this.data.amount = map.amount;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this.setData({
|
||
|
tagsList: this.data.tagsList,
|
||
|
})
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
*
|
||
|
*/
|
||
|
cy_recharge: function() {
|
||
|
var that = this;
|
||
|
var rechargeAmount = parseFloat(that.data.amount);
|
||
|
if (rechargeAmount <= 0) {
|
||
|
utils.alertErrorMsg('错误提示', '充值金额不合法');
|
||
|
return;
|
||
|
}
|
||
|
var totalFee = parseInt(parseFloat(rechargeAmount) * 100);
|
||
|
// 先创建充值订单
|
||
|
var date = new Date();
|
||
|
var createTime = app.utils.getFormatTime(date, 1);
|
||
|
var params = {
|
||
|
"method": "weixin.recharge.order.create",
|
||
|
"wid": app.memberWid,
|
||
|
"openid": app.openId,
|
||
|
"outTradeNo": card.getTradeNo(),
|
||
|
"createTime": createTime,
|
||
|
rechargeNo: that.data.schemeData.schemeNo,
|
||
|
requestAmount: totalFee,
|
||
|
cardNo: app.cardNo
|
||
|
};
|
||
|
var ignores = [];
|
||
|
app.jsapi.memberApi(app.globalData.appMemberKey, app.globalData.appMemberSecret, app.globalData.serverMemberUrl).ajax(params, ignores,
|
||
|
function(json) {
|
||
|
console.log(json);
|
||
|
var result = json.data;
|
||
|
if (result.status == 1) {
|
||
|
var outTradeNo = result.data.outTradeNo; //
|
||
|
// 微信统一下单
|
||
|
that.wxUnifiedorder(outTradeNo, totalFee);
|
||
|
} else {
|
||
|
that.setData({
|
||
|
hidden: true
|
||
|
});
|
||
|
app.msg.showMsg("提示", "微信下单失败");
|
||
|
}
|
||
|
},
|
||
|
function(error) {
|
||
|
app.msg.showMsg("提示", "网络连接失败");
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 微信统一下单
|
||
|
*/
|
||
|
wxUnifiedorder: function(outTradeNo, totalFee) {
|
||
|
var that = this;
|
||
|
var params = {
|
||
|
"method": 'weixin.unifiedorder',
|
||
|
"wid": app.memberWid,
|
||
|
"deviceInfo": app.sourceSign,
|
||
|
"body": "微信小程序充值",
|
||
|
"detail": "微信小程序充值",
|
||
|
"attach": app.memberWid,
|
||
|
"outTradeNo": outTradeNo,
|
||
|
"totalFee": totalFee,
|
||
|
"spbillCreateIp": "0.0.0.0",
|
||
|
"openid": app.openId,
|
||
|
}
|
||
|
var ignores = [];
|
||
|
ignores.push('deviceInfo');
|
||
|
ignores.push('body');
|
||
|
ignores.push('detail');
|
||
|
ignores.push('attach');
|
||
|
ignores.push('deviceInfo');
|
||
|
app.jsapi.memberApi(app.globalData.appMemberKey, app.globalData.appMemberSecret, app.globalData.serverMemberUrl).ajax(params, ignores,
|
||
|
function(json) {
|
||
|
var result = json.data;
|
||
|
console.log(" =============== ", result);
|
||
|
if (result.status == 1) {
|
||
|
var data = result.data;
|
||
|
var saobeiOrderNo = data.saobeiOrderNo;
|
||
|
// 微信支付查询
|
||
|
var timer = setInterval(function() {
|
||
|
console.log("定时器查询支付结果");
|
||
|
that.wxQueryOrder(outTradeNo, saobeiOrderNo, function(json) {
|
||
|
console.log(json);
|
||
|
var result = json.data;
|
||
|
if (result.status == 1) {
|
||
|
var data = result.data;
|
||
|
if (data.status == 1) {
|
||
|
clearInterval(timer);
|
||
|
// 微信扣款成功
|
||
|
var outTradeNo = data.outTradeNo;
|
||
|
var transactionId = data.transactionId;
|
||
|
var payMode = data.payMode;
|
||
|
if (payMode == "fuyou") {
|
||
|
that.cy_selectCardInfo();
|
||
|
app.msg.showMsg("提示", "会员卡充值成功");
|
||
|
} else {
|
||
|
that.wxRechargeOrderUpdate(outTradeNo, transactionId);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
}
|
||
|
}, function(error) {
|
||
|
wx.showModal({
|
||
|
title: '提示',
|
||
|
content: '微信支付失败',
|
||
|
})
|
||
|
});
|
||
|
}, 2000);
|
||
|
|
||
|
wx.requestPayment({
|
||
|
timeStamp: data.timeStamp,
|
||
|
nonceStr: data.nonceStr,
|
||
|
package: data.package,
|
||
|
signType: data.signType,
|
||
|
paySign: data.paySign,
|
||
|
"success": function(res) {
|
||
|
console.log("成功=============" + res);
|
||
|
console.log(res);
|
||
|
},
|
||
|
"fail": function(res) {
|
||
|
console.log("失败=============" + res);
|
||
|
console.log(res);
|
||
|
clearInterval(timer);
|
||
|
that.setData({
|
||
|
hidden: true
|
||
|
});
|
||
|
app.msg.showMsg("提示", "微信支付取消");
|
||
|
},
|
||
|
"complete": function(res) {
|
||
|
console.log("结束=============" + res);
|
||
|
console.log(res);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
} else {
|
||
|
that.setData({
|
||
|
hidden: true
|
||
|
});
|
||
|
app.msg.showMsg("提示", "微信支付失败");
|
||
|
}
|
||
|
},
|
||
|
function(error) {
|
||
|
app.msg.showMsg("提示", "网络连接失败");
|
||
|
}
|
||
|
);
|
||
|
|
||
|
},
|
||
|
|
||
|
// 微信订单查询
|
||
|
wxQueryOrder: function(outTradeNo, saobeiOrderNo, success, fail) {
|
||
|
var params = {
|
||
|
"wid": app.memberWid,
|
||
|
'outTradeNo': outTradeNo,
|
||
|
'method': 'weixin.unifiedorder.query'
|
||
|
}
|
||
|
|
||
|
if (saobeiOrderNo){
|
||
|
params.saobeiOrderNo = saobeiOrderNo;
|
||
|
}
|
||
|
|
||
|
console.log(params);
|
||
|
var ignores = [];
|
||
|
app.jsapi.memberApi(app.globalData.appMemberKey, app.globalData.appMemberSecret, app.globalData.serverMemberUrl).ajax(params, ignores,
|
||
|
function(json) {
|
||
|
success(json);
|
||
|
},
|
||
|
function(error) {
|
||
|
fail(error);
|
||
|
}
|
||
|
);
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 更新订单状态
|
||
|
*/
|
||
|
wxRechargeOrderUpdate: function(outTradeNo, transactionId) {
|
||
|
var that = this;
|
||
|
var date = new Date();
|
||
|
var payTime = app.utils.getFormatTime(date, 1);
|
||
|
var params = {
|
||
|
"wid": app.memberWid,
|
||
|
"outTradeNo": outTradeNo,
|
||
|
"payTime": payTime,
|
||
|
"transactionId": transactionId,
|
||
|
'method': 'weixin.recharge.order.update'
|
||
|
}
|
||
|
var ignores = [];
|
||
|
app.jsapi.memberApi(app.globalData.appMemberKey, app.globalData.appMemberSecret, app.globalData.serverMemberUrl).ajax(params, ignores,
|
||
|
function(json) {
|
||
|
console.log("会员卡充值成功", json);
|
||
|
var result = json.data;
|
||
|
if (result.status == 1) {
|
||
|
that.setData({
|
||
|
hidden: true
|
||
|
});
|
||
|
that.cy_selectCardInfo();
|
||
|
app.msg.showMsg("提示", "会员卡充值成功");
|
||
|
}
|
||
|
},
|
||
|
function(error) {
|
||
|
fail(error);
|
||
|
}
|
||
|
);
|
||
|
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* 查询卡信息
|
||
|
*/
|
||
|
cy_selectCardInfo: function() {
|
||
|
var that = this;
|
||
|
card.wx_cardInfo(app.cardNo, function(json) {
|
||
|
var result = json.data;
|
||
|
if (result.status == 1) {
|
||
|
app.cardInfo = result.data;
|
||
|
that.setData({
|
||
|
totalAmount: app.cardInfo.totalAmount,
|
||
|
});
|
||
|
}
|
||
|
}, function(err) {
|
||
|
|
||
|
});
|
||
|
},
|
||
|
|
||
|
})
|