微信获取带参数小程序码(太阳码)到扫码打开小程序指定页面遇到的问题和解决过程记录

小程序码生成与调试指南

目录

一、背景说明

二、怎么获取小程序码

三、前端怎么获取小程序码参数

四、遇到的坑

坑一、小程序需要提交审核,然后发布才能测试扫码

坑二、发布后打开小程序还是旧版本

坑三、开发者工具和手机上看到的效果不一致(大坑)

五、调试小程序技巧

技巧一、通过二维码编译小程序

技巧二、在正式发布的小程序里面打开console面板


一、背景说明

为了推广小程序,就需要作一个小程序海报功能,海报中有小程序码,微信扫码后会打开小程序,并且跳转到指定页面中,还可以带上参数。

二、怎么获取小程序码

获取小程序tx给出来好几个接口,个人觉得没必要,这些接口参数还不太一样,搞的我们这些小白摸不着头脑,遇到问题网上搜一下都不知道大家讨论的是那个接口。

接口总体介绍:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html

下面我用到的是接口 B

这里获取二维码没有遇到什么问题比较顺利,直接上代码:

/**
     * @param accessToken
     * @param page
     * @param scene
     * @param width
     * @return
     */
    public static Map<String, Object> getMiniQrCode(String accessToken, String page, String scene, int width) {
        Map<String, Object> data = new HashMap<String, Object>();
        try {
            // ======================================================================//
            // 拼接调用微信的URL
            // ======================================================================//
            String url = GETWXACODEUNLIMIT+"?access_token=" + accessToken;
            Map<String, Object> paramsMap = new HashMap<>();
            paramsMap.put("page", page);
            paramsMap.put("scene", scene);
            paramsMap.put("width", width <= 0 ? 430 : width);
            paramsMap.put("auto_color", false);
            paramsMap.put("is_hyaline", true);
            Map<String, Object> line_color = new HashMap<String, Object>();
            line_color.put("r", 0);
            line_color.put("g", 0);
            line_color.put("b", 0);
            paramsMap.put("line_color", line_color);
            System.out.println("调用生成微信URL接口传参:" + paramsMap);
            // ======================================================================//
            // 执行URL Post调用
            // ======================================================================//
            CloseableHttpClient httpClient = HttpClients.createDefault();
            HttpPost httpPost = new HttpPost(url);
            httpPost.addHeader("content-type", "application/json");
            // 必须是json模式的 post
            String body = JSON.toJSONString(paramsMap);
            StringEntity entity = new StringEntity(body);
            entity.setContentType("image/png");
            httpPost.setEntity(entity);
            HttpResponse httpResponse = httpClient.execute(httpPost);
            HttpEntity httpEntity = httpResponse.getEntity();

            
            // ======================================================================//
            // 处理HTTP返回结果
            // ======================================================================//
            InputStream contentStream = httpEntity.getContent();

            byte[] bytes = toByteArray(contentStream);
            contentStream.read(bytes);
            // 返回内容
            data.put("qrLength", bytes.length);
            data.put("qrBytes", bytes);
            //data.put("qrBytesEncoder", Base64.getEncoder().encodeToString(bytes));
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("调用生成微信小程序码URL接口异常"+e);
        }
        return data;
    }

 

三、前端怎么获取小程序码参数

这里其实没有遇到什么问题 ,按照官网的来基本是对的

直接上代码

onLoad(query) {
      console.log(query);
      const scene = decodeURIComponent(query.scene);
      console.log("onLoad扫码参数=" + scene);

      if (scene != undefined && scene != "undefined" && scene != null) {
        const uidAndPid = scene.split(",");
        const uid = uidAndPid[0];
        this.setSpreadId(uid);
        setTimeout(() => {
          if (uidAndPid.length == 2) {
            const pId = uidAndPid[1];
            this.$router.push({
              path: "/pages/shop/GoodsCon/main",
              query: { id: pId }
            });
          }
        }, 500);
      }
    }

四、遇到的坑

遇到几个坑记录下 

坑一、小程序需要提交审核,然后发布才能测试扫码

这个文档里面虽然说了需要发布后才能扫码。看起来不是坑 ,但是我觉得这个就是一个坑,因为测试这个扫码问题我发布了差不多10个版本,每次都要提交审核 ,等待审核,然后再发布审核版本。再进行测试。

坑二、发布后打开小程序还是旧版本

发布小程序后,扫码打开或者其他方式进如小程序可能是旧版本的小程序,这个很坑,解决的办法就是在最近使用小程序里面先删除这个小程序,再扫码进入,同时在小程序要事先标注下当前版本号来判断是否是新版本。

审核通过后还要手动发布下才能生效哦,对于小白来说可能会忘记。

坑三、开发者工具和手机上看到的效果不一致(大坑)

这个坑搞了三天

获取小程序码后一般要先本地测试,测试没问题后再提交审核发布的,我在这一过程完美通过了,即能打开小程序,也能跳转到对应页面,最后还能获取到二维码带过来的参数。但是发布后却不是那么回事。

后来发现发布的在手机扫码后报错了。不要问我怎么知道报错的,后面告诉你在发布版本的小程序怎么查看console.log打印的信息。

五、调试小程序技巧

没有这些技巧开发小程序寸步难行的感觉

技巧一、通过二维码编译小程序

先保存二维码到电脑,然后有个编译模式选择通过二维码编译

技巧二、在正式发布的小程序里面打开console面板

大家都知道正式发布的小程序是不能打开console的,看下图。

 

发布版本打开console步骤

步骤一:打开当前小程序的开发板

步骤二:打开 开发调试

步骤三:打开发布版本就有了console

神不神奇

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值