美文网首页
Taro中支付宝小程序扫码拉起坑点

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

作者: 王善良_ | 来源:发表于2023-08-02 11:46 被阅读0次

    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

    相关文章

      网友评论

          本文标题:Taro中支付宝小程序扫码拉起坑点

          本文链接:https://www.haomeiwen.com/subject/dwfppdtx.html