微信封装
介绍
微信对接封装,内置缓存,实现授权,签名、消息推送、ticket自动更新缓存(1.5小时)
软件架构
java封装
安装教程
将项目打包并引入
一、引入jar包
1,项目根目录下创建lib文件夹,并添加jar包
2,修改pom.xml 文件
①,引入依赖
<dependency>
<groupId>wx.control.centre</groupId>
<!--填写引入jar包包名-->
<artifactId>wx-control-centre-1.0</artifactId>
<!--填入版本号-->
<version>1.0</version>
<scope>system</scope>
<systemPath>${pom.basedir}/lib/wx-control-centre-1.0.jar</systemPath>
</dependency>
②.1打包配置(war包)
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webResources>
<resource>
<directory>${basedir}\lib</directory>
<targetPath>WEB-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
</webResources>
</configuration>
</plugin>
####②.2打包配置(jar包)
org.springframework.boot
spring-boot-maven-plugin
true
使用说明
- WeChatAuthServer 微信网页授权
- WeChatSNSAuthServer 网页授权,获取相关信息
- WeChatCgiBinServer 基础接口调用
- WeChatSignatureServer 签名服务
- WeChatMsgServer 消息推送
1.调用说明
xxxxServer.serverName(param);
①.WeChatAuthServer
1.获取授权回调地址
getAuthorizeUrl(String APPID, String REDIRECT_URI, String SCOPE)
参数 |
说明 |
APPID |
第三方用户唯一凭证 |
REDIRECT_URI |
授权后重定向的回调链接地址,无需使用urlEncode对链接进行处理 |
SCOPE |
应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 ) |
2.获取授权回调地址-静默授权(不弹出授权页面,直接跳转,只能获取用户openid)
getAuthorizeUrlByBase(String APPID,String REDIRECT_URI)
3.获取授权回调地址-非静默授权(弹出授权页面,可通过openid拿到昵称、性别、所在地)
getAuthorizeUrlByUserInfo(String APPID,String REDIRECT_URI)
②.WeChatSNSAuthServer
1.获取网页授权凭证(主要网页授权Access_Token和openId)
注:授权回调返回的code值只能使用一次
getOauth2TokenByCode(String appId, String appSecret,String Code)
参数 |
说明 |
appId |
公众号的唯一标识 |
appSecret |
公众号的appsecret |
Code |
填写授权后获取的code参数(跟在回调路由后) |
####返回网页授权凭证,用WeixinOauth2Token接收
参数 |
说明 |
accessToken |
网页授权接口调用凭证 |
expiresIn |
凭证有效时长 |
refreshToken |
用于刷新凭证 |
openId |
用户标识 |
scope |
用户授权作用域 |
2.获取openId
getOpenIdByCode(String appId, String appSecret,String Code)
参数 |
说明 |
appId |
公众号的唯一标识 |
appSecret |
公众号的appsecret |
Code |
填写授权后获取的code参数(跟在回调路由后) |
3.获取微信用户信息-网页授权作用域为snsapi_userinfo
getSnsUserInfo(String openId,String accessToken)
参数 |
说明 |
openId |
用户的openId |
accessToken |
第一步获取的Access_Token |
返回用户信息,使用 SNSUserInfo 对象接收
参数 |
说明 |
openId |
用户标识 |
nickname |
用户昵称 |
sex |
性别(1是男性,2是女性,0是未知) |
country |
国家 |
province |
省份 |
city |
城市 |
headImgUrl |
用户头像链接 |
privilegeList |
用户特权信息(即将废弃) |
unionid |
用户unionid,需要绑定开放平台才会获取到 |
4. 获取refresh_token 用于刷新access_token(如果需要)
getRefreshTokenByCode(String appId, String appSecret,String Code)
参数 |
说明 |
appId |
公众号的唯一标识 |
appSecret |
公众号的appsecret |
Code |
填写授权后获取的code参数(跟在回调路由后) |
5. 刷新access_token
refreshToken(String appId,String refreshToken)
参数 |
说明 |
appId |
公众号的唯一标识 |
refreshToken |
通过getRefreshTokenByCode获取到的refresh_token参数值 |
6. 检验授权凭证(access_token)是否有效
checkSnsAuth(String openId,String accessToken)
参数 |
说明 |
openId |
用户标识 |
accessToken |
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同 |
③.WeChatCgiBinServer
1.获取token。已缓存
getToken(String appId,String appSecret)
参数 |
说明 |
appId |
公众号的唯一标识 |
appSecret |
公众号的appsecret |
2.获取ticket。已缓存
getTicket(String accessToken)
参数 |
说明 |
accessToken |
getToken()获取的值 |
④.WeChatSignatureServer
1.获取签名,通过appId和secert
getSignature(String AppId,String SECRET,String url)
参数 |
说明 |
AppId |
公众号的唯一标识 |
SECRET |
公众号的appsecret |
url |
当前网页的URL,不包含#及其后面部分 |
2.获取签名,通过jsapiTicket
getSignatureByTicket(String AppId,String jsapiTicket,String url)
参数 |
说明 |
AppId |
公众号的唯一标识 |
jsapiTicket |
ticket(WeChatCgiBinServer.getTicket(String accessToken)) |
url |
当前网页的URL,不包含#及其后面部分 |
返回数据使用JSONObject接收
参数 |
说明 |
state |
状态值 |
appId |
公众号的唯一标识 |
timestamp |
时间戳 |
nonceStr |
随机码 |
signature |
签名 |
jsapi_ticket |
ticket |
⑤.WeChatMsgServer
1.根据模板id推送消息-接收对象 Message
templateSend(Message vo, String accessToken)
参数 |
说明 |
toUser |
接收者openid |
templateId |
模板ID |
title |
标题 |
remark |
备注 |
keyword1 |
keyword1 |
keyword2 |
keyword2 |
keyword3 |
keyword3 |
keyword4 |
keyword4 |
keyword5 |
keyword5 |
smUrl |
模板跳转链接(海外帐号没有跳转能力) |
smAppId |
所需跳转到的小程序appid(该小程序appid必须与发模板消息的公众号是绑定关联关系,暂不支持小游戏) 不跳转小程序可不填 |
smPagePath |
所需跳转到小程序的具体页面路径,支持带参数,(示例index?foo=bar),要求该小程序已发布,暂不支持小游戏)不跳转小程序可不填 |
remarkColor |
备注字体颜色,不填默认为黑色 |
titleColor |
标题字体颜色,不填默认为黑色 |