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

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) {
});
},
})