-
WxJava - 微信开发 Java SDK(开发工具包) 支持包括微信支付、开放平台、公众号、企业微信/企业号、小程序等微信功能的后端开发。 特别赞助 活动服务销售平台 ...
-
WxJava微信开发工具包 v4.0.0
2020-12-15 13:19:44为您提供WxJava微信开发工具包下载,WxJava微信开发Java开发工具包(SDK),支持包括微信支付、微信开放平台、小程序、企业号/企业微信、公众号(包括服务号和订阅号)等的后端开发。本开发工具包基于chanjarster的... -
WxJava:WxJava(微信开发Java SDK),支持包括微信支付,开放平台,小程序,企业微信企业号和公众号等的...
2021-02-04 00:39:07WxJava-微信开发Java SDK(开发工具包) 支持包括微信支付,开放平台,公众号,企业微信/企业号,小程序等微信功能的逐步开发。 特别赞助 活动服务销售平台 重要信息 2020-11-29发布 ! 新手重要提示:本项目仅是一... -
WxJava之公众号开发(一)
2019-03-22 12:47:01标题WxJava之公众号开发(一)微信公众号服务器配置(Java后台接入)标题WxJava之公众号开发(一)微信公众号服务器配置(Java后台接入)
按照api开始对接
上图配置得服务期地址url是微信向我们发出得请求,可以理解为 用户 ->微信 ->自己得后台服务。微信在中间做了一层转发
wxJava 中给出了相关得例子代码**(代码在wxJava得demo版中给出)**
引入pom
if (StringUtils.isAnyBlank(signature, timestamp, nonce, echostr)) {
throw new IllegalArgumentException(“请求参数非法,请核实!”);
}
微信推荐我们在接收得时候需要判断一下参数得合法性
验证这次消息是否正确
使用得是SHA1 传入预先配置好得token 和 timestamp和nonce
获取结构后
和signature 比较 比较成功后 返回 echostr
成功返回后表示这次就接入成功了网页授权
这里可以值得注意下,提示说“回调页面需在此域名下” 所以 带“http://” 或者带 kj2kvs.natappfree.cc/mayiin/ 都是不对得/
只有就填个光溜得域名就可以了 -
推荐一个微信工具包WxJava
2018-12-29 21:45:41WxJava (微信开发 Java SDK),支持包括微信支付、开放平台、小程序、企业微信/企业号和公众号等的后端开发 demo实例 https://blog.csdn.net/antma/article/details/79629584 官方地址 ...WxJava (微信开发 Java SDK),支持包括微信支付、开放平台、小程序、企业微信/企业号和公众号等的后端开发
-
springboot整合wxjava开发工具包的用法
2020-04-03 17:17:08wxjava开发工具包的用法 文档地址: https://github.com/Wechat-Group/WxJava/tree/master/spring-boot-starters/wx-java-mp-spring-boot-starter 首先创建一个springboot的项目 1.引入依赖 <!--微信公众号-->...wxjava开发工具包的用法
文档地址: https://github.com/Wechat-Group/WxJava/tree/master/spring-boot-starters/wx-java-mp-spring-boot-starter
首先创建一个springboot的项目
1.引入依赖
<!--微信公众号--> <dependency> <groupId>com.github.binarywang</groupId> <artifactId>wx-java-mp-spring-boot-starter</artifactId> <version>3.6.0</version> </dependency>
2.添加配置(application.yml)
wx: mp: app-id: wxda9310f1c0856d02 secret: 0ebeaf8669ea726bc4e4140149c8572c token: xiaomin aes-key:
接入微信公众号开发
用的是测试的账号,登录微信公众平台,进入测试账号
在将你的服务器接入到微信平台的时候,以及每次微信推送消息给你的服务器的时候,你都应该按照微信的要求对推送过来的消息进行校验,确保这些消息是从微信平台发送过来的。wxMpService.checkSignature()方法是做校验的
package com.xiaomin.wechat_brn.controller; import me.chanjar.weixin.mp.api.WxMpService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class WxVerifyController { @Autowired private WxMpService wxMpService; @GetMapping("/welcome") public String welcome(String signature, String timestamp, String nonce, String echostr) throws Exception { if (!wxMpService.checkSignature(timestamp, nonce, signature)) { // 消息签名不正确,说明不是公众平台发过来的消息 return null; } // 消息合法 return echostr; } }
配置成功,那么就说明接入成功
被动回复用户消息
@Autowired
private WxMpService wxMpService;基本的实现都在这个接口里面,熟悉这个接口就行了
package com.xiaomin.wechat_brn.controller; import me.chanjar.weixin.common.api.WxConsts; import me.chanjar.weixin.common.bean.result.WxMediaUploadResult; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.message.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; import java.io.File; /** * 同步回复消息(被动回复) */ @RestController public class WxMsgController { @Autowired private WxMpService wxMpService; @PostMapping("/welcome") public String welcome(HttpServletRequest request) throws Exception { //获取消息流,并解析xml WxMpXmlMessage message=WxMpXmlMessage.fromXml(request.getInputStream()); System.out.println(message.toString()); //消息类型 String messageType=message.getMsgType(); System.out.println("消息类型:"+messageType); //发送者帐号 String fromUser=message.getFromUser(); System.out.println("发送者账号:"+fromUser); //开发者微信号 String touser=message.getToUser(); System.out.println("开发者微信:"+touser); //文本消息 文本内容 String text=message.getContent(); System.out.println("文本消息:"+text); //获取微信服务器的IP地址 /*String[] callbackIP = wxMpService.getCallbackIP(); for(int i=0;i<callbackIP.length;i++){ System.out.println("IP地址"+i+":"+callbackIP[i]); }*/ /** * 文本消息 */ if(messageType.equals("text")){ WxMpXmlOutTextMessage texts=WxMpXmlOutTextMessage .TEXT() .toUser(fromUser) .fromUser(touser) .content("欢迎光临,热烈欢迎") .build(); String result = texts.toXml(); System.out.println("响应给用户的消息:"+result); return result; } /** * 图片消息 */ if(messageType.equals("image")){ //创建file对象 File file=new File("lyf.jpg"); //上传多媒体文件 WxMediaUploadResult wxMediaUploadResult = wxMpService.getMaterialService().mediaUpload(WxConsts.MediaFileType.IMAGE, file); WxMpXmlOutImageMessage images = WxMpXmlOutMessage.IMAGE() .mediaId(wxMediaUploadResult.getMediaId())//获取上传到微信服务器的临时素材mediaid. .fromUser(touser) .toUser(fromUser) .build(); String result = images.toXml(); System.out.println("响应给用户的消息:"+result); return result; } /** * 音乐 */ if(messageType.equals("misic")){ //创建file对象 File file=new File("E:\\music\\qx.mp3"); //上传多媒体文件 WxMediaUploadResult wxMediaUploadResult = wxMpService.getMaterialService().mediaUpload(WxConsts.MediaFileType.VOICE, file); WxMpXmlOutMusicMessage musics = WxMpXmlOutMessage.MUSIC() .fromUser(fromUser) .toUser(touser) .title("枪声") .description("最强震撼枪声") .hqMusicUrl("高质量音乐链接,WIFI环境优先使用该链接播放音乐") .musicUrl("缩略图的媒体id,通过素材管理中的接口上传多媒体文件,得到的id") .thumbMediaId(wxMediaUploadResult.getMediaId()) .build(); String result = musics.toXml(); System.out.println("响应给用户的消息:"+result); return result; } return null; } }
网页授权
构造网页授权url
核心代码
//构造网页授权url String redirect_uri="http://xiaomin.xiaomy.net/getCode";//回调的url String url = wxMpService.oauth2buildAuthorizationUrl(redirect_uri, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null);
/** * 文本消息 */ if(messageType.equals("text")){ //如果用户输入的是登录,那么进行网页授权 if(text.equals("登录")){ //构造网页授权url String redirect_uri="http://xiaomin.xiaomy.net/getCode";//回调的url String url = wxMpService.oauth2buildAuthorizationUrl(redirect_uri, WxConsts.OAuth2Scope.SNSAPI_USERINFO, null); WxMpXmlOutTextMessage texts=WxMpXmlOutTextMessage .TEXT() .toUser(fromUser) .fromUser(touser) .content("点击<a href=\""+url+"\">这里</a>登录") .build(); String result = texts.toXml(); System.out.println("响应给用户的消息:"+result); return result; } WxMpXmlOutTextMessage texts=WxMpXmlOutTextMessage .TEXT() .toUser(fromUser) .fromUser(touser) .content("欢迎光临,热烈欢迎") .build(); String result = texts.toXml(); System.out.println("响应给用户的消息:"+result); return result; }
用户点击后会来到回调的url上来
package com.xiaomin.wechat_brn.controller; import me.chanjar.weixin.mp.api.WxMpService; import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import me.chanjar.weixin.mp.bean.result.WxMpUser; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @author 晓敏 * @create 2020-04-03 14:44 */ @Controller public class WxAuthorController { @Autowired private WxMpService wxMpService; /** * 网页授权 * 1 第一步:用户同意授权,获取code * <p> * 2 第二步:通过code换取网页授权access_token * <p> * 3 第三步:刷新access_token(如果需要) * <p> * 4 第四步:拉取用户信息(需scope为 snsapi_userinfo) * * @param code * @return */ @GetMapping("/getCode") @ResponseBody public String getCode(String code)throws Exception{ //1 第一步:用户同意授权,获取code System.out.println(code); //2 第二步:通过code换取网页授权access_token WxMpOAuth2AccessToken wxMpOAuth2AccessToken = wxMpService.oauth2getAccessToken(code); //4 第四步:拉取用户信息(需scope为 snsapi_userinfo) WxMpUser wxMpUser = wxMpService.oauth2getUserInfo(wxMpOAuth2AccessToken,null); return wxMpUser.toString(); } }
截图:
代码下载:
链接:https://pan.baidu.com/s/1qQm9Lqh6TYWFhM_KXfDr0A
提取码:8ev6
复制这段内容后打开百度网盘手机App,操作更方便哦 -
SpringBoot中,使用WxJava SDK 实现微信小程序登录
2020-12-28 09:11:32WxJava SDK是一个比较实用的第三方微信开发 Java SDK github地址:https://github.com/Wechat-Group/WxJava #SpringBoot项目中使用WxJava SDK中的weixin-java-miniapp pom文件中加入依赖 <dependency> <...概述
WxJava SDK是一个比较实用的第三方微信开发 Java SDK
github地址:https://github.com/Wechat-Group/WxJavaSpringBoot项目中使用WxJava SDK中的weixin-java-miniapp
- pom文件中加入依赖
<dependency> <groupId>com.github.binarywang</groupId> <artifactId>weixin-java-miniapp</artifactId> </dependency>
- 配置文件yml中加入配置信息
demo: # 开发者应该设置成自己的wx相关信息 wx: app-id: wx60fac1f18be01481 app-secret: 318ceca0f27ffeae6e6baafd3a5730bd mch-id: 123123 mch-key: xxxxxx notify-url: http://www.example.com/wx/order/pay-notify # 商户证书文件路径 # 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3 key-path: xxxxx
- 创建WxProperties.java
@Configuration @ConfigurationProperties(prefix = "demo.wx") public class WxProperties { private String appId; private String appSecret; private String mchId; private String mchKey; private String notifyUrl; private String keyPath; public String getNotifyUrl() { return notifyUrl; } public void setNotifyUrl(String notifyUrl) { this.notifyUrl = notifyUrl; } public String getMchKey() { return mchKey; } public void setMchKey(String mchKey) { this.mchKey = mchKey; } public String getAppId() { return this.appId; } public void setAppId(String appId) { this.appId = appId; } public String getAppSecret() { return appSecret; } public void setAppSecret(String appSecret) { this.appSecret = appSecret; } public String getMchId() { return mchId; } public void setMchId(String mchId) { this.mchId = mchId; } public String getKeyPath() { return keyPath; } public void setKeyPath(String keyPath) { this.keyPath = keyPath; } }
- 创建WxConfig配置类
@Configuration public class WxConfig { @Autowired private WxProperties properties; @Bean public WxMaConfig wxMaConfig() { WxMaInMemoryConfig config = new WxMaInMemoryConfig(); config.setAppid(properties.getAppId()); config.setSecret(properties.getAppSecret()); return config; } @Bean public WxMaService wxMaService(WxMaConfig maConfig) { WxMaService service = new WxMaServiceImpl(); service.setWxMaConfig(maConfig); return service; } }
5.做完上述准备后,在接口层调试一下,创建WxAuthController.java
/** * 鉴权服务 */ @RestController @RequestMapping("/wx/auth") @Validated public class WxAuthController { @Autowired private WxMaService wxService; @PostMapping("login_by_weixin") public Object loginByWeixin(@RequestBody WxLoginInfo wxLoginInfo, HttpServletRequest request) { String code = wxLoginInfo.getCode(); UserInfo userInfo = wxLoginInfo.getUserInfo(); if (code == null || userInfo == null) { return ResponseUtil.badArgument(); } String sessionKey = null; String openId = null; try { WxMaJscode2SessionResult result = this.wxService.getUserService().getSessionInfo(code); sessionKey = result.getSessionKey(); openId = result.getOpenid(); } catch (Exception e) { e.printStackTrace(); } if (sessionKey == null || openId == null) { return ResponseUtil.fail(); } // TODO openId 获取后的业务逻辑实现,如获取用户信息或者未注册用户创建新账号等等 Map<Object, Object> result = new HashMap<Object, Object>(); // TODO返回数据填充 return ResponseUtil.ok(result); } }
总结
OK,以上就是SpringBoot中,使用WxJava SDK 实现微信小程序登录的方法,学会了么?在微信小程序开发中用得比较多的。
-
微信公众号,WxJava框架配置流程
2019-03-22 15:48:40微信公众号WxJava框架配置流程 1、MenuConfig private static String appid = "wx1622e5668b9a456e"; private static String appsecret = "9c636f81ddfadad0f808ed6c8f201988"; private static String token = ... -
springboot2.0整合微信快速开发框架 WxJava
2020-07-22 02:29:11wxjava 码云地址: https://gitee.com/binary/weixin-java-tools?_from=gitee_search 下载了demo项目 测试了一下 idea需要安装lombok插件. 开始放到自己的项目里 引用maven地址 <dependency> <groupId>... -
java整合WxJava框架,开发微信公众号
2020-01-12 19:37:16... 4. 填写URL和Token,URL是微信的回调地址,Token自定义,URL为我的NetApp域名,后面跟mp中WxMpPortalController的路径 ...5. 这块使用的微信开发框架为WxJava框架 https://github.com/Wechat... -
微信公众号二、WxJava 开源框架的配置使用
2020-01-02 07:44:51WxJava 开源框架说明:WxJava - 微信开发 Java SDK,支持微信支付、开放平台、公众号、企业号/企业微信、小程序等的后端开发 一、相关地址 1、微信公众平台:... -
WxJava微信公众号验证token失败问题解决
2019-04-12 17:52:27最近在做微信公众号,使用的是WxJava工具包,然后按照微信要求进行基本配置以后: 服务器地址URL格式:http://公网可访问域名/wx/portal/{appid} 然后访问后台 WxPortalController 的 authGet 方法进行验证 ... -
SpringBoot使用WxJava SDK集成网页授权(OAuth2)
2019-09-11 22:02:42描述 微信官方文档...id=mp1421140842 WxJava SDK github地址https://github.com/Wechat-Group/WxJava 授权步骤 1. 用户同意授权,获得code 2. 通过code换取网页授权access_token 3. 刷新... -
淘东电商项目(13) -项目整合WxJava
2020-02-14 17:11:48在上一节《淘东电商项目(12) -搭建企业级微信公众号》,主要讲解如何搭建微信公众号,以及WxJava 案例的使用。 代码已提交至Github(版本号:7f8e64fdfccf846b89e71dc2e32c1d4988b8f91e),有兴趣的同学可以下载... -
wxJava+springboot+idea 对接详细流程(微信公众号)
2020-06-18 09:58:33wxJava+springboot+idea 对接详细流程首先是pom.xml文件的架包这里我只用到了第一个还有application.yml文件(这个文件一定要配置,wxJava开发文档是说的很清楚的,百度已有很多)其次是我们的配置.java文件,(可能... -
weixin-java-cp-demo:基于Spring Boot和WxJava实现的微信企业号企业微信放置演示-源码
2021-01-30 01:32:31本项目为WxJava的Demo演示程序,基于Spring Boot ,实现企业微信替代开发功能。 更多信息请查阅: : 使用步骤: 请注意,本演示为简化代码编译时加入了lombok支持,如果不了解lombok的话,请先学习下相关知识,可以... -
关于WxJava微信开发如何绕过证书验证问题
2019-09-11 08:21:40关于WxJava微信开发如何绕过证书验证问题 默认使用的是WxCpServiceImpl,使用apache httpclient实现网络请求 * 首先新建一个类 我们进入刚刚的WxCpServiceImpl父类,WxCpServiceApacheHttpClientImpl 可以看到: ... -
基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录
2019-08-12 16:08:211. 概述 2. 前置工作 2.1 微信开放平台认证流程 2.1 项目引入 WxJava 3. 与微信平台交互的步骤以及实现 3.1 获取 access_token 时序图 ...项目源码:基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录... -
订阅号获取openid_SpringBoot + WxJava 之公众号小试牛刀
2020-11-22 20:53:19首先,WxJava 是大佬们开发的关于的微信的公众号、小程序和支付等的全能型开发包,强,真的强!<dependency> <groupId>com.github.binarywanggroupId> <artifactId>weixin-java-mpartifactId&... -
java微信开发工具_WxJava微信开发工具包 v4.0.0
2021-02-12 19:19:20WxJava微信开发Java开发工具包(SDK),支持包括微信支付、微信开放平台、小程序、企业号/企业微信、公众号(包括服务号和订阅号)等的后端开发。本开发工具包基于chanjarster的weixin-java-tools,增加了不少功能和模块... -
搭建企业级微信公众号管理平台(二)----WxJava框架快速开发微信公众号
2019-10-18 09:55:241.WxJava 微信公众号框架初体验 WxJava 微信公众号框架https://github.com/Wechat-Group/WxJava //下载xwjava全量的SDK代码 git clone https://github.com/Wechat-Group/WxJava.git //下载 git clone ... -
springboot 微信太阳码_WxJava基于Spring Boot开发微信公众号手机注册码
2020-12-19 12:59:02WxJava基于Spring Boot开发微信公众号手机注册码Szx•2019 年 05 月 18 日第一步先下载官方Demo https://github.com/binarywang/weixin-java-mp-demo-springboot下载好后,导入demo,把application.yml.template改为... -
Spring Boot微信开发(基于SDK-WxJava),实现了简单的消息处理、生成二维码及扫码事件处理
2019-07-26 18:08:13# Spring Boot微信开发,实现了简单的消息处理、生成二维码及扫码事件处理(基于SDK-WxJava) 本 Demo 基于 Spring Boot 构建,实现微信公众号后端开发功能。 本项目修改自 WxJava 的 Demo 演示程序 weixin-java-mp-... -
ad域帐号登录提示无法处理请求_基于 Spring Boot 和 WxJava 实现网站接入微信扫码登录...
2020-11-26 16:52:421. 概述项目源码:https://github.com/DavidWhom/wechat-login如果项目存在什么问题,欢迎大家提 issue,期待你的来访demo 使用了Spring Boot 和 WxJava (微信开发 Java SDK,支持包括微信...因此如果是刚入门WxJava... -
微信支付 WxJava 简单使用
2020-10-15 10:47:23导入Jar包
-
Docker从入门到精通
-
成绩文件合并.txt
-
MaxScale 实现 MySQL 读写分离与负载均衡
-
2021周记07:新的一年正式开始
-
泰坦尼克号建模分析-你能活下来吗?
-
Java自学第九天 练习
-
11. 含k个3的数.cpp
-
vue项目学习笔记(工程化,前后端分离)
-
C++ STL(十五):常用拷贝算法(copy)和替换算法(replace、replace_if、swap)
-
NFS 实现高可用(DRBD + heartbeat)
-
2021.2.28 前端题
-
MySQL 高可用(DRBD + heartbeat)
-
MySQL 事务和锁
-
小红书图片去水印(免费版).rar
-
ansys electronic 19
-
[蓝桥杯] 骰子迷题 python解法
-
精通编译Makefile,Nina, 从底层uboot到Android
-
SaaS产品项目实施流程
-
com.termux_102.apk
-
计算机复试英语准备.pdf