// pages/cart/paymentPage/index.js import Toast from 'tdesign-miniprogram/toast/index'; const app = getApp() import { getPublicImage } from '../../../assets/js/middleGround/tool'; Page({ /** * 页面的初始数据 */ data: { loading: true, hidden: true, myOrderOrderNumber: [], orderNumber: null, navBarHeight: '', barHeight: '', selectedIds: '', purchasedIds: [], productList: [], price: '', payPrice: '', orderGoods: '', isPaySuccess: false, isPayComplete: false, type: '', onNorderSaleMethod: '', ImmediatelyReceive: '', integral: 0, defaultVal: false, deductioRate: 0, currentBalance: 0, showIntegral: false }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { wx.setNavigationBarTitle({ title: '提交订单' }); const systInfo = wx.getSystemInfoSync(); const menu = wx.getMenuButtonBoundingClientRect(); // 胶囊信息 const navBarHeight = (menu.top - systInfo.statusBarHeight) * 2 + menu.height; // 导航栏高度 this.setData({ orderNumber: options.orderNumber, navBarHeight: navBarHeight, barHeight: systInfo.statusBarHeight, selectedIds: options.selectedIds, onNorderSaleMethod: options.onNorderSaleMethod }) console.log(this.data.onNorderSaleMethod, 'options'); this.getIntegral() this.getOrderByOrderNumData() this.getDataList() }, getIntegral() { app.MG.store .getUserWallet({ type: 'integral' }) .then((res) => { this.setData({ integral: res.balance, deductioRate: res.exchangeRate }); }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { }, goBack() { wx.navigateBack(); }, // 金额显示.00格式 numFormat(value) { if (!value) return "0.00"; value = Number(value).toFixed(2); var intPart = Math.trunc(value); // 获取整数部分 var intPartFormat = intPart .toString() .replace(/(\d)(?=(?:\d{3})+$)/g, "$1,"); // 将整数部分逢三一断 var floatPart = ".00"; // 预定义小数部分 var value2Array = value.split("."); // =2表示数据有小数位 if (value2Array.length === 2) { floatPart = value2Array[1].toString(); // 拿到小数部分 if (floatPart.length === 1) { return `${intPartFormat}.${floatPart}0`; } return `${intPartFormat}.${floatPart}`; } return intPartFormat + floatPart; }, getOrderByOrderNumData() { console.log(this.data.orderNumber, 'this.data.orderNumber'); let query = { orderNum: this.data.orderNumber, fields: { content: [], subtitle: [], } } app.MG.store.getOrderByOrderNum(query).then(res => { this.setData({ orderGoods: res.orderNumber }) this.setData({ price: res.payPrice.toFixed(2), payPrice: res.payPrice.toFixed(2), ImmediatelyReceive: res.payPrice }) res.saleMethodLinks.forEach(item => { const type = item.orderSaleMethod.type == 'createProductItemSaleMethod' ? 'item' : 'product'; item.type = type; // 将type设置为item对象的属性,而不是使用setData item.paymentIcon = getPublicImage(item.orderSaleMethod.product.icon) item.payPrice = this.numFormat(item.payPrice) }) this.setData({ productList: res.saleMethodLinks, loading: false, hidden: false, }) }) }, getDataList() { let data = { start: 0, size: 999, filterList: [{ field: 'State', value: 'WaitPay' }], sort: { type: 'Desc', field: 'CreateDate' } } app.MG.store.getUserOrderList(data).then((res) => { res.datas.forEach((item) => { this.data.myOrderOrderNumber.push(item.saleMethodLinks[0].orderSaleMethod.id) console.log(this.data.myOrderOrderNumber); }) }) }, handleChange(e) { this.setData({ defaultVal: e.detail.value, }); console.log(this.data.defaultVal) if (this.data.defaultVal) { let useBalance = Math.floor(this.data.payPrice * this.data.deductioRate); if (useBalance >= this.data.integral) { this.setData({ currentBalance: this.data.integral, }); } else { this.setData({ currentBalance: useBalance, }); } const data = { orderNumber: this.data.orderNumber, payMethod: "Wallet", type: "integral", payValue: this.data.currentBalance } app.MG.store.newOrderPay(data).then(res => { if (res) { this.setData({ payId: res.payList[0].id, payPrice: res.payPrice, deduct: (this.data.currentBalance / 100).toFixed(2), integral: this.data.integral - this.data.currentBalance, showIntegral: true }); console.log(this.data.price, this.data.payPrice, 123) } }) } else { const data = { orderNumber: this.data.orderNumber, payId: this.data.payId, } app.MG.store.delOrderPay(data).then(res => { console.log(res, "取消用积分") if (res) { this.setData({ payPrice: res.payPrice, showIntegral: false }); this.getIntegral() } }) } }, confirmOrderGet() { if (this.data.myOrderOrderNumber.includes(parseInt(this.data.onNorderSaleMethod))) { Toast({ context: this, selector: '#t-toast', message: '已经在订单中', theme: 'warning', direction: 'column', }); } else { var that = this; let query = { orderNum: this.data.orderGoods } app.MG.store.confirmOrder(query).then(res => { console.log(res.orderNumber, 'res'); if (res.orderNumber) { let resOrderNum = { orderNum: res.orderNumber, platform: "WeChatAppCustom" }; console.log(resOrderNum, 'resOrderNum'); // 用户未绑定微信 报500 app.MG.store.makeWeChatPay(resOrderNum).then(payRes => { console.log(payRes, 'payRes'); if (payRes) { const payVal = JSON.parse(payRes); console.log(payVal); wx.requestPayment({ "appId": payVal.appId, "timeStamp": payVal.timeStamp, "nonceStr": payVal.nonceStr, "package": payVal.package, "signType": payVal.signType, "paySign": payVal.paySign, success: function (res) { console.log('支付成功'); if (res.errMsg == 'requestPayment:ok') { that.setData({ isPaySuccess: true }) } }, fail: function (res) { console.log('支付失败'); }, // 无论支付成功失败都会调用 "complete": function (res) { if (res.errMsg == 'requestPayment:ok') { that.setData({ isPayComplete: true }) } if (that.data.isPaySuccess && that.data.isPayComplete) { that.navToBack() } } }); } else { Toast({ context: this, selector: '#t-toast', message: '支付失败', theme: 'warning', direction: 'column', }); } }) } }) } }, // 页面返回 navToBack() { this.getOrderByOrderNumData() // 返回 wx.navigateBack() }, onReceive() { let query = { orderNum: this.data.orderGoods } app.MG.store.confirmOrder(query).then(res => { Toast({ context: this, selector: '#t-toast', message: '领取成功', theme: 'success', direction: 'column', }); wx.navigateBack() }) } })