WeChatOffAccConsts.java
4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
package com.hotent.system.consts;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import cn.hutool.core.util.StrUtil;
import com.hotent.base.exception.BaseException;
import com.hotent.base.util.AppUtil;
import com.hotent.system.enums.BaseUrlEnum;
import com.hotent.system.model.SysExternalUnite;
import com.hotent.system.persistence.manager.SysExternalUniteManager;
/**
* 微信公众号常量/小程序常量
*
* @author pangquan
*
*/
public class WeChatOffAccConsts {
public final static String METHOD_GET = "GET";
public final static String METHOD_POST = "POST";
private final static String OPEN_AUTHORIZE_URL = "https://open.weixin.qq.com/connect/oauth2/authorize";
private final static String WX_URL = "https://api.weixin.qq.com/sns/oauth2";
private final static String WX_Base_Url = "https://api.weixin.qq.com";
public static SysExternalUnite getUnite() {
SysExternalUniteManager manager = AppUtil.getBean(SysExternalUniteManager.class);
return manager.getWeChatOfficialAccounts();
}
public static String generateMenuUrl(String baseUrl, String corpId, BaseUrlEnum baseUrlEnum) throws UnsupportedEncodingException {
String path = BaseUrlEnum.PC.equals(baseUrlEnum)?"index":"home";
if(!baseUrl.endsWith(StrUtil.SLASH)){
path = StrUtil.SLASH + path;
}
String redirectUri = baseUrl + "/weChatOffAcc?redirect=" + baseUrl + "/home";
return OPEN_AUTHORIZE_URL + "?appid=" + corpId + "&redirect_uri=" + URLEncoder.encode(redirectUri, "UTF-8")
+ "&response_type=code&scope=snsapi_base&state=hotent#wechat_redirect";
}
/**
* 通过code appid secret 获取access_token
*
* @param code
* @return
*/
public static String getWxAccessToken(String code) {
SysExternalUnite unite = getUnite();
String url = WX_URL + "/access_token?appid=" + unite.getCorpId() + "&secret=" + unite.getCorpSecret() + "&code="
+ code + "&grant_type=authorization_code";
return url;
}
/**
* 防止token超时refresh刷新 access_token
*
* @param appid
* refreshToken
* @return
*/
public static String refreshToken(String refreshToken) {
SysExternalUnite unite = getUnite();
String url = WX_URL + "/refresh_token?appid=" + unite.getCorpId() + "&grant_type=refresh_token"
+ "&refresh_token=" + refreshToken;
return url;
}
/**
* 通过access_token openid获取用户基本信息
*
* @param access_token
* openid
*
* @return
*/
public static String getWxUserInfo(String access_token, String openid) {
String url = WX_Base_Url + "/sns/userinfo?access_token=" + access_token + "&openid=" + openid;
return url;
}
/**
* 微信公众号发送模板消息
*
* @return
*/
public static String send(String access_token) {
String url = WX_Base_Url + "/cgi-bin/message/template/send?access_token=" + access_token;
return url;
}
public static String getTokenUrl() {
SysExternalUnite unite = getUnite();
String url = WX_Base_Url + "/token?grant_type=client_credential&appid=" + unite.getCorpId() + "&secret="
+ unite.getCorpSecret();
return url;
}
public static String getWxAuthorize(String paramStr) throws UnsupportedEncodingException {
SysExternalUnite unite = getUnite();
String corpId = unite.getCorpId();
String baseUrl = unite.getBaseUrl() + "/weChatOffAcc?params=" + paramStr;
String redirect = URLEncoder.encode(baseUrl, "utf-8");
String url = OPEN_AUTHORIZE_URL + "?appid=" + corpId + "&redirect_uri=" + redirect
+ "&response_type=code&scope=snsapi_base&state=STATE#wechat_redirect";
return url;
}
//-------------------------------------以下小程序的接口地址--------------------------------------------------
public static SysExternalUnite getMiniprogramUnite() {
SysExternalUniteManager manager = AppUtil.getBean(SysExternalUniteManager.class);
SysExternalUnite miniprogram = manager.getMiniprogram();
if(miniprogram != null){
return miniprogram;
}
throw new BaseException("系统查无小程序集成信息");
}
public static String code2SessionUrl(String code){
SysExternalUnite miniprogramUnite = getMiniprogramUnite();
return String.format(WX_Base_Url+
"/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code",
miniprogramUnite.getAgentId(),
miniprogramUnite.getAgentSecret(),
code);
}
}