mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2026-03-10 00:13:40 +08:00
#292 增加小程序码支持
* 更新小程序二维码(小程序码)接口 修复小程序模板推送读取错误字段导致的NullPoint * 更新小程序二维码(小程序码)接口 修复小程序模板推送读取错误字段导致的NullPoint * 更正WxMaMsgService接口逻辑 * 使用IDEA对miniapp做了批量格式化
This commit is contained in:
@@ -7,6 +7,9 @@ import java.io.File;
|
||||
/**
|
||||
* <pre>
|
||||
* 二维码相关操作接口
|
||||
*
|
||||
* 接口A(createWxCode)加上接口C(createQrcode),总共生成的码数量限制为100,000,请谨慎调用。
|
||||
*
|
||||
* 文档地址:https://mp.weixin.qq.com/debug/wxadoc/dev/api/qrcode.html
|
||||
* </pre>
|
||||
*
|
||||
@@ -15,6 +18,7 @@ import java.io.File;
|
||||
public interface WxMaQrcodeService {
|
||||
|
||||
/**
|
||||
* 接口C
|
||||
* <pre>
|
||||
* 获取小程序页面二维码
|
||||
* 适用于需要的码数量较少的业务场景
|
||||
@@ -27,4 +31,83 @@ public interface WxMaQrcodeService {
|
||||
* @param width 默认430 二维码的宽度
|
||||
*/
|
||||
File createQrcode(String path, int width) throws WxErrorException;
|
||||
|
||||
File createQrcode(String path) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* 接口A
|
||||
* 获取小程序码
|
||||
*
|
||||
* @param path 不能为空,最大长度 128 字节
|
||||
* @param width 默认430 二维码的宽度
|
||||
* @param autoColor 默认true 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调
|
||||
* @param lineColor auth_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"}
|
||||
* @return
|
||||
* @throws WxErrorException
|
||||
*/
|
||||
File createWxCode(String path, int width, boolean autoColor, LineColor lineColor) throws WxErrorException;
|
||||
|
||||
File createWxCode(String path, int width) throws WxErrorException;
|
||||
|
||||
File createWxCode(String path) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* 接口B
|
||||
* 获取小程序码(永久有效、数量暂无限制)
|
||||
* <p>
|
||||
* 通过该接口生成的小程序码,永久有效,数量暂无限制。
|
||||
* 用户扫描该码进入小程序后,将统一打开首页,开发者需在对应页面根据获取的码中 scene 字段的值,再做处理逻辑。
|
||||
* 使用如下代码可以获取到二维码中的 scene 字段的值。
|
||||
* 调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟,开发工具模拟时的 scene 的参数值需要进行 urlencode
|
||||
*
|
||||
* @param scene 最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
|
||||
* @param page 必须是已经发布的小程序页面,例如 "pages/index/index" ,如果不填写这个字段,默认跳主页面
|
||||
* @param width 默认false 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调
|
||||
* @param autoColor 默认true 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调
|
||||
* @param lineColor auth_color 为 false 时生效,使用 rgb 设置颜色 例如 {"r":"xxx","g":"xxx","b":"xxx"}
|
||||
* @return
|
||||
* @throws WxErrorException
|
||||
*/
|
||||
File createWxCodeLimit(String scene, String page, int width, boolean autoColor, LineColor lineColor) throws WxErrorException;
|
||||
|
||||
File createWxCodeLimit(String scene, String page) throws WxErrorException;
|
||||
|
||||
/**
|
||||
* lineColor 包装类
|
||||
* 用于描述二维码(小程序码)颜色(RGB参数值),详情请查看文档
|
||||
*/
|
||||
public static class LineColor {
|
||||
|
||||
private String r = "0", g = "0", b = "0";
|
||||
|
||||
public LineColor(String r, String g, String b) {
|
||||
this.r = r;
|
||||
this.g = g;
|
||||
this.b = b;
|
||||
}
|
||||
|
||||
public String getR() {
|
||||
return r;
|
||||
}
|
||||
|
||||
public void setR(String r) {
|
||||
this.r = r;
|
||||
}
|
||||
|
||||
public String getG() {
|
||||
return g;
|
||||
}
|
||||
|
||||
public void setG(String g) {
|
||||
this.g = g;
|
||||
}
|
||||
|
||||
public String getB() {
|
||||
return b;
|
||||
}
|
||||
|
||||
public void setB(String b) {
|
||||
this.b = b;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package cn.binarywang.wx.miniapp.api.impl;
|
||||
import cn.binarywang.wx.miniapp.api.WxMaQrcodeService;
|
||||
import cn.binarywang.wx.miniapp.api.WxMaService;
|
||||
import cn.binarywang.wx.miniapp.bean.WxMaQrcode;
|
||||
import cn.binarywang.wx.miniapp.bean.WxMaWxcode;
|
||||
import cn.binarywang.wx.miniapp.bean.WxMaWxcodeLimit;
|
||||
import cn.binarywang.wx.miniapp.util.http.QrCodeRequestExecutor;
|
||||
import me.chanjar.weixin.common.exception.WxErrorException;
|
||||
|
||||
@@ -25,4 +27,49 @@ public class WxMaQrcodeServiceImpl implements WxMaQrcodeService {
|
||||
url, new WxMaQrcode(path, width));
|
||||
}
|
||||
|
||||
@Override
|
||||
public File createQrcode(String path) throws WxErrorException {
|
||||
return this.createQrcode(path, 430);
|
||||
}
|
||||
|
||||
@Override
|
||||
public File createWxCode(String path, int width, boolean autoColor, LineColor lineColor) throws WxErrorException {
|
||||
String url = "https://api.weixin.qq.com/wxa/getwxacode";
|
||||
WxMaWxcode wxMaWxcode = new WxMaWxcode();
|
||||
wxMaWxcode.setPath(path);
|
||||
wxMaWxcode.setWidth(width);
|
||||
wxMaWxcode.setAutoColor(autoColor);
|
||||
wxMaWxcode.setLineColor(lineColor);
|
||||
return this.wxMaService.execute(new QrCodeRequestExecutor(this.wxMaService.getRequestHttp()),
|
||||
url, wxMaWxcode);
|
||||
}
|
||||
|
||||
@Override
|
||||
public File createWxCode(String path, int width) throws WxErrorException {
|
||||
return this.createWxCode(path, width, true, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public File createWxCode(String path) throws WxErrorException {
|
||||
return this.createWxCode(path, 430, true, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public File createWxCodeLimit(String scene, String page, int width, boolean autoColor, LineColor lineColor) throws WxErrorException {
|
||||
String url = "http://api.weixin.qq.com/wxa/getwxacodeunlimit";
|
||||
WxMaWxcodeLimit wxMaWxcodeLimit = new WxMaWxcodeLimit();
|
||||
wxMaWxcodeLimit.setScene(scene);
|
||||
wxMaWxcodeLimit.setPage(page);
|
||||
wxMaWxcodeLimit.setWidth(width);
|
||||
wxMaWxcodeLimit.setAutoColor(autoColor);
|
||||
wxMaWxcodeLimit.setLineColor(lineColor);
|
||||
return this.wxMaService.execute(new QrCodeRequestExecutor(this.wxMaService.getRequestHttp()),
|
||||
url, wxMaWxcodeLimit);
|
||||
}
|
||||
|
||||
@Override
|
||||
public File createWxCodeLimit(String scene, String page) throws WxErrorException {
|
||||
return this.createWxCodeLimit(scene, page, 430, true, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user