小程序码B接口参数无效
发布于 6 年前 作者 ktan 18589 次浏览 来自 问答

根据文档所述

用户扫描该码进入小程序后,将统一打开首页,开发者需在首页根据获取的码中 scene 字段的值,再做处理逻辑。使用如下代码可以获取到二维码中的 scene 字段的值,调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟

我通过以下代码获取小程序码并保存为图片

$post=array(
   scene=>$type."$".$id,
   width=>500
);
$qr = $this->curl_request("http://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$arr->access_token,json_encode($post));

并通过以下代码进行跳转

var scene = options.scene;
if (scene) {
   this.goQrcode(scene);
}
goQrcode: function (scene) {
   var scene_arr = scene.split("$");
   //scene_arr[0]==1    类别为1则为商铺,暂不需要判断
   wx.navigateTo({
       url: '../shangpudetail/shangpudetail?id=' + scene_arr[1],
   })
},

请注意,在本地测试时,我根据文档要求进行测试,如图

这时进入小程序时会自动跳转到相应的页面,也就是说,这段程序是有效的

但用微信扫码后只能进入程序首页。

请问这是为什么?

补充一个小程序码,就是上面生成并保存在我服务器上的。

4 回复

楼上诸位可以用实机输出一下参数就知道了,我就是发现我原参数里的分隔符(特殊符号)被转义了才发现问题的,目前我仅知道减号【-】不会被转义,其他的不明,你们可以试下。

您好,这个问题怎么解决的,我现在这个问题好纠结啊

var scene = decodeURIComponent(options.scene);// 535;//
    this.setData({ scene: scene });
    if (scene != undefined && scene != 'undefined') {
      if (scene.indexOf("_") == -1) {
        wx.redirectTo({
          url: '../card/share/share?ownerId=' + scene,
        })
  
      } else {
        var scenes = scene.split("_");
        var ownerId = scenes[0];
        wx.redirectTo({
          url: '../register/register?tuijianrenId=' + ownerId,
        })
      }
  
    }

小程序码的参数:scene=72_zhcue

最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&’()*+,/:;=?@-._~

文档上是支持【$】这个字符的,【_】也支持,我用【_】已经分割出想要的字符,在真机中可以取到想要的字符,但唯独不能跳转,不知是何问题,是现在不允许扫码跳转了么?我升级审核好几个版本测试都不行,哪位请给解答下,谢谢!

跳转用的是楼上相同的方法

有人看到没?到底是我的问题还是接口的问题?

回到顶部