JAVA 生成微信小程序码-分享码

news/2024/11/24 10:51:04/

JAVA生成小程序码(太阳码)

工具类是获取token使用;

appId= 小程序appID

appSecret= 小程序秘钥

小程序中得配置分享项,不然图片是裂开的。
开发>开发管理>开发设置
在这里插入图片描述
在这里插入图片描述
nginx 配置

        location ~ ^/share { #、share 你的访问路径default_type text/html;alias /data/share/IQ8MzevUAz.txt; #你的文件地址}

生成小程序二维码官方文档

链接: https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html
一共有三种生成二维码的方式,可以根据使用场景去选择,这里我使用的是第三种生成方式 wxacode.getUnlimited

wxacode.createQRCode
获取小程序二维码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制,详见获取二维码。
POST https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

wxacode.get
获取小程序码,适用于需要的码数量较少的业务场景。通过该接口生成的小程序码,永久有效,有数量限制,详见获取二维码。
POST https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

wxacode.getUnlimited
获取小程序码,适用于需要的码数量极多的业务场景。通过该接口生成的小程序码,永久有效,数量暂无限制。 更多用法详见 获取二维码。
POST https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

在这里插入图片描述

通过该接口生成的小程序码,永久有效,数量暂无限制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中 scene字段的值,再做处理逻辑。
使用如下代码可以获取到二维码中的 scene 字段的值。
调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟,开发工具模拟时的 scene 的参数值需要进行 urlencode

1.获取小程序appId 与appKey
2.生成小程序二维码页面参数传入的是page而不是path,其他的接口是path。
page后面不允许加参数,参数需要通过scene传入。而小程序也需要通过scene获取参数。
3.生成小程序二维码可将二维码写入本地,也可上传至服务器。自行选择

一个工具类搞定

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONObject;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.Base64;@Component
public class QrUtil {private static String API_KEY;private static String SECRET;public static String getApiKey() {return API_KEY;}@Value("${wx.appId}")public  void setApiKey(String apiKey) {API_KEY = apiKey;}public static String getSECRET() {return SECRET;}@Value("${wx.appSecret}")public void setSECRET(String SECRET) {QrUtil.SECRET = SECRET;}public static String postToken() throws Exception {String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+ API_KEY +"&secret="+SECRET;URL url = new URL(requestUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("POST");// 设置通用的请求属性connection.setRequestProperty("Content-Type", "application/json");connection.setRequestProperty("Connection", "Keep-Alive");connection.setUseCaches(false);connection.setDoOutput(true);connection.setDoInput(true);// 得到请求的输出流对象DataOutputStream out = new DataOutputStream(connection.getOutputStream());out.writeBytes("");out.flush();out.close();// 建立实际的连接connection.connect();// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = null;if (requestUrl.contains("nlp"))in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));elsein = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));String result = "";String getLine;while ((getLine = in.readLine()) != null) {result += getLine;}in.close();JSONObject jsonObject = JSON.parseObject(result);String accesstoken=jsonObject.getString("access_token");return accesstoken;}public static String getminiqrQr(String sceneStr,String page) {try {URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + postToken());HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setRequestMethod("POST");// 提交模式// 发送POST请求必须设置如下两行httpURLConnection.setDoOutput(true);httpURLConnection.setDoInput(true);// 获取URLConnection对象对应的输出流PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());// 发送请求参数JSONObject paramJson = new JSONObject();paramJson.put("scene", "?userId="+sceneStr);paramJson.put("page", page);paramJson.put("width", 430);paramJson.put("is_hyaline", true);paramJson.put("auto_color", true);printWriter.write(paramJson.toString());// flush输出流的缓冲printWriter.flush();//开始获取数据//            BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
//            OutputStream os = new FileOutputStream(new File("C:/Users/c/Desktop/1.png"));
//            int len1;
//            byte[] arr = new byte[1024];
//            while ((len1 = bis.read(arr)) != -1) {
//                os.write(arr, 0, len1);
//                os.flush();
//            }
//            os.close();try (InputStream is = httpURLConnection.getInputStream();ByteArrayOutputStream baos = new ByteArrayOutputStream();){byte[] buffer = new byte[1024];int len = -1;while ((len = is.read(buffer)) != -1) {baos.write(buffer, 0, len);}return "data:mediatype;base64," + Base64.getEncoder().encodeToString(baos.toByteArray());}} catch (Exception e) {e.printStackTrace();}return null;}}

http://www.ppmy.cn/news/223852.html

相关文章

GA-PH67-UD3-B3换主板

客户一 技嘉GA-PH67-UD3-B3主板,两块1T的组RAID0,换一块同为H67芯片组的主板(型号:待补充),在BIOS,使能RAID。成功启动了原来安装的WIN7。 看来RAID的信息保存在硬盘中。 在技嘉官网上查得知: …

2.3 基于reactor的HTTP服务器实现

目录 一、基于reactor的HTTP服务器实现二、实现按行读取三、HTTP服务器的收—实现requets函数四、HTTP服务器的发—实现response函数方法之一:open and read五、HTTP服务器的发—实现response函数方法之二:sendfile()1、sendfile函数2、实现3、结果展示 …

对象存储OSS简介,一分钟了解对象存储OSS

对象存储(Object Storage)是一种新兴的数据存储方式,与传统的文件系统和块存储不同,对象存储以对象为基本单位进行数据管理和存储。在对象存储中,每个对象都有唯一的标识符,并包含了数据本身以及与之相关的…

uniapp 打包app wgt热更新和整包更新以及更新弹窗动画

app热更新是app项目最常见的功能,接下来我总结了当时做这个功能的过程,来交流学习一哈 热更新的流程步骤 在用户进入app就获取当前版本号与调用后端接口返回的版本号对比是否是最新的版本不是最新弹出弹窗让用户确认是否更新,点击更新下载w…

L9110 L9110S SOP8 马达驱动 IC 芯片 H桥全桥 贴片

一、L9110S 概述 L9110S是一块直流电机驱动电路,该产品为电池供电的玩具、低压或电池供电的控制应用提供了一种集成直流马达驱动的解决方案。电路内部集成了采用MOS管设计的H桥驱动电路,主要应用于驱 动通用直流电机。其主要特点如下: 内置…

TM1620驱动

一、参考资料 DS通过立创商城可以找到 https://item.szlcsc.com/20288.html?c4SG 二、流程 这里只说 地址增加模式 1、先发显示模式 2、设置数据命令 3、设置地址 4、连续发12个数据 5、发控制命令(设置亮度) 三、实际操作 我这里一共2个数码管&a…

windows安装达梦数据库(DM8) 教程

达梦数据库管理系统是达梦公司推出的具有完全自主知识产权的高性能数据库管理系统,简称DM。达梦数据库管理系统的最新版本是8.0版本,简称DM8。 达梦数据库版本介绍 根据不同的应用需求与配置, DM 提供了多种不同的产品系列: DM …

Jetson nano-安装mxnet

1.准备相应的依赖包 sudo apt update sudo apt -y install \build-essential \git \graphviz \libatlas-base-dev \libopencv-dev \python-pipsudo pip install --upgrade \pip \setuptoolssudo pip install \graphviz0.8.4 \jupyter \numpy1.15.22.下载mxnet源码 git clone …