Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java 生成微信小程序二维码(可以指定小程序页面 与 动态参数)

Java 生成微信小程序二维码(可以指定小程序页面 与 动态参数)

作者头像
用户1518699
发布于 2020-11-24 03:22:36
发布于 2020-11-24 03:22:36
7.6K05
代码可运行
举报
文章被收录于专栏:nice_每一天nice_每一天
运行总次数:5
代码可运行

一、准备工作

  1. 微信公众平台接口调试工具
  2. 小程序的唯一标识(appid)
  3. 小程序的密钥(secret)

二、获取access_token

打开微信公众平台接口调试工具,在参数列表中输入小程序的appid和secret,点击检查问题,如果appid和secret正确,则可以返回正确的access_token结果(图中下方的红框)

三、生成微信小程序二维码

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

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

一共有三种生成二维码的方式,可以根据使用场景去选择,这里我使用的是第三种生成方式 wxacode.getUnlimited

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

使用wxacode.getUnlimited生成小程序二维码

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

说明

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
通过该接口生成的小程序码,永久有效,数量暂无限制。用户扫描该码进入小程序后,开发者需在对应页面获取的码中 scene字段的值,再做处理逻辑。
使用如下代码可以获取到二维码中的 scene 字段的值。
调试阶段可以使用开发工具的条件编译自定义参数 scene=xxxx 进行模拟,开发工具模拟时的 scene 的参数值需要进行 urlencode
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 这是首页的 js
Page({
  onLoad: function(options) {
    // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
    var scene = decodeURIComponent(options.scene)
  }
})

获取接口调用凭证

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1     /**
 2      * 接口调用凭证 access_token
 3      */
 4     public static String postToken(String appId, String appKey) throws Exception {
 5 
 6         String requestUrl = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appKey;
 7         URL url = new URL(requestUrl);
 8         // 打开和URL之间的连接
 9         HttpURLConnection connection = (HttpURLConnection) url.openConnection();
10         connection.setRequestMethod("POST");
11         // 设置通用的请求属性
12         connection.setRequestProperty("Content-Type", "application/json");
13         connection.setRequestProperty("Connection", "Keep-Alive");
14         connection.setUseCaches(false);
15         connection.setDoOutput(true);
16         connection.setDoInput(true);
17 
18         // 得到请求的输出流对象
19         DataOutputStream out = new DataOutputStream(connection.getOutputStream());
20         out.writeBytes("");
21         out.flush();
22         out.close();
23 
24         // 建立实际的连接
25         connection.connect();
26         // 定义 BufferedReader输入流来读取URL的响应
27         BufferedReader in;
28         if (requestUrl.contains("nlp"))
29             in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "GBK"));
30         else
31             in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "UTF-8"));
32         StringBuilder result = new StringBuilder();
33         String getLine;
34         while ((getLine = in.readLine()) != null) {
35             result.append(getLine);
36         }
37         in.close();
38         JSONObject jsonObject = JSONObject.parseObject(result.toString());
39         return jsonObject.getString("access_token");
40     }

调用微信接口生成微信小程序二维码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1     /**
 2      * 生成微信小程序二维码
 3      *
 4      * @param filePath
 5      *         本地生成二维码路径
 6      * @param page
 7      *         当前小程序相对页面 必须是已经发布的小程序存在的页面(否则报错),例如 pages/index/index, 根路径前不要填加 /,不能携带参数(参数请放在scene字段里),如果不填写这个字段,默认跳主页面
 8      * @param scene
 9      *         最大32个可见字符,只支持数字,大小写英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~,其它字符请自行编码为合法字符(因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)
10      * @param accessToken
11      *         接口调用凭证
12      */
13     public static void generateQrCode(String filePath, String page, String scene, String accessToken) {
14 
15         try {
16 
17             //调用微信接口生成二维码
18             URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=" + accessToken);
19             HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
20             httpURLConnection.setRequestMethod("POST");// 提交模式
21             // conn.setConnectTimeout(10000);//连接超时 单位毫秒
22             // conn.setReadTimeout(2000);//读取超时 单位毫秒
23             // 发送POST请求必须设置如下两行
24             httpURLConnection.setDoOutput(true);
25             httpURLConnection.setDoInput(true);
26             // 获取URLConnection对象对应的输出流
27             PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
28             // 发送请求参数
29             JSONObject paramJson = new JSONObject();
30             //这就是你二维码里携带的参数 String型  名称不可变
31             paramJson.put("scene", scene);
32             //注意该接口传入的是page而不是path
33             paramJson.put("page", page);
34             //这是设置扫描二维码后跳转的页面
35             paramJson.put("width", 200);
36             paramJson.put("is_hyaline", true);
37             paramJson.put("auto_color", true);
38             printWriter.write(paramJson.toString());
39             // flush输出流的缓冲
40             printWriter.flush();
41 
42             //开始获取数据
43             BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());
44             OutputStream os = new FileOutputStream(new File(filePath));
45             int len;
46             byte[] arr = new byte[1024];
47             while ((len = bis.read(arr)) != -1) {
48                 os.write(arr, 0, len);
49                 os.flush();
50             }
51             os.close();
52         } catch (Exception e) {
53             e.printStackTrace();
54         }
55 
56         System.out.println("打开地址查看生成的二维码:" + filePath);
57 
58     }

