微信生成小程序码

article/2025/11/3 20:15:06
微信生成小程序码扫描唤醒小程序(2)
	我做的是 _**带参数无限个数小程序码**,有什么问题或者错误,请及时指出! (有些问题我还没有搞懂!但是代码能跑,小程序码能跳转!)

微信官方文档地址 微信公众平台配置说明

  • 配置微信小程序后台(至今也不能跳转到开发版),登陆微信公众平台 ,在首页下面找到<开发>点击进去,然后在当前页面点击开发设置,滑到页面最下方
    在这里插入图片描述
  • 接下来看下具体的配置(只供参考,我也配的不是很明确,参考者自己去看下文档吧)
    在这里插入图片描述
  • 这里需要说下,调用微信接口生成小程序码需要accessToken,如何获取accessToken,这边我还是把代码贴一下吧
    @PostMapping("getToken")@ApiOperation(value = "获取AccessToken")public JSONObject getAccessToken(@ReqHeader @ApiIgnore ApiReqHeader reqHeader) throws IOException {String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET";// 这两个字段在微信的配置文件里面找吧,String APPID = "你的AppId";String APPSECRET = "你的AppSecret";String request_url = url.replace("APPID", APPID).replace("APPSECRET", APPSECRET);URL conn_url =  new URL(request_url);HttpURLConnection conn = (HttpsURLConnection)conn_url.openConnection();// 这个GET请求必须是大写的, 掉进过坑里一下conn.setRequestMethod("GET");conn.setReadTimeout(5000);conn.setConnectTimeout(5000);conn.connect();JSONObject jsonObject = null;if(conn.getResponseCode()==200){InputStream stream = conn.getInputStream();InputStreamReader inputStreamReader = new InputStreamReader(stream, "utf-8");BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String str = null;StringBuffer buffer = new StringBuffer();while ((str = bufferedReader.readLine()) != null) {buffer.append(str);}bufferedReader.close();inputStreamReader.close();stream.close();conn.disconnect();jsonObject = JSONObject.parseObject(buffer.toString());}return jsonObject;}
  • 切记,如果AppId和AppSecret获取错了或者配置文件里的错了(scene中的参数没有的也是生成不了二维码的),你生成的二维码是没有用的
  • accessToken有了就来调用微信的接口吧,
Controller
  • 缺啥自己就注释啥吧,反正这段代码也不重要
 	/*** <p>App端-扫二维码唤醒小程序</p>*/@PostMapping("createQRCodeMap/{accessToken}")@ApiOperation(value = "生成二维码",notes="路径后面带AccessToken")public ResultWrap<MemberInfoURLIO> createQRCodeMap(@ReqHeader ApiReqHeader reqHeader,@PathVariable("accessToken") String accessToken){log.info("接收{}请求报文:{}", OperationType.CREATE, LogWriteUtils.getJsonStr(reqHeader));String base64 = memberInfoService.createQRCodeMap(reqHeader,accessToken);// 上传图片String path = fastDFSFileUploadManager.uploadBase64(base64);// 配置待修改,先用着吧//MemberInfoBO memberInfoBO = memberInfoService.updataInvitationCodeUrl(reqHeader, getBaseUrl().concat("/").concat(path));String url = "http://***.115.137.33:880";MemberInfoBO memberInfoBO = memberInfoService.updataInvitationCodeUrl(reqHeader, url.concat("/").concat(path));MemberInfoURLIO memberInfoURLIO = POJOUtils.copyProperties(memberInfoBO, MemberInfoURLIO.class);return RestParamsUtils.toRespWrapSucess(memberInfoURLIO);}
Service
  • 自己要什么要的格式的数据自己转,记得把流关下!
/*** <p>扫描二维码唤起小程序</p>*/public String createQRCodeMap(ApiReqHeader reqHeader, String accessToken) {// 这个是我获取到的参数放入到scene中MemberInfoPO memberInfoPO = memberInfoDao.findById(reqHeader.getUserId());MemberInfoVO memberInfoVO = POJOUtils.copyProperties(memberInfoPO, MemberInfoVO.class);String invitationCode = memberInfoVO.getInvitationCode();String base64String = "";try {URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token="+accessToken);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setRequestMethod("POST");// 提交模式// conn.setConnectTimeout(10000);//连接超时 单位毫秒// conn.setReadTimeout(2000);//读取超时 单位毫秒// 发送POST请求必须设置如下两行httpURLConnection.setDoOutput(true);httpURLConnection.setDoInput(true);// 获取URLConnection对象对应的输出流PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());// 发送请求参数JSONObject paramJson = new JSONObject();paramJson.put("scene", invitationCode);paramJson.put("path", "pages/index/index");paramJson.put("width", 430);printWriter.write(paramJson.toString());// flush输出流的缓冲printWriter.flush();//开始获取数据BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());ByteArrayOutputStream swapStream = new ByteArrayOutputStream();//buff用于存放循环读取的临时数据byte[] buff = new byte[1024];int rc = 0;while ((rc = bis.read(buff, 0, 100)) > 0) {swapStream.write(buff, 0, rc);}byte[] bytes = swapStream.toByteArray();// 转为base64BASE64Encoder encoder = new BASE64Encoder();String binary = encoder.encodeBuffer(bytes).trim();// 去除字符串中的所有空格String replaceAll = (binary).replaceAll(" +", "");base64String = "data:image/png;base64,"+replaceAll;System.out.println(base64String);} catch (Exception e) {e.printStackTrace();}// 自己把流关一下return base64String;
}
成果 在这里插入图片描述
  • 再来一个demo,这玩意挺好找的,百度一搜一大堆
@Slf4j
public class Test1 {public static void main(String[] args) {try {URL url = new URL("https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=你的accessToken");HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setRequestMethod("POST");// 提交模式// conn.setConnectTimeout(10000);//连接超时 单位毫秒// conn.setReadTimeout(2000);//读取超时 单位毫秒// 发送POST请求必须设置如下两行httpURLConnection.setDoOutput(true);httpURLConnection.setDoInput(true);// 获取URLConnection对象对应的输出流PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());// 发送请求参数JSONObject paramJson = new JSONObject();paramJson.put("scene", "12312312");paramJson.put("path", "pages/index/index");paramJson.put("width", 430);printWriter.write(paramJson.toString());// flush输出流的缓冲printWriter.flush();//开始获取数据BufferedInputStream bis = new BufferedInputStream(httpURLConnection.getInputStream());ByteArrayOutputStream swapStream = new ByteArrayOutputStream();//buff用于存放循环读取的临时数据byte[] buff = new byte[1024];int rc = 0;while ((rc = bis.read(buff, 0, 100)) > 0) {swapStream.write(buff, 0, rc);}swapStream.flush();byte[] bytes = swapStream.toByteArray();// 转为base64BASE64Encoder encoder = new BASE64Encoder();String binary = encoder.encodeBuffer(bytes).trim();String replaceAll = (binary).replaceAll(" +", "");String base64String = "data:image/png;base64,"+replaceAll;System.out.println(base64String);System.out.println("12312312");System.out.println("12312312");System.out.println("12312312");} catch (Exception e) {e.printStackTrace();}}
}

尾记

  • 至今还搞不懂怎么跳转到开发版,因为跳转的是线上版本的,测试很不方便(我是后端我无所谓咯),在微信的开发者专区里面找了找,都说跳不了,但是微信官方的开发者说可以! :)

http://chatgpt.dhexx.cn/article/h7jVfHcs.shtml

相关文章

微信小程序中把页面生成图片

这个问题我上网搜了一下&#xff0c;答案有多种&#xff0c;但是真正能用的没有几何。很多答案都是雷同&#xff0c;有的网友也不负责任&#xff0c;直接拿来照抄&#xff0c;自己也不跑一遍看看。哎&#xff0c;不说了&#xff0c;说多了全是泪。希望我们的技术达人在分享的时…

微信小程序之海报生成

前言&#xff1a;2.9.0 起支持一套新 Canvas 2D 接口&#xff08;需指定 type 属性&#xff09;&#xff0c;同时支持同层渲染&#xff0c;原有接口不再维护 参考文档&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/component/canvas.html <!-- 海报 --&…

如何自己制作小程序?

现在小程序非常流行&#xff0c;很多人都想制作一个自己的小程序来卖货。以前制作小程序通常需要请小程序开发公司&#xff0c;而且需要每年给多少钱&#xff08;通常几百到几千&#xff09;。但随着微信越来越完善&#xff0c;现在无需找小程序服务商搭建&#xff0c;无需懂代…

微信小程序链接快速生成方法

文章目录 前言一、如何生成微信小程序链接&#xff1f;二、生成微信小程序链接步骤1.获取 URL Scheme2.获取 URL Link3.获取 Short Link4.短信打开小程序5.NFC 标签打开小程序 总结 前言 微信官方更新了链接跳转微信小程序的功能&#xff0c;在点击链接后即可直接跳转到小程序…

小程序码的生成

一、生成方式 微信小程序提供了三个接口来生成小程序码&#xff0c;分别是wxacode.createQRCode()、wxacode.get()、wxacode.getUnlimited()&#xff0c;生成的小程序码永久有效&#xff0c;其中仅getUnlimited接口生成的小程序码数量暂无限制 二、接口详解 1、wxacode.creat…

微信小程序分享小程序码的生成(带参数)以及参数的获取

这篇文章主要介绍了微信小程序分享小程序码的生成&#xff08;带参数&#xff09;以及参数的获取&#xff0c;文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 1.小程序码介绍 从…

netlify 自动部署化工具

一、使用github或者gitlab登陆netlify 打开进入netlify官网 二、然后使用github或者gitlab账号登录。 三、登录成功后直接将自己build生成的dist 文件目录拖到虚线框中 四、可以看到netlify为我们随机生成了一个netlify下的域名&#xff0c;可以直接在浏览器访问。 五&…

Coolify: 一款超强大的开源自托管 Heroku / Netlify 替代方案

公众号关注 「奇妙的 Linux 世界」 设为「星标」&#xff0c;每天带你玩转 Linux &#xff01; Coolify 是一种可自我托管的综合解决方案&#xff0c;只需单击几下即可托管你的应用、数据库或其他开源服务。它是 Heroku 和 Netlify 的一个替代方案。 通过 Coolify 可以部署很多…

122.将实战网页部署到Netlify

● 本章我们将网站部署到Netlify ● 首先先点击右上角注册一个账号 ● 注册完成之后&#xff0c;点击sites&#xff0c;将我们的网站文件夹拖入 ● 上传成功 ● 之后就可以正常访问啦 ● 我们也可以修改我们的站点名称&#xff0c;让他更加好记

在netlify上部署golang web应用

介绍 Netlify是一个专门托管静态文件的云。这使得它非常适合托管开发人员博客、宣传册网站&#xff0c;甚至只是一个个人简历。它甚至内置了对Hugo的支持。但是Netlify也有各种动态托管解决方案&#xff0c;他们的functions服务是托管Go Web应用程序的一种非常简单的方法&…

利用Netlify/Vercel和Digitalpress搭建免费Ghost静态博客

第一步 先去https://www.digitalpress.blog/申请一个免费的Ghost博客。 当然你可以用自己的主机&#xff0c;或者digitalocean免费的学生包。只要是Ghost就可以。 第二步 注册Netlify或者Vercel(两个都可以&#xff0c;自己挑选,我自己测试Vercel链接更快) 自行测试&#…

NET Framework

NET Framework 是一个可以快速开发、部署网站服务及应用程序的开发平台&#xff0c;是 Windows 中的一个组件&#xff0c;包括公共语言运行时&#xff08;Common Language Runtime, CLR&#xff09;虚拟执行系统和 .NET Framework 类库。 .NET Framework 的特点如下。 提供标准…

使用Netlify部署博客

文章目录 github 项目部署自定义域名 原先博客是部署在 githubPages 上的&#xff0c;稍微设置一下就能实现自动化部署和启用 https&#xff0c;还是蛮方便的&#xff0c;但是使用国内网络访问 githubPages 上部署的网站速度太慢了&#xff0c;体验很差&#xff0c;因此&#x…

如何下载.NET Framework

下载网址&#xff1a; https://dotnet.microsoft.com/zh-cn/download/dotnet-framework 登录网址 选择适合的版本&#xff0c;如果你的版本太低可能要多尝试一个版本是否能够安装成功

【2022年】的网页转 App 教程

● 如何将网站转为 App&#xff1f; 使用 HopWeb 可以毫无技术成本的制作属于你的App。 HopWeb 官方网站&#xff1a;https://atreep.netlify.app/hopweb ● 网站转 App 适用于以下类型的网站&#xff1a;个人博客、工具类网站等 ● 本教程将以【百度】网站为例&#xff0c;引…

通过Netlify制作个人网站

个人主页的创建 本文主要介绍个人主页的创建过程&#xff0c;主要通过知乎回答的指导&#xff0c;参考本人制作的个人主页。 本人个人主页制作主要使用Netlify&#xff0c;参考该网站安装教程进行安装&#xff0c;直接在自己的github中创建一个仓库作为网站节点。在安装过程中…

【经验】静态博客部署 Hexo + Netlify-CMS + Vercel (在线构建)

目录 引入背景方案 步骤生成starter模板添加Netlify CMS在线管理添加Netlify身份验证组件启用git gateway身份验证换用Vercel作为CDN重新添加js添加身份验证器绑定oauth 定制404页面 模板已知问题 引入 背景 Hexo等静态博客相对于Wordpress等动态博客&#xff0c;可以白嫖很多…

.net framework 官方下载地址

.net framework 官方下载地址 https://dotnet.microsoft.com/zh-cn/download/dotnet-framework

使用Netlify部署静态网站

之前写了一篇文章是关于在树莓派上部署Hexo的博客&#xff0c;但树莓派难免会出故障&#xff0c;所以将网站放在另一个地方会更安全一点。 前一篇&#xff1a;https://fitswcblog.com/%E6%A0%91%E8%8E%93%E6%B4%BE%E6%90%AD%E5%BB%BAhexo%E5%8D%9A%E5%AE%A2/ 我在csdn上的所有…

123.HTML5+CSS3完结_使用Netlify收取表单

Netlify也可以做表单接受&#xff1a; 我们启动一下 修改下表单 ● 接着在我们的网站输入并提交表单 ● 之后会有一个提示&#xff0c;提示我们提交成功 然后就能在Netlify接受到用户的表单 ● 当然这个表单只能接受100个&#xff0c;但是作为实验也够用了 到此&a…