// pages/cashier_pay/cashier_pay.js // var WxParse = require('../../../wxParse/wxParse.js'); var yz_pay = require("../../../mycomponent/yz_pay/yz_pay"); var app = getApp(); Page({ behaviors: [yz_pay], /** * 页面的初始数据 */ data: { language: "", //是否显示支付协议 agreementPayData: "", agreementPay: false, agreementPayShow: false, store_id: "", confirmOrderStatus: false, payMuch: "0", realname: "", //收件人 mobile: "", //优惠券 popupCouponSpecs: false, checkCouponList: [], coupon_size: 0, use_coupon_size: 0, coupons: [], //支付 order_ids: "", income: { money_total: 0.0, sure_withdraw_money: 0.0, }, store_set: { is_cash_pay: "", is_open_cashier: "", is_write_information: "", }, payPrice: 0, //积分抵扣 其他抵扣 checkDeductionList: [], form: { mobile: "", realname: "", }, allData: {}, order_data: "", loadDiscount: false, goods_price: 0.0, dispatch_price: 0.0, discount_price: 0, price: 0.0, deduction_price: 0, payType: [], typename: "", show1: false, clicktag: 0, uid: "", cashier_type: "", hotel_id: "", order_pay_id: "", //消费红包 showPacket: false, redirectData: {}, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { var info_arr = []; if (options.scene) { let scene = decodeURIComponent(options.scene); console.log(scene); if (scene) { info_arr = scene.split(","); for (let i = 0; i < info_arr.length; i++) { let chil_arr = []; chil_arr = info_arr[i].split("="); console.log(chil_arr); if (chil_arr[0] == "store_id") { this.setData({ store_id: chil_arr[1], }); } if (chil_arr[0] == "hotel_id") { this.setData({ hotel_id: chil_arr[1], }); } if (chil_arr[0] == "mid") { app._setMid(chil_arr[1]); } } } } if (options.q) { let qscen = decodeURIComponent(options.q); console.log(qscen); if (qscen) { let scene = decodeURIComponent(options.q); if (scene) { if (scene.indexOf("?i=") == "-1") { info_arr = scene.split(","); } else { let arr = scene.split("&"); info_arr = arr[1].split(","); } for (let i = 0; i < info_arr.length; i++) { let chil_arr = []; chil_arr = info_arr[i].split("="); if (chil_arr[1] == "store_id") { this.setData({ store_id: chil_arr[2], }); } if (chil_arr[0] == "mid") { app._setMid(chil_arr[1]); } } } } } if (options.hotel_id) { this.setData({ hotel_id: options.hotel_id, }); } if (app._isTextEmpty(this.data.hotel_id)) { this.setData({ cashier_type: "store", }); } else { this.setData({ cashier_type: "hotel", }); } if (options.store_id) { this.setData({ store_id: options.store_id, }); } if(options.cashier_type){ this.setData({ cashier_type:options.cashier_type }); } if(this.data.cashier_type == "scanning_payment"){ this.setData({ payMuch:options.price, show1:true, showPage:true }); wx.setNavigationBarTitle({ title: '扫码下单', }); this.preGoodsBuy(); }else { this.getCenter(); } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { let language = wx.getStorageSync("langIndex"); this.setData({ language: language.en, }); }, /** * 生命周期函数--监听页面显示 */ onShow: function () {}, /** * 用户点击右上角分享 */ onShareAppMessage: function () {}, onShareTimeline(){}, fromChild(e){ if(this.data.money=='0.00') { // 0元 this.sureBtn(); }else { let datas = e.detail.submitArr; this.submit(datas); } }, onClickHide() { this.setData({ showPacket: false, }); this.toRedirect(); }, toPacket() { wx.redirectTo({ url: "/packageE/ConsumePacket/ConsumePacketSuccess/ConsumePacketSuccess?order_id=" + this.data.order_ids.toString(), }); }, // 消费红包 checkoutConsumePacket() { this.getVoiceSet(); let basicinfo = wx.getStorageSync("yz_basic_info"); if (basicinfo && basicinfo.globalParameter.consume_red_packet_status == 1) { let urlStr = app.getNetAddresss("plugin.consume-red-packet.Frontend.Modules.Packet.Controllers.has.index"); app._postNetWork({ url: urlStr, data: { order_id: this.data.order_ids.split(","), }, success: (resdata) => { var res = resdata.data; if (res.result == 1) { this.setData({ show1: false, showPacket: true, }); } else { this.toRedirect(); } }, fail: (res) => { this.toRedirect(); console.log(res); }, }); } else { this.toRedirect(); } }, toRedirect() { wx.showToast({ icon: "none", title: "支付成功", duration: 2000, }); if (this.data.order_sn) { this.payCallBack(); } // wx.showModal({ // title: "提示", // content: "支付成功", // showCancel: false, // success: (res) => { // if (res.confirm) { // if (this.data.redirectData.cashPay) { // wx.reLaunch({ // url: "/packageG/member_v2/member_v2", // }); // } else if (!app._isTextEmpty(this.data.min_redirect_url)) { // try { // wx.redirectTo({ // url: this.data.min_redirect_url, // }); // } catch (e) { // console.log(e); // } // } else { // wx.reLaunch({ // url: "/packageG/index/index", // }); // } // } // }, // }); }, getVoiceSet() { //判断是否开启语音播报 // let that = this; let urlStr = app.getNetAddresss("plugin.store-cashier.frontend.cashier.voice.index"); app._postNetWork({ url: urlStr, data: { order_id: this.data.order_ids, }, success: (resdata) => { var res = resdata.data; if (res.result == 1) { // const bgMusic = wx.createInnerAudioContext(); const bgMusic = wx.getBackgroundAudioManager(); //音乐播放实例 // //bug ios 播放时必须加title 不然会报错导致音乐不播放 bgMusic.title = "支付成功语音提示"; bgMusic.src = res.data.url; bgMusic.play(); // bgMusic.src = `data:audio/x-wav;base64,${res.data.speech}`; // bgMusic.src = 'https://dev4.yunzmall.com/attachment/audios/0/2021/05/556f15b68d5d2c1886e2e470e6f1cda9.mp3' } else { console.log(res); } }, fail: function (res) { console.log(res); }, }); }, PayShowbtn() { this.setData({ agreementPayShow: false, }); }, initStore(data) { this.setData({ confirmOrderStatus: false, payMuch: "0", realname: "", mobile: "", popupCouponSpecs: false, order_ids: "", }); if (this.data.cashier_type === "hotel") { // 酒店没有用到,这是用来统计门店订单的 任务编号: 54992 // this.setData({ // store: data.hotel, // store_set: data.hotel_set // }) } else { this.setData({ store: data.store, store_set: data.store_set, income: data.income, }); if(data.store_set.is_open_cashier != 1) { // 该门店没有开启收银台 app.confirm('该门店没有开启收银台',()=> { wx.navigateBack({ delta: 1, fail: ()=> { wx.reLaunch({ url: '/packageG/index/index', }); } }); },false); } } }, //处理按键 _handleKeyPress(e) { let num = e.currentTarget.dataset.num; //不同按键处理逻辑 // -1 代表无效按键,直接返回 if (num == -1) return false; switch (String(num)) { //小数点 case ".": this._handleDecimalPoint(); break; //删除键 case "D": this._handleDeleteKey(); break; //确认键 case "S": this._handleConfirmKey(); break; default: this._handleNumberKey(num); break; } }, //处理小数点函数 _handleDecimalPoint() { //如果包含小数点,直接返回 if (this.data.payMuch.indexOf(".") > -1) { return false; } //如果小数点是第一位,补0 if (!this.data.payMuch.length) { this.setData({ payMuch: "0.", }); } else { //如果不是,添加一个小数点 this.setData({ payMuch: this.data.payMuch + ".", }); } }, //处理删除键 _handleDeleteKey() { let S = this.data.payMuch; //如果没有输入,直接返回 if (S.length <= 1) { this.setData({ payMuch: "0", }); return; } //否则删除最后一个 this.setData({ payMuch: S.substring(0, S.length - 1), }); }, _handleConfirmKey() { let S = this.data.payMuch; //未输入 if (!S.length || Number(S) === 0) { wx.showToast({ icon: "none", title: "您目前未输入!", duration: 1500, }); return false; } //将 8. 这种转换成 8.00 if (S.indexOf(".") > -1 && S.indexOf(".") === S.length - 1) { S = Number(S.substring(0, S.length - 1)).toFixed(2); } //保留两位 S = Number(S).toFixed(2); this.setData({ payMuch: S, }); this.confirmOrder(); }, confirmOrder() { var val = this.data.payMuch; if (val && val > 0) { this.setData({ payPrice: val, confirmOrderStatus: true, isdisabled: true, }); this.preGoodsBuy(); } else { wx.showToast({ icon: "none", title: "请输入正确的付款金额!", duration: 1500, }); this.setData({ confirmOrderStatus: false, isdisabled: false, }); } }, //处理数字 _handleNumberKey(num) { let S = this.data.payMuch; //如果有小数点且小数点位数不小于2 if (S.indexOf(".") > -1 && S.substring(S.indexOf(".") + 1).length < 2) { this.setData({ payMuch: S + num, }); } //没有小数点 if (!(S.indexOf(".") > -1)) { //如果第一位是0,只能输入小数点 if (num == 0 && S.length == 0) { this.setData({ payMuch: "0.", }); } else { if (S.length && Number(S.charAt(0)) === 0) { this.setData({ payMuch: num, }); return; } this.setData({ payMuch: S + num, }); } } }, //直接购买 preGoodsBuy() { let that = this; let urlStr = ""; if (this.data.cashier_type == "hotel") { urlStr += app.getNetAddresss("plugin.hotel.frontend.Order.goods-buy"); urlStr += "&price=" + this.data.payPrice; urlStr += "&hotel_id=" + this.data.hotel_id; urlStr += "&member_coupon_ids=" + this.assembleCoupons(); urlStr += "&orders=" + JSON.stringify(this.assembleDeduction()); urlStr += "&mobile=" + this.data.form.mobile; urlStr += "&realname=" + this.data.form.realname; } else if(this.data.cashier_type == "scanning_payment"){ urlStr += app.getNetAddresss("plugin.sweep-buy.frontend.controllers.goods-buy.index"); urlStr += "&member_coupon_ids=" + this.assembleCoupons(); urlStr += "&price=" + this.data.payMuch; urlStr += "&goods_id=" + this.options.goods_id; urlStr += "&orders=" + JSON.stringify(this.assembleDeduction()); }else { urlStr += app.getNetAddresss("plugin.store-cashier.frontend.Order.goods-buy"); urlStr += "&price=" + this.data.payPrice; urlStr += "&store_id=" + this.data.store_id; urlStr += "&member_coupon_ids=" + this.assembleCoupons(); urlStr += "&orders=" + JSON.stringify(this.assembleDeduction()); urlStr += "&mobile=" + this.data.form.mobile; urlStr += "&realname=" + this.data.form.realname; } if (this.data.clicktag == 0) { this.setData({ clicktag: 1, }); app._getNetWork({ url: urlStr, success: function (resdata) { var res = resdata.data; if (res.result == 1) { if(res.data.balance){ that.setData({ balanceNow:res.data.balance }); } that.setViewData(res.data); //设置界面 // if (that.data.cashier_type != "hotel") { that.initCoupon(res.data.discount); //设置优惠券信息 // } that.initPayType(); } else { wx.showModal({ title: "提示", content: res.msg, showCancel: false, success(res) { if (res.confirm) { wx.navigateBack({ delta: 1, }); } }, }); } setTimeout(function () { that.setData({ clicktag: 0, }); }, 1000); }, fail: function (res) { console.log(res); }, }); } }, //组装优惠券json信息 assembleCoupons() { let coupons = []; for (let i = 0; i < this.data.checkCouponList.length; i++) { coupons.push(this.data.checkCouponList[i].id); } return coupons; }, //组装优惠抵扣信息 assembleDeduction() { let deductions = []; for (let i = 0; i < this.data.checkDeductionList.length; i++) { deductions.push(this.data.checkDeductionList[i]); } return deductions; }, //设置界面 setViewData(data) { // console.log(data.orders, '55454'); this.setData({ allData: data, order_data: data.orders, loadDiscount: true, goods_price: data.total_goods_price, //设置商品总价格 dispatch_price: data.total_dispatch_price, //设置总运费价格 deduction_price: data.total_deduction_price, //设置总抵扣价格 price: data.total_price, //设置总价格(合计) // 服务费 service: data.orders[0].order_fees, datas: data.orders[0], }); if (this.data.cashier_type != "hotel") { this.setData({ discount_price: data.total_discount_price, //设置总优惠价格 }); } }, //初始化优惠券 initCoupon(data) { this.setData({ isShowCoupon: data.whether_show_coupon == "1" ? true : false, }); let coupon = data.member_coupons; if (coupon != undefined && coupon != "" && coupon != null) { this.setData({ coupon_size: coupon.length, }); } this.setData({ coupons: coupon, }); }, initPayType() { let that = this; let urlStr = ""; if (this.data.cashier_type === "hotel") { urlStr += app.getNetAddresss("plugin.hotel.frontend.payment.list"); urlStr += "&hotel_id=" + this.data.hotel_id; urlStr += "&price=" + this.data.payMuch; } else if(this.data.cashier_type == "scanning_payment"){ urlStr += app.getNetAddresss("plugin.sweep-buy.frontend.controllers.payment.list"); urlStr += "&price=" + this.data.payMuch; } else { urlStr += app.getNetAddresss("plugin.store-cashier.frontend.payment.list"); urlStr += "&store_id=" + this.data.store_id; urlStr += "&price=" + this.data.payMuch; } app._getNetWork({ url: urlStr, success: function (resdata) { var res = resdata.data; if (res.result == 1) { let payTypeData = res.data; let arr = {}; arr.buttons = res.data; that.hanleIcon(arr); that.setData({ payType: payTypeData, typename: "支付", show1: true, }); } else { wx.showToast({ title: res.msg, icon: "none", duration: 1500, success: function () { setTimeout(function () { //要延时执行的代码 wx.navigateBack({ delta: 1, }); }, 1500); //延迟时间 }, }); } }, fail: function (res) { console.log(res); }, }); }, btnstyle(type) { if (type == 1 || type == 6 || type == 9 || type == 12 || type == 20 || type == 22) { return "#64b42e"; } else if (type == 2 || type == 7 || type == 10 || type == 15 || type == 21) { return "#069ce7"; } else if (type == 3) { return "#fc992c"; } else if (type == 14) { return "#e36724"; } else if (type == 18) { return "#dedede"; } else { return "#fac337"; } }, btnclass(type) { if (type == 1 || type == 6 || type == 9 || type == 12 || type == 20 || type == 22) { return "icon-pay_b"; } else if (type == 2 || type == 7 || type == 10 || type == 15 || type == 21) { return "icon-pay_c"; } else if (type == 3) { return "icon-pay_d"; } else if (type == 14) { return "icon-pay_f"; } else if (type == 18) { return "card"; } else { return "icon-pay_a"; } }, show1btn() { this.setData({ show1: false, }); }, //抵扣选择响应 discountHandle(e) { let bol = e.detail; let code = e.currentTarget.dataset.d.code; let index = e.currentTarget.dataset.index; console.log(this.data.order_data[0], this.data.order_data[0].order_deductions[index]); //处理选择 this.screenDiscount(this.data.order_data[0], { checked: bol, code: code, }); //重新计算 this.preGoodsBuy(); //直接购买 }, //筛选抵扣 screenDiscount(item, value) { this.deductionListHandle(item, value); }, deductionListHandle(item, value) { let checkDeductionList = this.data.checkDeductionList; // let service_fee = this.data.service_fee; // let note = this.data.note; let isHasPreId = false; if (checkDeductionList.length > 0) { checkDeductionList.forEach((deduction, index) => { if (deduction && deduction.pre_id == item.pre_id) { isHasPreId = true; if (value && value.checked) { // 选中的时候检查是否有对应的code if (deduction.deduction_ids && deduction.deduction_ids.indexOf(value.code) == -1) { deduction.deduction_ids.push(value.code); } } else if (value && !value.checked) { // 取消选中的时候检查去掉对应的code if (deduction.deduction_ids && deduction.deduction_ids.indexOf(value.code) > -1) { deduction.deduction_ids.splice(deduction.deduction_ids.indexOf(value.code), 1); } } // 留言和安装选项重新赋值 // deduction.note = note[item.pre_id]; // deduction.service_fee = service_fee[item.pre_id]; } }); } if (!isHasPreId) { checkDeductionList.push({ deduction_ids: value && value.code ? [value.code] : [], pre_id: item.pre_id, }); } this.setData({ checkDeductionList }); // console.log('checkDeductionList:', this.data.checkDeductionList) }, //优惠券 showCoupon() { if (this.data.coupon_size == 0) { wx.showToast({ icon: "none", title: "暂无优惠券使用", duration: 1500, }); return; } this.setData({ popupCouponSpecs: true, }); }, //选择优惠券 selectCoupon(e) { let couponBol = e.detail; let index = e.currentTarget.dataset.index; // let item = e.currentTarget.dataset.item; this.setData({ ["coupons[" + index + "].checked"]: couponBol, }); //处理选择 //因为换了组件改调用方法 this.screenCoupon(couponBol, this.data.coupons[index]); //设置view this.setCouponView(); //重新计算 this.preGoodsBuy(); //直接购买 }, //筛选数据优惠券状态 screenCoupon(value, valObj) { var tarValue = valObj; if (value) { //选中添加 if (this.data.checkCouponList.length > 0) { for (let i = 0; i < this.data.checkCouponList.length; i++) { if (this.data.checkCouponList[i].id == tarValue.id) { this.data.checkCouponList.splice(i, 1); } } let checkCouponList = this.data.checkCouponList; checkCouponList.push(tarValue); this.setData({ checkCouponList: checkCouponList, }); } else { let checkCouponList = this.data.checkCouponList; checkCouponList.push(tarValue); this.setData({ checkCouponList: checkCouponList, }); } } else { //取消选中 if (this.data.checkCouponList.length > 0) { for (let i = 0; i < this.data.checkCouponList.length; i++) { if (this.data.checkCouponList[i].id == tarValue.id) { let checkCouponList = this.data.checkCouponList; checkCouponList.splice(i, 1); this.setData({ checkCouponList: checkCouponList, }); } } } } }, //设置view setCouponView() { this.setData({ use_coupon_size: this.data.checkCouponList.length, }); }, //关闭优惠卷 couponclose() { this.setData({ popupCouponSpecs: false, }); }, realnameinp(e) { let val = e.detail.value; this.setData({ "form.realname": val, }); }, mobileinp(e) { let val = e.detail.value; this.setData({ "form.mobile": val, }); }, agreementPayinp(e) { let bol = e.detail; this.setData({ agreementPay: bol, }); }, showPay() { this.setData({ agreementPayShow: true, }); }, //提交订单 submit(btn) { let val = btn; let that = this; let urlStr = ""; if (this.data.cashier_type == "hotel") { urlStr += app.getNetAddresss("plugin.hotel.frontend.Order.create"); urlStr += "&price=" + this.data.payMuch; urlStr += "&hotel_id=" + this.data.hotel_id; urlStr += "&member_coupon_ids="; urlStr += "&orders="; urlStr += "&mobile=" + this.data.form.mobile; urlStr += "&realname=" + this.data.form.realname; } else if(this.data.cashier_type == "scanning_payment"){ urlStr += app.getNetAddresss("plugin.sweep-buy.frontend.controllers.create.index"); urlStr += "&price=" + this.data.payMuch; urlStr += "&goods_id=" + this.options.goods_id; } else { urlStr += app.getNetAddresss("plugin.store-cashier.frontend.Order.create"); urlStr += "&price=" + this.data.payMuch; urlStr += "&store_id=" + this.data.store_id; urlStr += "&member_coupon_ids=" + JSON.stringify(this.assembleCoupons()); urlStr += "&orders=" + JSON.stringify(this.assembleDeduction()); urlStr += "&mobile=" + this.data.form.mobile; urlStr += "&realname=" + this.data.form.realname; } if (this.data.clicktag == 0) { this.setData({ clicktag: 1, }); if (this.data.agreementPayData) { if (!this.data.agreementPay) { this.setData({ clicktag: 0, }); wx.showToast({ icon: "none", title: "请先勾选支付协议", duration: 1500, }); return; } } app._getNetWork({ url: urlStr, success: function (resdata) { var res = resdata.data; if (res.result == 1) { that.setData({ order_ids: res.data.order_ids, }); that.getMultipleOrderInfo(val); } else { wx.showToast({ icon: "none", title: res.msg, duration: 1500, }); that.data.isPayClick = false; } setTimeout(function () { that.setData({ clicktag: 0, }); }, 1000); }, fail: function (res) { console.log(res); }, }); } }, //多订单合并支付获取信息接口方法 getMultipleOrderInfo(val) { let urlStr = app.getNetAddresss("order.merge-pay"); urlStr += "&order_ids=" + this.data.order_ids; urlStr += "&pid=" + this.data.uid; app._getNetWork({ url: urlStr, success: (resdata) => { var res = resdata.data; if (res.result == 1) { this.setData({ order_sn: res.data.order_pay.pay_sn, balance: res.data.member.credit2, money: res.data.order_pay.amount, uid: res.data.order_pay.uid, order_pay_id: res.data.order_pay.id, buttons: res.data.buttons, min_redirect_url: res.data.min_redirect_url, }); this.handlePay(val, val.value); } else { wx.showModal({ title: "提示", content: res.msg, success(res) { if (res.confirm) { wx.reLaunch({ url: "/packageG/index/index", }); console.log("用户点击确定"); } else if (res.cancel) { console.log("用户点击取消"); } }, }); this.data.isPayClick = false; } }, fail: function (res) { console.log(res); }, }); }, getCenter() { let that = this; let urlStr = ""; let json = {}; console.log(this.data.store_id, "getCenter的store_id"); if (this.data.cashier_type === "hotel") { json = { hotel_id: this.data.hotel_id, }; urlStr = app.getNetAddresss("plugin.hotel.frontend.cashier.center.index"); } else { json = { store_id: this.data.store_id, }; urlStr = app.getNetAddresss("plugin.store-cashier.frontend.cashier.center.getPaySet"); } app._getNetWork({ url: urlStr, data: json, success: function (resdata) { var res = resdata.data; if (res.result == 1) { if (that.data.cashier_type === "hotel") { that.initStore(res.data.get_hotel_info); } else { that.initStore(res.data.get_store_info); } that.setData({ agreementPayData: res.data.get_pay_protocol, }); } else { wx.showToast({ title: res.msg, icon: "none", duration: 1500, }); } }, fail: function (res) { console.log(res); }, }); }, });