// pages/order/order.js let Util = require("../../utils/util"); let log = require('../../utils/log.js'); Page({ /** * 页面的初始数据 */ data: { orderid: null, userId: null, chargPileId: null, order: null, startTime: null, endTime: null, totalTime: null, orderFlag:false }, payOrder(e) { log.info('[订单支付]', '[用户触发支付订单]'); wx.showLoading({ title: '支付中...', mask: true }); console.log('去支付'); console.log(this.order); let that = this; let { order, userId } = this.data; log.info('[订单支付]', '[用户触发支付订单]', '[wx.login请求]'); wx.login({ success(res) { console.log(res); log.info('[订单支付]', '[用户触发支付订单]', '[wx.login响应]',res); if (res.code) { // 发起网络请求 log.info('[订单支付]', '[服务端订单支付]', '[请求]', { outTradeNo: order.orderid, //订单号 totalFee: order.chargallmoney, //钱 code: res.code, user_id: userId }); wx.request({ url: getApp().globalData.postHeadAgreement +'/restapi/wechatpay/chargpayfor', data: { outTradeNo: order.orderid, //订单号 totalFee: order.chargallmoney, //钱 code: res.code, user_id: userId }, method: 'POST', header: { 'content-type': 'application/x-www-form-urlencoded;charset=utf-8', }, success(res1) { let { data } = res1; log.info('[订单支付]', '[服务端订单支付]', '[响应]', data); console.log(res1); if (data && data.code == 200) { if (data.result) { //wx.showModal({ // showCancel: false, // content: '请微信支付' // }); log.info('[订单支付]', '[余额不足微信支付]','[请求]',{ timeStamp: data.result.timeStamp, nonceStr: data.result.nonceStr, package: data.result.package, signType: data.result.signType, paySign: data.result.paySign}); wx.requestPayment({ timeStamp: data.result.timeStamp, nonceStr: data.result.nonceStr, package: data.result.package, signType: data.result.signType, paySign: data.result.paySign, success(res2) { log.info('[订单支付]', '[余额不足微信支付成功]', '[响应]', res2); log.info('[订单支付]', '[微信支付成功回调服务端]', '[请求]', { //chargPileId, //userId, orderid: order.orderid }); wx.request({ url: getApp().globalData.postHeadAgreement +'/restapi/pileLog/wechatpayback', data: { //chargPileId, //userId, orderid: order.orderid }, method: 'POST', success(res3) { wx.hideLoading(); let { data } = res3; log.info('[订单支付]', '[微信支付成功回调服务端]', '[响应]', data); if (data && data.code == 200) { that.setData({ orderFlag:true }); wx.showModal({ showCancel: false, content: '支付订单成功' }); log.info('[订单支付]', '[微信支付成功回调服务端]', '[成功]'); } else { wx.showModal({ showCancel: false, content: '支付订单失败' }); log.info('[订单支付]', '[微信支付成功回调服务端]', '[失败data null||data.code<>200]', data); } } }); }, fail(res3) { wx.hideLoading(); log.info('[订单支付]', '[余额不足微信支付]', '[fail]', res3); console.log(res3); } }); } else { wx.hideLoading(); that.setData({ orderFlag: true }); wx.showModal({ showCancel: false, content: data.msg }); } log.info('[订单支付]', '[服务端订单支付]', '[余额支付成功]', data); } else { wx.hideLoading(); wx.showModal({ showCancel: false, content: data.msg }); log.info('[订单支付]', '[服务端订单支付]', '[失败data null||data.code<>200]', data); } } }); } else { wx.hideLoading(); console.log('登录失败!' + res.errMsg); log.info('[订单支付]', '[用户触发支付订单]', '[wx.login响应失败code null]', res); } } }); }, /** * 生命周期函数--监听页面加载 */ onLoad: function(options) { let i = 0; let { orderid, userId, chargPileId } = options; log.info('[订单支付]', '[加载完成]', '[参数]', { orderid, userId, chargPileId }); this.setData({ orderid, userId, chargPileId }); var that = this; wx.showLoading({ title: '订单生成中...', mask:true }); var timeoutflag = setInterval(function() { i++; log.info('[订单支付]', '[轮训获取订单]', '[请求]', { chargPileId, userId, orderid }); wx.request({ url: getApp().globalData.postHeadAgreement +'/restapi/pileLog/wechatsettlement_new', data: { chargPileId, userId, orderid }, method: 'POST', success(res) { let { data } = res; log.info('[订单支付]', '[轮训获取订单]', '[响应]', data); let { result: order } = data; if (data && data.code == 200) { if (order.transstatus==3){ //order.paystatus=1; //order.chargstarttime='2020-10-19 10:00:00'; //order.chargendtime = '2020-10-19 10:20:20'; wx.hideLoading(); clearInterval(timeoutflag); log.info('[订单支付]', '[轮训获取订单]', '[订单transstatus状态3]可手动支付'); } // if (order.chargallmoney && order.chargpower) { // wx.hideLoading(); // clearInterval(timeoutflag); // } //wx.showModal({ //showCancel: false, //content: '获取订单成功' //}); var startDate = new Date(order.chargstarttime); var endDate = new Date(order.chargendtime); var totalTime = Math.floor((endDate.getTime() - startDate.getTime()) / 60000); var totalTimeHour = Math.floor(totalTime / 60); var totalTimeMinute = totalTime % 60; var startTime = Util.formatNumber(startDate.getMonth() + 1) + '月' + Util.formatNumber(startDate.getDate()) + '日 ' + Util.formatNumber(startDate.getHours()) + ':' + Util.formatNumber(startDate.getMinutes()) + ':' + Util.formatNumber(startDate.getSeconds()); var endTime = Util.formatNumber(endDate.getMonth() + 1) + '月' + Util.formatNumber(endDate.getDate()) + '日 ' + Util.formatNumber(endDate.getHours()) + ':' + Util.formatNumber(endDate.getMinutes()) + ':' + Util.formatNumber(endDate.getSeconds()); totalTime = Util.formatNumber(totalTimeHour) + "时" + Util.formatNumber(totalTimeMinute) + "分"; that.setData({ order, startTime, endTime, totalTime }); //console.log(that.data.result); } else { //wx.hideLoading(); if (i>=60){ clearInterval(timeoutflag); log.info('[订单支付]', '[轮训获取订单]', '[60S超时]', data); wx.showModal({ showCancel: false, content: '获取订单失败' }); } } }, fail(err) { wx.hideLoading(); clearInterval(timeoutflag); log.info('[订单支付]', '[轮训获取订单]', '[fail]', err); wx.showModal({ showCancel: false, content: '获取订单失败' }); } }); }, 1000); }, closeView:function(){ let url = `/pages/index/index`; wx.redirectTo({ url }); }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function() { }, /** * 生命周期函数--监听页面显示 */ onShow: function() { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function() { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function() { }, /** * 用户点击右上角分享 */ onShareAppMessage: function() { } })