最近公司项目有个扫码打开订单付款的功能大概是这样的(uniapp 项目)

微信支付暂且不说网上教程也很丰富

重点讲讲支付宝(吐槽下支付宝小程序审核,真是太慢了,一天只能审核大概3-4次 每次审核要耗时 好几个小时)

基本开发思路是这样的(vue/uni-app):

1.打开页面前获取传入参数(onload)2.根据传入参数发起网络请求获取订单详情3.根据平台发起支付

在微信上很顺利的成功获取到微信扫码传来的参数(q)注意这个q 在微信扫描获取到的参数(例如:https://test.com/orderNo/1111222)在微信扫码的情况下得到的数据是这样的:

 {q: "https%3A%2F%2Fbdtest.com%2Forder%2F111222"}

在支付宝扫码获取到的参数是这样的:

{"path":"pages/index/index","query":{"qrCode":"https://test.com/orderNo/111222"}}

 注意!注意!注意!

 微信获取参数是在 onLoad 下面 。支付宝不是 支付宝不是 支付宝不是 支付宝需要通过 onLanch 获取,而且onLanch是在项目启动时才能调用到页面内想要获取:

onLaunch(options){    my.alert({      title: 'app onLaunch',      content:  JSON.stringify(options),      success: (res) => {          //成功处理代码段      },    });  //获取关联普通二维码的码值,放到全局变量qrCode中  if (options.query && options.query.qrCode) {      let scene = decodeURIComponent(options.query.qrCode);// http://5de844c.ngrok.io/xxx?a=cc&ccs=sxxxx      let temp = scene.split('?')      let test = temp[1].split('&');     console.log("temp:",temp[1]);// temp: a=cc&ccs=sxxxx     console.log("test:",test[0]);// test: a=cc     console.log("test:",test[1]);// test: ccs=sxxxx    }  }

想要在页面内获取到扫描参数要这样(疯狂吐槽):

onLoad() {    //页面中也可以获取query参数:query: { a: 'foo',b: 'bar'}     let params = uni.getLaunchOptionsSync().query //{"qrCode":"https://test.com/orderNo/111222"}
let url = params.qrCode
},

特此记录

补充:

支付宝 和微信小程序 后台斗腰配置 二维码

支付宝后台:

微信小程序后台:

配置大同小异