扫描普通二维码打开小程序获取参数

小程序与线下对接的时候,用到普通二维码这个功能来知道连接上来的是哪台终端机,但是获取二维码参数的时候官方就一句话带过,现在记录一下配置以及获取的过程。
  • 首先在微信公众平台->开发->开发设置->扫普通链接二维码打开小程序里配置普通链接二维码规则
  • 在用户通过微信扫一扫打开小程序之后的页面onLoad中,原先使用option.参数的方法是获取不到值的。
    这是官方文档给的取值说明,但是在开发中发现真机测试、进入场景和体验版小程序都无法复现扫码进来的状态,最后只好打印发布在线上,然后通过线上打印的方式查看扫描的参数是什么。


    image.png
  • 图为线上版打印参数


    image.png
 onLoad: function (options) {
    console.log("index 生命周期 onload" + JSON.stringify(options))
    //在此函数中获取扫描普通链接二维码参数
    if(options.q){
      let q = decodeURIComponent(options.q);
      console.log("index 生命周期 onload url=" + q)
      console.log("index 生命周期 onload 参数 is_water=" + utils.getQueryString(q, 'is_water'))
      var is_water = utils.getQueryString(q, 'is_water');
      console.log(is_water);
      console.log("index 生命周期 onload 参数 access_token=" + utils.getQueryString(q, 'access_token'))
      var access_token = utils.getQueryString(q, 'access_token');
      console.log(access_token);
    }
 }
  • utils.js截取方法如下:
let getQueryString = function (url, name) {
  var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
  var r = url.substr(1).match(reg)
  if (r != null) {
    return r[2]
  }
  return null;
}

module.exports = {
  getQueryString: getQueryString
}
  • 通过上面方法即可获取普通二维码所携带的参数进行判断了

推荐阅读更多精彩内容