Java 创建带参数小程序二维码

这篇具有很好参考价值的文章主要介绍了Java 创建带参数小程序二维码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        生成小程序二维码有三个接口,根据自己的业务场景选择合适的接口,这里我选择的是接口B

 注意:所带参数的长度不得超过32字符。access_token是小程序的文章来源地址https://www.toymoban.com/news/detail-597981.html

package com.qihong.file.controller;

import com.alibaba.fastjson.JSONObject;
import com.qihong.file.config.CustomizeException;
import com.qihong.file.domain.dto.WechatQRcodeDto;
import lombok.extern.log4j.Log4j2;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.io.*;

import static com.qihong.file.utils.sendPostUtil.sendPost;

/**
 * @author zhg
 * @create 2022/8/4
 */
@Log4j2
public class QrCodeConeroller {
    /**
     * 获取小程序菊花码
     **/
    @PostMapping("/createWechatQR")
    public String getWXCode(@RequestBody WechatQRcodeDto wechatQRcodeDto)  {
        //上传本地路径
        String filePath = "D:\\home\\uploadPath\\temp"+wechatQRcodeDto.getUid()+".png";

        FileOutputStream fileOutputStream = null;
        ByteArrayInputStream inputStream = null;
        try {
            //这里调用的是之前博客的获取access_token方法通过传参
            //这里获取的access_token所需的appid与secret是小程序的
            String access_token = wechatQRcodeDto.getToken();

            String url = "https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + access_token;

            JSONObject paramJson = new JSONObject();
            //这就是你二维码里携带的参数 String型 名称不可变 不超过32个字符
            String scene = wechatQRcodeDto.getUid() + "&" + wechatQRcodeDto.getType();
            paramJson.put("scene", scene);
            //注意该接口传入的是page而不是path
            //这是设置扫描二维码后跳转的页面
            paramJson.put("page", wechatQRcodeDto.getAppletUrl());
            paramJson.put("width", 430);
            paramJson.put("is_hyaline", true);
            paramJson.put("auto_color", true);
            inputStream = sendPost(url, paramJson.toString());
            //这里判断的是返回的图片还是错误信息,一般错误信息不会大于200
            if (inputStream.available() <= 200) {
                ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
                int i;
                byte[] buffer = new byte[200];
                while ((i = inputStream.read(buffer)) != -1) {
                    byteArrayOutputStream.write(buffer, 0, i);
                }
                String str = new String(byteArrayOutputStream.toByteArray());
                //错误信息的格式在官方文档里有
                JSONObject jsonObject = JSONObject.parseObject(str);
                log.info("生成二维码错误信息-----"+jsonObject);
                if ("41030".equals(jsonObject.getString("errcode"))) {
                    log.error("所传page页面不存在,或者小程序没有发布");
                    throw new CustomizeException("所传page页面不存在,或者小程序没有发布");
                } else if ("45009".equals(jsonObject.getString("errcode"))) {
                    log.error("调用分钟频率受限");
                    throw new CustomizeException("调用分钟频率受限");
                }
                byteArrayOutputStream.close();
                inputStream = sendPost(url, paramJson.toString());
                log.info("再次请求字节大小------" + inputStream.available());
            }
            //输出到本地的代码
            fileOutputStream = new FileOutputStream(new File(filePath));
            int i;
            byte[] buffer = new byte[1024];
            while ((i = inputStream.read(buffer)) != -1) {
                fileOutputStream.write(buffer, 0, i);
            }
            fileOutputStream.flush();

            log.info("二维码生成成功");
        } catch (Exception e) {
            log.error("获取二维码异常");
            try {
                throw new CustomizeException(e.getMessage());
            } catch (CustomizeException ex) {
                ex.printStackTrace();
            }
        }finally {
            try {
                if(fileOutputStream != null){
                    fileOutputStream.close();
                }
                if(inputStream != null){
                    inputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        log.info("打开地址查看生成的小程序二维码:" + filePath);
        //这里需要把filePath保存起来,我这里返回到所以服务保存。我用的永久有效,数量暂无限制的接口
        return filePath;
    }
}

到了这里,关于Java 创建带参数小程序二维码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序生成带动态参数二维码

    首先说一下我的使用场景,用户可根据id生成这一条记录的二维码,其他人扫码直接跳转到小程序,显示这条记录的具体信息。 分两步:第一在微信公众号后台配置,第二利用canvas前端实现二维码展示,并接收参数做下一步处理。 登录微信公众平台,依次点击开发管理 - 开发

    2024年02月11日
    浏览(54)
  • 小程序将本页面生成二维码,二维码扫码带参数进小程序指定页面

    1、因为小程序调用 https://api.weixin.qq.com/ 不能直接调用这个接口,所以我们需要在ApiPost上先测试一下生成一下二维码,生成测试没问题后可以让后端调用返回给前端。 获取access_token方法官方文档地址如下: https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_access_token.html

    2024年02月15日
    浏览(53)
  • Java生成微信小程序二维码,5种实现方式,一个比一个简单

    先介绍一下 项目场景 ,主要是通过微信小程序二维码 裂变分享 ,每个账号有专属邀请二维码,分享出去,有新人扫码入驻,就可以得到现金奖励或红包奖励。当然,产品设计会更丰富,不止有裂变模式,还有渠道推广模式,还有各种奖励规则,但核心实现都是生成二维码。

    2024年02月03日
    浏览(57)
  • vue页面动态生成二维码,扫描二维码跳转到微信小程序,同时传递参数

    最近领导提了个新的需求, 点击表格时,弹出一个二维码,微信扫描此二维码时,跳转到微信小程序,同时将所在行的id(即员工所在公司的id)传过去,这样员工在登录微信小程序时,根据此id就知道是哪个公司的员工登录或者注册 了! 刚开始想的是,直接把小程序的二维

    2024年02月11日
    浏览(82)
  • 微信小程序:生成二维码带参数并获取值

    通过后台接口可以获取小程序任意页面的小程序码,需要注意的是 接口只能生成已发布的小程序的二维码 小程序接口文档 1)scene 字段的值会作为 query 参数传递给小程序/小游戏。用户扫描该码进入小程序/小游戏后,开发者可以获取到二维码中的 scene 值,再做处理逻辑。

    2024年02月15日
    浏览(45)
  • C#动态生成带参数的小程序二维码

      在微信小程序管理后台,我们可以生成下载标准的小程序二维码,提供主程序入口功能。在实际应用开发中,小程序二维码是可以携带参数的,可以动态进行生成,如如下场景: 1、不同参数决定的显示界面不同。 2、不同参数决定的功能不同。 3、由于小程序审核机制,我

    2024年02月04日
    浏览(42)
  • 微信小程序使用weapp-qrcode.js生成二维码以及“扫普通链接二维码打开小程序”动态传递参数实现记录

    参考文章原文链接:微信小程序使用weapp-qrcode.js完成二维码的生成_fairy_404的博客-CSDN博客 首先给需要生成二维码的页面创建一个canvas 因为我这里实现的是弹窗展示二维码,所有就把 canvas移出页面,小伙伴们根据自己需求进行调整,weapp-qrcode.js内容参考链接中就有,我这里就

    2024年02月15日
    浏览(53)
  • 【支付系统】java springboot 生成二维码,二维码中文乱码

            支付系统必不可少的就是生成二维码,有时我们会需要将支付链接转换为二维码.用户通过移动设备扫描二维码调起支付. 该篇文章主要使用的是hutool自带的二维码生成功能.  1. 引入依赖(hutool 可以按需引入这里就直接使用all了) 2. hutool的官方已经有很详细的生成方式

    2024年02月11日
    浏览(43)
  • java实现二维码生成功能

    由于现在对二维码的使用比较多,正好我在项目里面也使用到了,所以写篇博客记录一下。 这里我是将我博客主页的url生成二维码,微信扫一扫可以看到我的博客主页(欢迎骚扰) 4.1、设置参数 上面这个只是简单的生成二维码,接下来说说自定义参数的方式生成,如长、宽

    2024年02月11日
    浏览(48)
  • 微信小程序使用weapp-qrcode.js生成二维码以及“扫普通链接二维码打开小程序”动态传递参数实现以及遇到问题记录

    参考文章原文链接:微信小程序使用weapp-qrcode.js完成二维码的生成_fairy_404的博客-CSDN博客 首先给需要生成二维码的页面创建一个canvas 因为我这里实现的是弹窗展示二维码,所有就把 canvas移出页面,小伙伴们根据自己需求进行调整,weapp-qrcode.js内容参考链接中就有,我这里就

    2024年02月01日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包