const app = getApp(); const myOrder = require("../../utils/myOrder.js"); Page({ /** * 页面的初始数据 */ data: { isMember: 0, hidden: true, payFlag: true, isPasswd: true, passwd: "", queryCount: 0, busNo: "", phone: "", tableNo: "", tableName: "选择桌号", people: 1, busMode: 0, reserveTime: "", boxFee: 0, comment: "", payMode: "02", order: null, }, /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { this.data.tradeNo = options.tradeNo; var time = app.utils.getFormatTime(new Date(), 0); this.setData({ startTime: time, time: time, }); this.cy_getProgramOrderDetail(); }, /** * 订单详情 */ cy_getProgramOrderDetail: function() { var that = this; var params = { method: "program.order.detail", programId: app.globalData.programId, openId: app.openId, tradeNo: this.data.tradeNo } var ignores = ["programId", "openId", "tradeNo"]; app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { console.log(json.data); var data = json.data; if (data.status == 1) { var result = data.data; var boxFee = 0; for (var product of result.orderProduct) { if (product.isSuit != 2) { boxFee += product.count * product.basePackageFee; } product.makeInfo = []; product.makeDes = product.specName; for (var make of result.makeInfo) { if (product.clientId == make.orderItemId) { product.makeInfo.push(make); if (product.makeDes != "") { product.makeDes = product.makeDes + "、"; } product.makeDes = product.makeDes + make.makeName; } } } var receiveAddress = "", receiveName = "", receiveMobile = ""; if (result.ticketDeliver.length != 0) { var ticketDeliver = result.ticketDeliver[0]; receiveAddress = ticketDeliver.address; receiveName = ticketDeliver.name; receiveMobile = ticketDeliver.orderTel; } var sumMoney = 0; if (result.busMode == 0) { // 堂食 sumMoney = result.receivable; } if (result.busMode == 1) { // 外带 sumMoney = parseFloat(result.receivable) + boxFee; } if (result.busMode == 3) { // 外送 sumMoney = parseFloat(result.receivable) + boxFee + result.deliverFee; } var tableName = "就餐桌号"; if (result.tableName != "") { tableName = result.tableName; } console.log(result); that.setData({ busMode: result.busMode, storeName: result.storeName, storeAddress: result.address, tableNo: result.tableNo, tableName: tableName, phone: result.mobile, receiveAddress: receiveAddress, receiveName: receiveName, receiveMobile: receiveMobile, comment: result.ext2, deliverFee: result.deliverFee, boxFee: parseFloat(boxFee.toFixed(2)), receivable: result.receivable, sumMoney: sumMoney.toFixed(2), list: result.orderProduct, order: result, }); } else { wx.showToast({ title: data.message, icon: "none" }); } }, function(err) { console.log(err); }); }, /** * 选择收货地址 */ cy_selectAddress: function() { wx.navigateTo({ url: 'managerAddress', }) }, /** * */ cy_cancelTime: function() { }, /** * 就餐时间 */ cy_selectTime: function(e) { var time = e.detail.value this.setData({ outTime: time, time: time, }); }, /** * 加载收货地址 */ cy_loadAddress: function(address) { console.log(address); if (!address) { return; } var receiveAddress = address.receiveAddress + address.receiveDoor; this.setData({ receiveAddress: receiveAddress, receiveName: address.receiveName, receiveMobile: address.receiveMobile, }); }, /** * 就餐桌号 */ cy_tapSelectTable: function() { var url = "../order/table/table?storeId=" + this.data.order.storeId; wx.navigateTo({ url: url, }) }, /** * 就餐方式 */ cy_tapSelectEatType: function(e) { var busMode = e.currentTarget.dataset.busmode; console.log(busMode); var sumMoney = 0; var boxFee = 0; var order = this.data.order; if (busMode == 0) { // 堂食 console.log("堂食"); sumMoney = order.receivable; } if (busMode == 1) { // 外带 console.log("外带"); for (var product of order.orderProduct) { if (product.isSuit != 2) { boxFee = boxFee + product.basePackageFee * product.count; } } sumMoney = parseFloat(order.receivable) + boxFee; } this.setData({ boxFee: parseFloat(boxFee).toFixed(2), receivable: order.receivable, sumMoney: parseFloat(sumMoney).toFixed(2), busMode: busMode }); }, /** * 备注信息 */ cy_tapInputCommont: function() { wx.navigateTo({ url: '../order/balance/userComment', }) }, /** * 去支付 */ cy_tapGoPay: function() { console.log(this.data.order); for (var productInfo of this.data.order.orderProductInfo) { if (productInfo.type == 2) { wx.showToast({ title: '该订单已失效,请重新点单', icon: "none" }) return; } } this.setData({ payFlag: false }); }, /** * 关闭支付 */ cy_closePay: function() { this.setData({ payFlag: true }); }, /** * 会员支付 */ cy_tapMemberPay: function() { this.data.isMember = 1; // wx.showToast({ // title: '即将上线', // icon: "none" // }) // this.cy_programWeixinPay(); this.cy_programOorderEdit(); }, /** * 微信支付 */ cy_tapWxPay: function() { this.data.isMember = 0; // this.cy_programOorderEdit(); }, /** * 订单修改 */ cy_programOorderEdit: function() { this.setData({ hidden: false, msg: "处理中..." }) var busNo = this.data.tradeNo; var mobile = this.data.phone; var tableNo = this.data.tableNo; var tableName = this.data.tableName; var reserveTime = this.data.time; var packageFee = 0; var deliverFee = 0; var busMode = this.data.busMode; var jsonStringProduct = []; if (busMode == 0) { // 堂食 packageFee = 0; for (var product of this.data.order.orderProduct) { var item = {}; item.id = product.clientId; item.packageFee = 0; jsonStringProduct.push(item); } } if (busMode == 1) { // 外带 packageFee = 0; for (var product of this.data.order.orderProduct) { if (product.isSuit != 2) { var item = {}; item.id = product.clientId; item.packageFee = (product.count * product.basePackageFee).toFixed(2); packageFee += product.count * product.basePackageFee; jsonStringProduct.push(item); } } } if (busMode == 3) { // 外卖 packageFee = 0; deliverFee = this.data.order.deliverFee; for (var product of this.data.order.orderProduct) { if (product.isSuit != 2) { var item = {}; item.id = product.clientId; item.packageFee = (product.count * product.basePackageFee).toFixed(2); packageFee += product.count * product.basePackageFee; jsonStringProduct.push(item); } } } var that = this; var params = { method: "program.order.edit", programId: app.globalData.programId, openId: app.openId, busNo: busNo, // 订单编号 mobile: mobile, // 手机 tableNo: tableNo, // 桌号 tableName: tableName, // people: 1, // 就餐人数 busMode: busMode, // 营业模式 reserveTime: reserveTime, // 预定时间 deliverFee: deliverFee, // 配送费 packageFee: packageFee, // 餐盒费 ext2: this.data.comment, // jsonStringProduct: JSON.stringify(jsonStringProduct), } console.log(params); var ignores = ["programId", "openId", "busNo", "mobile", "tableNo", "tableName", "people", "busMode", "reserveTime", "deliverFee", "packageFee", "ext2", "jsonStringProduct"]; app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { console.log(json); var data = json.data; if (data.status == 1) { if (that.data.isMember == 0) { // 微信支付 that.cy_programWeixinPay(); } if (that.data.isMember == 1) { // 会员支付 that.cy_memberCreateVoucherNoPlatform(); } } else { that.setData({ hidden: true }) wx.showToast({ title: data.message, icon: "none" }) } }, function(err) { that.setData({ hidden: true }) wx.showToast({ title: '网络连接异常, 请检查', icon: "none" }) }); }, /** * 统一订单创建 */ cy_memberCreateVoucherNoPlatform: function() { var that = this; var saleDate = app.utils.getFormatTime(new Date(), 1); var goodsDetails = []; for (var product of this.data.order.orderProduct) { var detail = {}; detail.goodsId = product.productId; detail.name = product.productName; detail.spec = product.specName; detail.quantity = product.count; detail.discountMoney = product.discountTotal; detail.money = product.receivable; goodsDetails.push(detail); } var money = parseInt((this.data.order.receivable * 100)); if (that.data.busMode == 1) { // 外带 money = parseInt(this.data.order.receivable * 100) + parseInt(this.data.boxFee * 100); } if (that.data.busMode == 3) { // 外卖 money = parseInt(this.data.order.receivable * 100) + parseInt(this.data.boxFee * 100) + parseInt(this.data.deliverFee * 100); } var params = { method: "jw.trade.create.voucherNo.platform", tradeNo: that.data.tradeNo, saleDate: saleDate, subject: app.openId, totalAmount: money, amount: money, shopId: that.data.order.storeId, cardNo: app.globalData.cardNo, body: "微信小程序点餐", sourceSign: "wechat", goodsDetails: JSON.stringify(goodsDetails) } console.log(params); var ignores = ["body", "sourceSign", "goodsDetails"]; app.jsapi.memberApi(app.globalData.memberAppKey, app.globalData.memberAppSecret, app.globalData.memberUrl).ajax(params, ignores, function(json) { console.log(json); var data = json.data; if (data.status == 1) { var result = data.data; that.cy_memberJwtradepayplatform(result); } else { wx.showToast({ title: data.errMessage, icon: "none" }) that.setData({ hidden: true }) } }, function(err) { wx.showToast({ title: '网络连接异常', icon: "none" }) that.setData({ hidden: true }) }); }, /** * 会员卡统一收单支付 */ cy_memberJwtradepayplatform: function(tempData) { var that = this; var cardInfo = wx.getStorageSync("cardInfo"); var cardPayInfo = [{ prepayment: tempData.prepayment, cardNo: app.globalData.cardNo, amount: tempData.totalAmount }]; var pays = [{ payTypeNo: "02", payType: "会员卡", money: tempData.totalAmount, }]; var params = { method: "jw.trade.pay.platform", tradeVoucherNo: tempData.tradeVoucherNo, // 交易参考号(预支付生成的订单号) tradeNo: tempData.tradeNo, // 商户订单号 totalAmount: tempData.totalAmount, // 订单总金额(精确到分) payCardAmount: tempData.totalAmount, // 刷卡总金额(精确到分) pointAmount: tempData.totalAmount, // 参与积分运算总金额(精确到分) shopId: that.data.order.storeId, // memberId: cardInfo.memberId, mobile: cardInfo.mobile, // realAmount: tempData.totalAmount, // 实收总金额(精确到分) // couponTotalAmount: "", // 优惠券总金额(精确到分) cardPayInfo: JSON.stringify(cardPayInfo), // 卡支付明细(参数值为JSON字符串,如果刷卡金额大于0,此项必填) pays: JSON.stringify(pays), // 支付方式明细(参数值为JSON字符串) } console.log("----------------", params); var ignores = ["memberId", "mobile", "realAmount", "cardPayInfo", "pays"]; app.jsapi.memberApi(app.globalData.memberAppKey, app.globalData.memberAppSecret, app.globalData.memberUrl).ajax(params, ignores, function(json) { console.log("会员卡统一支付"); console.log(json); var data = json.data; if (data.status == 1) { var result = data.data; that.cy_programorderpay(result); } else { wx.showToast({ title: data.errMessage, icon: "none", }) that.setData({ hidden: true }) } }, function(err) { console.log(err); that.setData({ hidden: true }) }); }, /** * 支付点上传 */ cy_programorderpay: function(tempData) { console.log("支付上传"); var that = this; var saleDate = app.utils.getFormatTime(new Date(), 1); var payCard = tempData.cardList[0]; var jsonString = myOrder.getMemberOrder(); jsonString.paid = app.utils.getTwo(payCard.amount / 100); jsonString.money = app.utils.getTwo(payCard.amount / 100); jsonString.cardNo = payCard.cardNo; jsonString.payNo = payCard.tradeVoucherNo; jsonString.payDate = saleDate; jsonString.voucherNo = tempData.tradeVoucherNo; console.log(jsonString); var params = { method: "program.order.pay", programId: app.globalData.programId, // openId: app.openId, // busNo: tempData.tradeNo, // jsonString: JSON.stringify(jsonString) }; console.log("支付上传"); console.log(params); var ignores = ["programId", "openId", "jsonString"]; app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { console.log(json); that.setData({ hidden: true }) var data = json.data; if (data.status == 1) { var result = data.data; if (that.data.busMode == 0 || that.data.busMode == 1) { wx.redirectTo({ url: '../order/balance/paySuccess?no=' + result.busNo, }) } if (that.data.busMode == 3) { wx.redirectTo({ url: '../order/balance/payOrderSuccess?no=' + result.busNo, }) } } else { that.setData({ hidden: true }) wx.showToast({ title: data.message, icon: "none" }) } }, function(err) { wx.showToast({ title: "网络连接失败,订单上传异常", icon: "none" }) that.setData({ hidden: true }) }); }, /** * 获取微信JSAPI支付参数 */ cy_programWeixinPay: function() { var that = this; var order = that.data.order; var busMode = that.data.busMode; var amount = 0; if (busMode == 0) { // 堂食 amount = order.receivable; } if (busMode == 1) { // 外带 amount = order.receivable + that.data.boxFee; } if (busMode == 3) { // 外卖 amount = order.receivable + that.data.boxFee + that.data.deliverFee; } var params = { method: "program.weixin.pay", storeId: order.storeId, programId: app.globalData.programId, appid: app.globalData.appid, openId: app.openId, tradeNo: order.no, amount: amount.toFixed(2), } console.log("微信支付", params); var ignores = ["appid", "openId", "tradeNo", "amount"]; app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { console.log(json); var data = json.data; if (data.status == 1) { that.setData({ hidden: true }) var param = data.data; that.cy_wxpay(param); } else { that.setData({ hidden: true }) wx.showToast({ title: data.message, icon: "none" }) } }, function(err) { console.log(err); that.setData({ hidden: true }) wx.showToast({ title: "网络连接异常,请检查", icon: "none" }) }); }, /** * 拉起微信支付 */ cy_wxpay: function(param) { console.log(param); var that = this; wx.requestPayment({ 'timeStamp': param.timeStamp, 'nonceStr': param.nonceStr, 'package': param.package, 'signType': param.signType, 'paySign': param.paySign, success: function(res) { console.log("cy_wxpay-success", res); that.cy_queryWXPayReult(); }, fail: function(res) { app.msg.showMsg("提示", "微信支付失败"); // wx.redirectTo({ // url: 'paySuccess?no=', // }) }, complete: function(res) { that.setData({ hidden: true, }); console.log("cy_wxpay-complete", res); } }) }, /** * 查询微信支付结果 */ cy_queryWXPayReult: function() { var that = this; var order = this.data.order; var params = { method: "program.weixin.pay.query", storeId: order.storeId, programId: app.globalData.programId, tradeNo: app.orderTicket.tradeNo } console.log(params); var ignores = ["tradeNo"]; app.jsapi.api(app.globalData.appKey, app.globalData.appSecret, app.globalData.serverUrl).ajax(params, ignores, function(json) { console.log(json); var data = json.data; if (data.status == 1) { if (that.data.busMode == 0 || that.data.busMode == 1) { wx.redirectTo({ url: '../order/balance/paySuccess?no=' + that.data.tradeNo, }) } if (that.data.busMode == 3) { wx.redirectTo({ url: '../order/balance/payOrderSuccess?no=' + that.data.tradeNo, }) } } else { wx.showToast({ title: data.message, icon: "none" }) } }, function(err) { console.log(err); }); }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function() { }, /** * 用户点击右上角分享 */ onShareAppMessage: function() { } })