微信小程序扫码与支付功能,修改上一个页面内容

216 阅读2分钟
   //扫码功能
 const app = getApp();
function scanAction() {
  wx.scanCode({
     onlyFromCamera: false,
    scanType: ['qrCode', 'barCode', 'datamatrix', 'pdf417'],
       //结果处理
    success: res => dealScanCode(res.result),
    fail: (e) => {
        if (e && e.errMsg && e.errMsg.indexOf('scanCode:fail cancel') != -1) {
            return;
        }
        wx.showToast({ title: '扫码失败', icon: 'none', })
    }
  });
}


 // 判断连接
 function dealScanCode(result) {
   app.log("scan:" + result)
   if (!result || !result.lastIndexOf) {
       wx.showToast({ title: '二维码错误', icon: 'none', duration: 2000 })
      return;
    }

    // 具体的连接处理
      if (result.lastIndexOf('synthetical=') != -1) {
       bindAccount(result);
       return;
      }
  
 //无效的二维码
  wx.showToast({ title: '二维码错误', icon: 'none', duration: 2000 })
 }


   //处理连接
   function bindAccount(param){
    // 截取字符串
    let groupNum = getUrlParam(param, 'chatID')
   let groupType = getUrlParam(param, 'type');
   }

   // 提供外部的接口
    module.exports = {
       scanAction,
     dealScanCode,
     getUrlParam
    }


  // 正则表达式截取字符串的方法
    function getUrlParam(url, name) {
       // 正则筛选地址栏
       let reg = new RegExp("(^|&|/?|//)" + name + "=([^&]*)(&|$)");
      // 匹配目标参数
     let result = url.substr(1).match(reg);
     //返回参数值
      return result ? decodeURIComponent(result[2]) : null;
  }
  
  
 支付功能部分
``` // 获取订单号
  onLinePayCostBill(e) {
    var that = this;
    util.request(api.onLinePayCostBill, {
        id: e.currentTarget.dataset.orderid
      }, 'POST')
      .then(function (res) {
        if (res.errcode == 0) {
          console.log(res);
          that.data.order_id = res.data.order_id;
          that.wxPay()
        }
      });
  },
  wxPay() {
    let that = this;
    util.request(api.OrderPrepay, {
      order_id: that.data.order_id
    }, 'POST').then(function (res) {
      if (res.errcode == 0) {
        console.log("支付过程开始");
        wx.requestPayment({
          timeStamp: res.data.timeStamp,
          nonceStr: res.data.nonceStr,
          package: res.data.package,
          signType: res.data.signType,
          paySign: res.data.paySign,
          success: function (res) {
            console.log("支付过程成功");
            wx.showModal({
              title: '提示',
              content: '预约成功。',
              showCancel: false,
            })
          },
          fail: function (res) {
            console.log("支付过程失败");

          },
          complete: function (res) {
            console.log("支付过程结束")
          }
        });
      } else {

      }

    });
  },
  
  修改上一个页面
   let pages = getCurrentPages(); //获取当前页面pages里的所有信息。
    let prevPage = pages[pages.length - 2]; //prevPage 是获取上一个页面的js里面的pages的所有信息。 -2 是上一个页面,-3是上上个页面以此类推。

    if (this.data.index) {
      //修改
      let name = prevPage.pro_name(this.data.index);
      let intro = prevPage.pro_intro(this.data.index);
      let pic = prevPage.pro_pic(this.data.index);
      prevPage.setData({  // 将我们想要传递的参数在这里直接setData。上个页面就会执行这里的操作。
        [name]: this.data.name,
        [intro]: this.data.intro,
        [pic]: this.data.pic,
      })
  
  
  var pages = getCurrentPages() //获取加载的页面
 
var currentPage = pages[pages.length-1] //获取当前页面的对象
 
var url = currentPage.route //当前页面url
 
var options = currentPage.options //如果要获取url中所带的参数可以查看options
可以写成工具函数放到utils中:

/*获取当前页url*/
function getCurrentPageUrl(){
var pages = getCurrentPages() //获取加载的页面
var currentPage = pages[pages.length-1] //获取当前页面的对象
var url = currentPage.route //当前页面url
return url
}
 
/*获取当前页带参数的url*/
function getCurrentPageUrlWithArgs(){
var pages = getCurrentPages() //获取加载的页面
var currentPage = pages[pages.length-1] //获取当前页面的对象
var url = currentPage.route //当前页面url
var options = currentPage.options //如果要获取url中所带的参数可以查看options
 
//拼接url的参数
var urlWithArgs = url + '?'
for(var key in options){
var value = options[key]
urlWithArgs += key + '=' + value + '&'
}
urlWithArgs = urlWithArgs.substring(0, urlWithArgs.length-1)
 
return urlWithArgs
}
 
module.exports = {
getCurrentPageUrl: getCurrentPageUrl,
getCurrentPageUrlWithArgs: getCurrentPageUrlWithArgs
}