测试类

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 1     public static void main(String[] args) throws Exception {
 2 
 3         //获取接口调用凭证access_token
 4         String appId = "小程序id";//小程序id
 5         String appKey = "小程序密钥";//小程序密钥
 6         String token = postToken(appId, appKey);
 7 
 8         //生成二维码
 9         generateQrCode("E:\\tools\\qrCode\\test.png", "pages/index/index", "aa=108&bb=2&cc=3", token);
10 
11     }

注意

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1      1.获取小程序appId 与appKey
2      2.生成小程序二维码页面参数传入的是page而不是path,其他的接口是path。
3      page后面不允许加参数,参数需要通过scene传入。而小程序也需要通过scene获取参数。
4      3.生成小程序二维码可将二维码写入本地,也可上传至服务器。自行选择
5      

参考地址: https://www.cnblogs.com/daipianpian/p/9239452.html http://www.what21.com/u/10004/6756200547748968305.htm 生成小程序二维码官方文档 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/qr-code/wxacode.getUnlimited.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Java生成微信小程序二维码,5种实现方式,一个比一个简单
先介绍一下项目场景,主要是通过微信小程序二维码裂变分享,每个账号有专属邀请二维码,分享出去,有新人扫码入驻,就可以得到现金奖励或红包奖励。当然,产品设计会更丰富,不止有裂变模式,还有渠道推广模式,还有各种奖励规则,但核心实现都是生成二维码。对于如何生成微信小程序二维码,本文一共列举了5种实现方式,其中第1、2种是网上常见的方式,第3、4、5种封装的更为优雅,文末可打包下载开箱即用的全套源码,我更期待老铁的文末 投票 :哪种方式你更喜欢?
天罡gg
2023/03/01
2.5K0
Java生成微信小程序二维码,5种实现方式,一个比一个简单
微信小程序----获取二维码
3. 返回的结果二维码(扫码即可进入Rattenking 的博客测试商店)
Rattenking
2021/02/01
3K0
微信小程序----获取二维码
小程序二维码和小程序带参数二维码生成
本文主要讲解小程序二维码的基本概念,帮助开发和运营人员更好的掌握小程序参数二维码,同时也包含小程序二维码官方文档解读,更好的掌握小程序参数二维码在业务中的使用 一,小程序二维码小白介绍 二,小程序二维
编程软文
2018/06/20
7.2K0
​云开发·云调用生成小程序码
小程序云开发已经支持云调用,开放了很多接口,一直想要的获取小程序码也支持了。这下轻量的小程序也可以有自定义小程序码的功能。
PlayerYK
2020/10/29
1.7K0
​云开发·云调用生成小程序码
用小程序来实现扫码登录
在 web 开发中,少不了用户系统,开发者需要开发注册登录这些重复的功能,而对于用户来说,要要注册才可以使用,往往会不愿意,因为我们有太多的账号和密码了,而现在,微信拥有 12 亿的月活用户,使用微信实现扫码登录,会大大减少需要用户注册而造成的流失率,而实现微信扫码登录有一定门槛,首先需要是企业用户才可以在微信开发平台注册账号,紧接着需要认证缴费 300 元才可以,简直就是黑店,而现在我们可以使用小程序来实现,今天就来讲讲小程序扫码登录的实现方式。
狂奔滴小马
2022/09/21
2K0
用小程序来实现扫码登录
开发 | 小程序如何生成带参数二维码?
许多小程序开发者,都需要获取进入小程序不同页面的二维码:包括常见的四方形「QR 码」和新推出的「小程序码」。
知晓君
2018/08/01
5.6K0
开发 | 小程序如何生成带参数二维码?
php生成传参小程序二维码
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/qr-code.html
许坏
2019/07/08
1.1K0
微信小程序之生成指定页面的太阳码
最近的项目中也是需要生成小程序的邀请太阳码.一开始生成的是个二维码.但是小程序的客户扫了之后总不能让人家跳到H5页面.所以也是研究了一下.一路上也是坎坎坷坷.这里总结下.顺当分享下自己写的代码.哪里写的不好.多多指教下.
桑先生
2019/12/18
8.8K0
从零玩转系列之腾讯云微信扫码授权系统
在我读书的时候就想玩这个功能很久了那个时候受限于这个功能需要企业或个体户去花费三百块认证服务号等方式, 反正企业或者个体户就难倒一大片了吧? 还要钱, 对于很多程序员是舍不得的, 那么不想认证又不想花费怎么办?
杨不易呀
2024/11/29
1.7K16
从零玩转系列之腾讯云微信扫码授权系统
通过微信小程序实现扫码登录
用户表不说,需要一个表存储用户、微信和小程序的对应关系,表设计如下: id,user_id,appid,openid,created_at,updated_at
ianzhi
2019/07/31
10.5K1
koa框架生成微信公众号二维码
demo的github地址:https://github.com/xuedingmiaojun/koa-demo.git
薛定喵君
2020/07/30
7060
微信公众平台开发教程(六)获取个性二维码
在进行推广时,我们可以告诉对方,我们的微信公众账号是什么,客户可以去搜索,然后关注。二维码给我们提供了极大的便捷,只要简单一扫描,即可关注。
Java架构师必看
2021/05/19
5850
微信小程序 接口调用讲解 (AccessToken、小程序码登录)
♘ 通过微信小程序实现扫码登录 ♘【网页版】使用小程序码登录 ♘ 通过扫小程序码实现网站登录功能
泥豆芽儿 MT
2022/05/10
19.8K0
微信小程序 接口调用讲解 (AccessToken、小程序码登录)
PHP实现微信小程序生成海报
由于之前处理这块业务基本都是前端处理的,所以后端还真没写过小程序生成海报,但经过谷歌和百度搜索之后发现,微信小程序生成海报的代码真的很少,可以说基本没有,那我这里就把我用了2小时时间写的PHP合并微信小程序海报的代码分享出来给大家
程序猿的栖息地
2022/04/29
1.7K0
PHP实现微信小程序生成海报
Unity & 微信公众号 - 实现扫码关注登录
功能需求:登录时呈现公众号二维码,用户扫描二维码后,点击关注,事件响应给程序,实现登录,若已经关注,自动进入会话,事件同样响应给程序,实现登录。
CoderZ
2022/08/29
3K0
Unity & 微信公众号 - 实现扫码关注登录
.NET生成微信小程序推广二维码
对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了。今天接到一个需求就是生成小程序码,并且与运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种二维码就可以进入小程序。为了节省服务器内存资源,我想的就是成功调用通微信生成小程序码的接口后直接把微信返回过来的图片二进制内容(返回的图片 Buffer)转化为二进制byte[]文件流,然后再转成Image这样就不需要在保存到本地直接读取本地的背景图片通过GDI+(Graphics)绘制图片。
追逐时光者
2023/11/29
3570
小程序中为每篇文章生成小程序码
为博客的每一篇文章生成分享海报,每张海报上需要一个带文章id的小程序码,微信官方提供三种方式生成小程序码。
执行上下文
2022/07/26
1.5K0
小程序中为每篇文章生成小程序码
【黄啊码】PHP配合微信公众号生成推广二维码
为了满足用户渠道推广分析和用户帐号绑定等场景的需要,公众平台提供了生成带参数二维码的接口。使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到事件推送。
黄啊码
2022/05/30
5880
JAVA实现的微信扫描二维码支付
吐槽一下 支付项目采用springMvc+Dubbo架构实现,只对外提供接口。 话说,为什么微信支付比支付宝来的晚了那么一点,一句话,那一阵挺忙的,然后就没有时间整理,最近做完支付宝支付,顺便也把微信支付的也整理一下。 这里再吐槽一下,微信支付的DEMO基本为零,很多代码都是从网上查找的(也可能我么有仔细找API)。 前期酝酿准备 扫码支付,目前来说个人是不可以申请的,包括现在支付宝的即时到帐个人相关业务也取消了。所以这里必须有一个微信支付商户平台,具体怎么申请的,我也不清楚,只是拿来用的。 商户平台是要配
小柒2012
2018/04/13
4.7K0
JAVA实现的微信扫描二维码支付
.NET生成小程序码,并合自定义背景图生成推广小程序二维码
  对于小程序大家可能都非常熟悉了,随着小程序的不断普及越来越多的公司都开始推广使用起来了。今天接到一个需求就是生成小程序码,并且于运营给的推广图片合并在一起做成一张漂亮美观的推广二维码,扫码这种二维码就可以进入小程序。为了节省服务器内存资源,我想的就是成功调用通微信生成小程序码的接口后直接把微信返回过来的图片二进制内容(返回的图片 Buffer)转化为二进制byte[]文件流,然后再转成Image这样就不需要在保存到本地直接读取本地的背景图片通过GDI+(Graphics)绘制图片。废话不多说直接上码,各位同学假如有什么小程序的开发问题都欢迎评论区,或者qq私聊我有时间都可以一起学习探索。
追逐时光者
2021/05/13
1.4K0
.NET生成小程序码,并合自定义背景图生成推广小程序二维码
相关推荐
Java生成微信小程序二维码,5种实现方式,一个比一个简单
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档