uniapp扫小程序普通二维码链接进入小程序,获取二维码链接的参数方法不一致问题
微信小程序获取参数方法 参考文档:扫普通链接二维码打开小程序 | 微信开放文档
二维码内容获取
在小程序后台配置二维码跳转小程序规则之后即可使用微信(6.5.6及其以上客户端版本)扫码打开小程序。
二维码链接内容会以参数 q 的形式带给页面,在onLoad事件中提取 q 参数并自行 decodeURIComponent 一次(对于小游戏可使用 wx.getEnterOptionsSync 接口获取),即可获取原二维码的完整内容。同时会附加一个参数 scancode_time(UNIX 时间戳,单位秒),表示用户扫码的时间。
Page({onLoad(query){constq=decodeURIComponent(query.q)// 获取到二维码原始链接内容constscancode_time=parseInt(query.scancode_time)// 获取用户扫码时间 UNIX 时间戳}})
支付宝小程序获取参数方法 参考文档:关联普通二维码 | 小程序
获取二维码码值请在小程序 app.js 文件的 app() 的 onLaunch() 方法中使用 options.query 获取,代码示例如下:
说明:代码只能获取二维码码值,自定义参数值请自行获取。
onLaunch(options){my.alert({title:'app onLaunch',content:JSON.stringify(options),success: (res)=>{//成功处理代码段 }, });//获取关联普通二维码的码值,放到全局变量qrCode中if(options.query&&options.query.qrCode) {this.qrCode=options.query.qrCode; } }
参数名描述
path当前路径。若没有填写目标页面,那么当前路径为首页(如下图);若填写则返回目标页面的路径。
qrCode二维码码值。
发布
测试完成后开发者可将二维码跳转规则发布上线,发布后扫描所有符合匹配规则的二维码,将跳转至指定的小程序页面。
IDE 调试启动参数
比如普通二维码码值是 http://商户网站域名?bb=cc&dd=ff
对其做 URLENCODE ,得到 http%3a%2f%2f%e5%95%86%e6%88%b7%e7%bd%91%e7%ab%99%e5%9f%9f%e5%90%8d%3fbb%3dcc%26dd%3dff。
打开 IDE 顶部功能区中的添加编译模式,选择自定义编译。
在之前得到的参数前面加上 “qrCode=” 后填入启动参数并确认。
在模拟器中进行调试。
注意:支付宝小程序的二维码链接只能通过app.vue页面里的onLaunch中以参数options.query.qrCode带进来,不能直接在页面onLoad里获取
实际项目运用
if (query.q) { // 扫码进入微信小程序,微信小程序二维码链接是以参数q传进来的
let url = decodeURIComponent(query.q) //解码url
this.serverOrderId = this.$getParams(url, 'serverOrderId')
this.txnType = this.$getParams(url, 'txnType')
} else if (query.serverOrderId) {//正常页面跳转
this.serverOrderId = query.serverOrderId
this.query = query
this.txnType = query.txnType
this.inviteRefundUserId = query.inviteRefundUserId //收银员邀请管理员退款的收银员userid
} else { //扫码进入支付宝小程序,// 支付宝小程序的二维码链接只能通过app.vue页面里的onLaunch中以参数options.query.qrCode带进来
this.txnType = this.$getParams(this.$store.state.orderDetail_qrcode, 'txnType')
this.serverOrderId = this.$getParams(this.$store.state.orderDetail_qrcode, 'serverOrderId')
}