【微信小程序】 java如何生成小程序码,并跳转到指定落地页 demo

前言:
需求场景,用户通过扫描小程序码,到指定的页码,希望能帮到大家,切记,要等到小程序发版测能测试。

1、微信官网

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html 官网中给出了几个接口:
在这里插入图片描述
我们用接口b,wxacode.getUnlimited
在这里插入图片描述
看到官网说明:page会跳用到某一个界面,如果页面有参数,放在scene里,这里有一掉我们要注意,小程序必须要发版,才能进行测试。

2、代码

	import cn.hutool.core.io.FileUtil;
	import cn.hutool.core.io.IoUtil;
	import cn.hutool.http.HttpRequest;
	import cn.hutool.http.HttpUtil;
	import com.alibaba.fastjson.JSON;
	import com.alibaba.fastjson.JSONObject;

    @Value("${wx.miniapp.url.getTokenUrl}")
    private String GET_TOKEN_URL;
    @Value("${wx.miniapp.configs[2].appid}")
    private String appId;
    @Value("${wx.miniapp.configs[2].secret}")
    private String secret;
    @Value("${wx.miniapp.url.getQrCodeUrl}")
    private String GET_QR_CODE_URL;
    @Value("${tmp.save.url}")
    private String SAVE_IMG_URL;


    /**
     * 获得小程序accessToken
     *
     * @return
     */
    public String getAccessToken() {
        String fullUrl = String.format(GET_TOKEN_URL, appId, secret);
        String result = HttpUtil.get(fullUrl);
        if (StringUtils.isBlank(result)) {
            log.info(QR_CODE_APPID_SECRET_FAIL.getMessage());
            throw new ServiceException(MbUserResultEnum.QR_CODE_APPID_SECRET_FAIL);
        }
        log.info("getAccessToken(),result:{}", result);
        JSONObject jsonObject = JSON.parseObject(result);
        String accessToken = (String) jsonObject.get("access_token");
        if (StringUtils.isBlank(accessToken)) {
            log.info(QR_CODE_APPID_SECRET_FAIL.getMessage());
            throw new ServiceException(MbUserResultEnum.QR_CODE_APPID_SECRET_FAIL);
        }
        return accessToken;
    }

    /**
     * 从小程序获得二维码图片
     *
     * @param req
     * @return
     */
    private byte[] getImgByWX(QrCodeMappingReq req) {
        String accessToken = getAccessToken();
        String fullUrl = String.format(GET_QR_CODE_URL, accessToken);
        JsonObject scene = new JsonObject();
        scene.addProperty("scene", req.getQrCode());
        if(null != req.getPage()){
            scene.addProperty("page",req.getPage());
        }
        if(null != req.getCheck_path()){
            scene.addProperty("check_path",req.getCheck_path());
        }
        if(null != req.getEnv_version()){
            scene.addProperty("env_version",req.getEnv_version());
        }
        if(null != req.getWidth()){
            scene.addProperty("width",req.getWidth());
        }
        if(null != req.getAuto_color()){
            scene.addProperty("auto_color",req.getAuto_color());
        }
        if(null != req.getLine_color()){
            scene.addProperty("line_color",req.getLine_color());
        }
        if(null != req.getIs_hyaline()){
            scene.addProperty("is_hyaline",req.getIs_hyaline());
        }
        log.info("scene:,{}",scene.toString());
        byte[] bytes = HttpRequest.post(fullUrl).body(scene.toString()).execute().bodyBytes();
        if (null == bytes) {
            log.info(MbUserResultEnum.WX_CREATR_IMG_FAIL.getMessage());
            throw new ServiceException(MbUserResultEnum.WX_CREATR_IMG_FAIL);
        }
        return bytes;
    }

调用getImgByWX方法:生成二维码:

然后微信扫二维码生成 page下配置的页面:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值