Java 生成支付二维码返回给前端和自定义二维码背景色
Java 生成支付二维码返回给前端和自定义二维码背景色
·
在做PC端通联支付的时候发现和微信支付不一样,返回的是一串支付串,并不直接是一个支付二维码,所以这里就需要手动转换了,
通过 Hutool 实现
添加如下依赖
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.0.7</version>
</dependency>
<dependency>
<groupId>com.google.zxing</groupId>
<artifactId>core</artifactId>
<version>3.3.3</version>
</dependency>
二维码的返回有两种方式:
方式1:直接在前端显示,将转换信息转成Base64返回即可
public static void main(String[] args) {
// 二维码内容
String url = "https://www.baidu.com/";
// 生成二维码并指定宽高
BufferedImage generate = QrCodeUtil.generate(url, 300, 300);
// 转换流信息写出
FastByteArrayOutputStream os = new FastByteArrayOutputStream();
try {
ImageIO.write(generate, "jpg", os);
} catch (IOException e) {
return e.getMessage();
}
//如果二维码要在前端显示需要转成Base64
return Base64.getEncoder().encodeToString(os.toByteArray());
}
前端通过这种方式显示即可
<!-- data:image/png;base64, 的意思是将后端返回的base64转换为png格式的图片 -->
<img src="data:image/png;base64,后端返回的base64" />
方式2;直接将该二维码下载到本地
public static void main(String[] args) {
// 生成二维码到文件,也可以到流
QrCodeUtil.generate("http://hutool.cn/", new QrConfig(300,300), FileUtil.file("D:/01.jpg"));
}
二维码效果图
给二维码自定义颜色
public static void main(String[] args) {
QrConfig config = new QrConfig(300, 300);//二维码宽/高
// 设置边距,既二维码和背景之间的边距
config.setMargin(3);
// 设置前景色,既二维码颜色(青色)
config.setForeColor(Color.CYAN.getRGB());
// 设置背景色(灰色)
config.setBackColor(Color.GRAY.getRGB());
// 生成二维码到文件,也可以到流
QrCodeUtil.generate("http://hutool.cn/", config, FileUtil.file("D:/01.jpg"));
}
参考官方文档选择需要的样式
参考文档:Hutool官方文档
参考链接:https://blog.csdn.net/weixin_51414132/article/details/123904242
更多推荐
已为社区贡献9条内容
所有评论(0)