Spring Boot整合WxJava快速实现生成小程序码

createh53周前 (12-06)技术教程28

最近业务给咱们开发同事提了一个很简单的需求-生成小程序码,同事可能是平时写CRUD写多了,听到是不熟悉的领域的东西就觉得有些头大,便来问我如何实现,我说:“这个得看官方说明文档了,然后调接口实现。如果觉得麻烦就找开源组件直接引用即可,比如WxJava”。可能是我表述得不够清楚,同事依然一脸懵逼,感觉甚是复杂。

接下来,我们就整合开源组件WxJavaminiapp版本来快速实现小程序码生成功能。

引入wx-java-miniapp-spring-boot-starter

1
2
3
4
5
<dependency>
    <groupId>com.github.binarywang</groupId>
    <artifactId>wx-java-miniapp-spring-boot-starter</artifactId>
    <version>4.4.0</version>
</dependency>

配置小程序信息

1
2
3
4
5
6
7
wx:
  miniapp:
    appid: 小程序AppId
    secret: 小程序secret
    token:
    aesKey:
    msgDataFormat: JSON

如果只是生成小程序码或者获取小程序连接,那便只配置appIdsecret即可。

调用API

小程序官方有三种小程序码的生成方式,WxJava封装了官方的API接口为我们提供三个API的方法:

  1. createQrcode 对应官方的获取小程序二维码接口,生成的小程序码,永久有效,有数量限制,参数带在URL后面
  2. createWxaCode 对应官方的 获取小程序码接口,生成的小程序码,永久有效,有数量限制,参数带在URL后面
  3. createWxaCodeUnlimit 对应官方的获取不限制的小程序码接口,生成的小程序码,永久有效,数量暂无限制,参数需要传到scene中,小程序端需要从query.scene中获取


@Resource
WxMaService wxMaService;

@GetMapping(value = "/generateQrcode/{id}", produces = {MediaType.IMAGE_JPEG_VALUE, MediaType.IMAGE_PNG_VALUE})
public byte[] generateQrcode(HttpServletRequest request,@PathVariable("id")String id) throws WxErrorException {
return wxMaService.getQrcodeService().createWxaCodeBytes("路径?id="+id,"",640,true,null,false);
}

这里我只是简单的模拟API的调用方式,如果使用有数量限制的API接口,我们需要将生成好的图片上传到文件服务器,或者是保存下来。因为资源有限,我们得节约一点。

1
2
3
4
5
6
@GetMapping(value = "/generateQrcode/{id}")
   public String generateQrcode(HttpServletRequest request,@PathVariable("id")String id) throws WxErrorException {
       File qrcode= wxMaService.getQrcodeService().createWxaCode("路径?id="+id);
       //保存或者上传文件
       return "图片url" ;
   }

默认图片大小为430像素,颜色自动调整,可以通过WxMaCodeLineColor对象来设置生成的颜色,

1
2
3
4
5
6
7
8
9
10
@GetMapping(value = "/generateQrcode/{id}")
public String generateQrcode(HttpServletRequest request,@PathVariable("id")String id) throws WxErrorException {
    WxMaCodeLineColor color=new WxMaCodeLineColor(); //设置绿色
    color.setB("0");
    color.setG("255");
    color.setR("0");
    File qrcode= wxMaService.getQrcodeService().createWxaCode("路径?id="+id,"",1280,false, color,false);
    //保存或者上传文件
    return "图片url" ;
}

这里需要注意的是,要生成的小程序必须是已发版,如果是调用的createWxaCodeUnlimit方法,路径也必须在正式存在,否则会提示异常

1
{"errcode":41030,"errmsg":"invalid page rid: 632a72c5-0713dffe-27652c1f"}

如今,开源的组件越来越多,其可帮助我们提升开发效率,但是我们也不能过渡依赖于这些组件,完成工作交差之后就停滞不前,在使用它们的同时也需要多去学习、思考。

相关文章

使用Barcode4j和ZXing生成条形码、二维码

在网上查阅资料,归纳整理了两款处理条码、二维码的开源Java类库:Barcode4jZXingBarcode4j 已经不再维护了,最新的版本是在2012发布的。ZXing,大名鼎鼎、久负盛名。条码类型...

5k+ 开源二维码生成器-QR-Code-generator

大家好,我是铺子,欢迎光临我的编程铺子,铺子有新货-开源二维码生成器-QR-Code-generator 推荐星数 ★★★★★序言生成二维码需求,已经很常见的功能,如何快速生成高质量的二维码,并支持多...

手机app扫描二维码以websocket方式登陆网页端

工作中经常遇到PC端扫码登录的需求,为了在下次遇到相关需求不麻抓,针对性的动手实验一下.答题思路是需要用websocket的通信方式来进行信息的传递.具体怎么实现呢?一、整体的逻辑分为:1、PC生成二...