Taro中支付宝小程序扫码拉起坑点

2023-08-02  本文已影响0人  Asuler

1. 扫码获取不到url参数

需求背景:

支付宝上我们开发的某xxx小程序中会有一个推广码,这个推广码是一个带参数的url转成的二维码,另一个用户用支付宝的扫一扫打开后,会进入该小程序的指定页面

问题:

新用户通过扫码进入该指定页面时获取不到url上的参数

解决:

  1. 一开始以为直接从url上获取就可以,直接 qs.parse(window.location.search),但是失败了
  2. 最后发现是从app启动时获取的,在src的目录下有一个app.tsx,里面是一个App组件,return一个 children,我们需要在这里加个useLaunch的生命周期,并且自带options参数,这个参数里才有我们需要的url


    image.png
  3. useLaunch里的options参数实际上是这样的(如下所示),这个query里面的qrCode是我们配置的完整链接,我们在useLaunch里能获取到,此时把这些参数存到Taro的全局变量taroGlobalData中去
interface LaunchOptions {
  path: string; // 打开的页面路径
  query: {
    qrCode: string; // 支付宝扫码唤起的小程序链接
  }
}
  1. 这个App肯定是先于你的页面先启动的,也就是说,你在这里存到全局变量了,后面打开的页面直接取就行了,在render里面直接取也能取到,所以在页面组件上直接取 Taro.getApp().taroGlobalData.query.qrCode即可,取到了后再 qs.parse(split("?")[1]),就能拿到序列化的queryjson了

  2. 如果觉得在初始化useLaunch里获取再传值麻烦,可以试一下在页面组件上用Taro.getLaunchOptionsSync(),没试过,应该是可以达到一样的效果

2. 扫一扫拉起的是线上小程序

能配置扫一扫功能,必定是先发第一版正式的小程序,再去支付宝小程序后台配置,二维码url,但是配置完成后,扫一扫唤起的却是线上正式版的小程序

在测试,联调阶段,我们需要唤起的是体验版或者开发版小程序

解决:

先打开一版开发版的小程序,(用支付宝开发者工具的预览码即可),小程序右上角有一个定位图标,点开


image.png

点开后底下有一个联调设置


image.png

把这个给勾上


image.png

后续扫码打开的就是这个开发版的小程序了,如果后续代码改动了,可能要重新进入一次,重新勾选这个联调扫码版本的checkbox

上一篇 下一篇

猜你喜欢

热点阅读