Skip to content

Commit 7f6efaa

Browse files
committed
Merge pull request #13 from chengn/master
add js-sdk
2 parents f37c8c3 + 17dd978 commit 7f6efaa

33 files changed

+767
-244
lines changed

META-INF/wechat4j.properties.sample

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,14 @@ wechat.encodingaeskey=
99
#wechat appid
1010
wechat.appid=appid
1111
#wechat app secret
12-
wechat.appsecret=secret
12+
wechat.appsecret=appsecret
1313

1414
#wechat access token server ,when you save in db,must implement you server class
15-
#this class must extend org.sword.wechat4j.token.DbAccessTokenServer
16-
#if no this property,then token server is default memery accesstoken server()
15+
#this class must extend org.sword.wechat4j.token.server.CustomerServer
16+
#if no this property,then token server is default memery accesstoken server
1717
wechat.accessToken.server.class=
18+
19+
#jsapi_ticket customer server class name,
20+
#this class must extend org.sword.wechat4j.token.server.CustomerServer
21+
#if no this property,then ticket server is default memery ticket server
22+
wechat.ticket.jsapi.server.class=

src/org/sword/wechat4j/common/Config.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public class Config {
2525
private String appid;
2626
private String appSecret;
2727
private String accessTokenServer;
28+
private String jsApiTicketServer;
2829
private static Config config = new Config();
2930

3031
private Config(){
@@ -42,6 +43,7 @@ private Config(){
4243
this.appid = p.getProperty("wechat.appid");
4344
this.appSecret = p.getProperty("wechat.appsecret");
4445
this.accessTokenServer = p.getProperty("wechat.accessToken.server.class");
46+
this.jsApiTicketServer = p.getProperty("wechat.ticket.jsapi.server.class");
4547
inStream.close();
4648
} catch (IOException e) {
4749
logger.error("load wechat4j.properties error,class根目录下找不到wechat4j.properties文件");
@@ -74,5 +76,10 @@ public String getEncodingAESKey() {
7476
public String getAccessTokenServer(){
7577
return accessTokenServer;
7678
}
79+
80+
public String getJsApiTicketServer() {
81+
return jsApiTicketServer;
82+
}
83+
7784

7885
}

src/org/sword/wechat4j/message/CustomerMsg.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import org.sword.wechat4j.response.MusicResponse;
1616
import org.sword.wechat4j.response.VideoResponse;
1717
import org.sword.wechat4j.token.AccessToken;
18-
import org.sword.wechat4j.token.AccessTokenProxy;
18+
import org.sword.wechat4j.token.TokenProxy;
1919

2020
import com.alibaba.fastjson.JSONArray;
2121
import com.alibaba.fastjson.JSONObject;
@@ -56,7 +56,7 @@ public CustomerMsg(String toUserOpenId){
5656
* @param msgBody
5757
*/
5858
private void send(){
59-
String accessToken = AccessTokenProxy.token();
59+
String accessToken = TokenProxy.accessToken();
6060
if(StringUtils.isBlank(this.toUserOpenId))
6161
return;
6262
//token不存在则重新刷新token

src/org/sword/wechat4j/message/TemplateMsg.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import org.sword.lang.HttpUtils;
99
import org.sword.wechat4j.message.template.TemplateMsgBody;
1010
import org.sword.wechat4j.message.template.TemplateMsgData;
11-
import org.sword.wechat4j.token.AccessTokenProxy;
11+
import org.sword.wechat4j.token.TokenProxy;
1212

1313
import com.alibaba.fastjson.JSONObject;
1414

@@ -31,7 +31,7 @@ public class TemplateMsg {
3131
private String accessToken;
3232

3333
public TemplateMsg(){
34-
this.accessToken = AccessTokenProxy.token();
34+
this.accessToken = TokenProxy.accessToken();
3535
}
3636

3737
/**

src/org/sword/wechat4j/token/AccessToken.java

Lines changed: 12 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -3,120 +3,42 @@
33
*/
44
package org.sword.wechat4j.token;
55

6-
import java.util.Date;
76

8-
import org.apache.commons.lang3.StringUtils;
97
import org.apache.log4j.Logger;
10-
import org.sword.lang.HttpUtils;
118
import org.sword.wechat4j.common.Config;
129

13-
import com.alibaba.fastjson.JSONObject;
1410

1511
/**
1612
* Access token实体模型
1713
* @author ChengNing
1814
* @date 2014年12月12日
1915
*/
20-
public class AccessToken {
16+
public class AccessToken extends Token {
2117

2218
private static Logger logger = Logger.getLogger(AccessToken.class);
2319
private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential";
2420

25-
private String accessToken; //token
26-
private long expires; //token有效时间
27-
private long tokenTime; //token产生时间
28-
29-
private int redundance = 10*1000; //冗余时间,提前10秒就去请求新的token
30-
31-
/**
32-
* 请求信的access token
33-
* http请求方式: GET
34-
https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
35-
{"access_token":"ACCESS_TOKEN","expires_in":7200}
36-
{"errcode":40013,"errmsg":"invalid appid"}
37-
* @return
38-
*/
39-
public boolean request(){
40-
String url = accessTokenUrl();
41-
String result = HttpUtils.get(url);
42-
if(StringUtils.isBlank(result))
43-
return false;
44-
JSONObject jsonObject = JSONObject.parseObject(result);
45-
String accessToken = jsonObject.get("access_token").toString();
46-
if(StringUtils.isBlank(accessToken)){
47-
logger.error("access_token获取失败,获取结果" + result);
48-
return false;
49-
}
50-
this.accessToken = accessToken;
51-
this.tokenTime = (new Date()).getTime();
52-
String expiresIn = jsonObject.get("expires_in").toString();
53-
if(StringUtils.isBlank(expiresIn)){
54-
logger.error("access_token获取失败,获取结果" + expiresIn);
55-
return false;
56-
}
57-
else{
58-
this.expires = Long.valueOf(expiresIn);
59-
}
60-
logger.info("access_token获取成功");
61-
return true;
62-
}
63-
64-
/**
65-
* 得到access token
66-
* @return
67-
*/
68-
public String getAccessToken(){
69-
return this.accessToken;
21+
22+
@Override
23+
protected String tokenName() {
24+
return "access_token";
7025
}
71-
72-
/**
73-
* 得到有效时间
74-
* @return
75-
*/
76-
public long getExpires() {
77-
return expires;
26+
27+
@Override
28+
protected String expiresInName() {
29+
return "expires_in";
7830
}
7931

8032
/**
8133
* 组织accesstoken的请求utl
82-
* @return
8334
*/
84-
private String accessTokenUrl(){
35+
@Override
36+
protected String accessTokenUrl() {
8537
String appid = Config.instance().getAppid();
8638
String appsecret = Config.instance().getAppSecret();
8739
String url = ACCESS_TOKEN_URL + "&appid=" + appid + "&secret=" + appsecret;
40+
logger.info("创建获取access_token url");
8841
return url;
89-
90-
}
91-
92-
/**
93-
* accessToken 是否有效
94-
* @return true:有效,false: 无效
95-
*/
96-
public boolean isValid(){
97-
//黑名单判定法
98-
if(StringUtils.isBlank(this.accessToken))
99-
return false;
100-
if(this.expires <= 0)
101-
return false;
102-
//过期
103-
if(isExpire())
104-
return false;
105-
return true;
106-
}
107-
108-
/**
109-
* 是否过期
110-
* @return true 过期 false:有效
111-
*/
112-
private boolean isExpire(){
113-
Date currentDate = new Date();
114-
long currentTime = currentDate.getTime();
115-
long expiresTime = expires * 1000 - redundance;
116-
//判断是否过期
117-
if((tokenTime + expiresTime) > currentTime)
118-
return false;
119-
return true;
12042
}
12143

12244

src/org/sword/wechat4j/token/AccessTokenProxy.java

Lines changed: 0 additions & 31 deletions
This file was deleted.

src/org/sword/wechat4j/token/AccessTokenServer.java

Lines changed: 0 additions & 46 deletions
This file was deleted.

src/org/sword/wechat4j/token/DbAccessTokenServer.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

src/org/sword/wechat4j/token/IAccessTokenServer.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

0 commit comments

Comments
 (0)