diff --git a/CHANGE.md b/CHANGE.md
index c68ba180..b758b4f7 100644
--- a/CHANGE.md
+++ b/CHANGE.md
@@ -540,3 +540,5 @@
+ 添加可选[RedisTokenStorager](weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java)
+ 添加缓存token时的前缀`wx`
+
+ + 【特大注意】weixin4j.properties全部的属性名添加`weixin4j`前缀,并用`.`代替原来的`_`
diff --git a/README.md b/README.md
index be2c54dd..18abbfbc 100644
--- a/README.md
+++ b/README.md
@@ -26,14 +26,14 @@ weixin4j
如何获取
----------
###1.maven依赖
-微信公众平台API(1.6.4,2015-12-08 released)
+微信公众平台API(1.6.4,2015-12-10 released)
com.foxinmy
weixin4j-mp
1.6.4
-微信企业号API(1.6.4,2015-12-08 released)
+微信企业号API(1.6.4,2015-12-10 released)
com.foxinmy
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/BaseApi.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/BaseApi.java
index 90e2aa38..ee494ba5 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/BaseApi.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/BaseApi.java
@@ -59,7 +59,7 @@ public abstract class BaseApi {
static {
DEFAULT_WEIXIN_ACCOUNT = Weixin4jConfigUtil.getWeixinAccount();
DEFAULT_TOKEN_STORAGER = new FileTokenStorager(
- Weixin4jConfigUtil.getValue("token_path",
+ Weixin4jConfigUtil.getValue("token.path",
Weixin4jConst.DEFAULT_TOKEN_PATH));
}
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java
index f9fb38e1..71a123ed 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/api/Pay3Api.java
@@ -39,6 +39,7 @@ import com.foxinmy.weixin4j.util.DateUtil;
import com.foxinmy.weixin4j.util.RandomUtil;
import com.foxinmy.weixin4j.util.StringUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
+import com.foxinmy.weixin4j.util.Weixin4jConst;
import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
import com.foxinmy.weixin4j.xml.XmlStream;
@@ -305,7 +306,8 @@ public class Pay3Api {
billType = BillType.ALL;
}
String formatBillDate = DateUtil.fortmat2yyyyMMdd(billDate);
- String bill_path = Weixin4jConfigUtil.getValue("bill_path");
+ String bill_path = Weixin4jConfigUtil.getValue("bill.path",
+ Weixin4jConst.DEFAULT_BILL_PATH);
String fileName = String.format("%s_%s_%s.txt", formatBillDate,
billType.name().toLowerCase(), weixinAccount.getId());
File file = new File(String.format("%s/%s", bill_path, fileName));
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/AbstractHttpClient.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/AbstractHttpClient.java
index 217e3355..4c09a706 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/AbstractHttpClient.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/AbstractHttpClient.java
@@ -115,7 +115,12 @@ public abstract class AbstractHttpClient implements HttpClient {
protected void handleResponse(HttpResponse response)
throws HttpClientException {
HttpStatus status = response.getStatus();
- if (hasError(status)) {
+ HttpHeaders headers = response.getHeaders();
+ String contentType = headers.getFirst(HttpHeaders.CONTENT_TYPE);
+ boolean jsonResult = contentType != null
+ && contentType.contains(ContentType.APPLICATION_JSON
+ .getMimeType());
+ if (!jsonResult && hasError(status)) {
switch (status.series()) {
case CLIENT_ERROR:
case SERVER_ERROR:
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java
index c94776a1..39f635e3 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/factory/HttpClientFactory.java
@@ -28,7 +28,7 @@ public abstract class HttpClientFactory {
private static volatile HttpClientFactory defaultFactory = newDefaultFactory();
/**
- * NettyHttpClient -> ApachHttpClient -> SimpleHttpClient(HttpURLConnection)
+ * NettyHttpClient -> ApacheHttpClient -> SimpleHttpClient(HttpURLConnection)
*
* @return
*/
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
index 45881e0d..b7bffa87 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/payment/WeixinPayProxy.java
@@ -68,7 +68,7 @@ public class WeixinPayProxy {
this.pay3Api = new Pay3Api(weixinAccount);
this.couponApi = new CouponApi(weixinAccount);
this.cashApi = new CashApi(weixinAccount);
- this.DEFAULT_CA_FILE = Weixin4jConfigUtil.getClassPathValue("ca_file",
+ this.DEFAULT_CA_FILE = Weixin4jConfigUtil.getClassPathValue("certificate.file",
Weixin4jConst.DEFAULT_CAFILE_PATH);
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jConfigUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jConfigUtil.java
index e5650061..dc585b65 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jConfigUtil.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jConfigUtil.java
@@ -3,7 +3,6 @@ package com.foxinmy.weixin4j.util;
import java.io.File;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-import java.util.Set;
import com.alibaba.fastjson.JSON;
import com.foxinmy.weixin4j.model.WeixinAccount;
@@ -23,12 +22,11 @@ public class Weixin4jConfigUtil {
private final static ResourceBundle weixinBundle;
static {
weixinBundle = ResourceBundle.getBundle("weixin4j");
- Set keySet = weixinBundle.keySet();
File file = null;
CLASSPATH_VALUE = Thread.currentThread().getContextClassLoader()
.getResource("").getPath();
- for (String key : keySet) {
- if (!key.endsWith("_path")) {
+ for (String key : weixinBundle.keySet()) {
+ if (!key.endsWith(".path")) {
continue;
}
file = new File(getValue(key).replaceFirst(CLASSPATH_PREFIX,
@@ -40,6 +38,15 @@ public class Weixin4jConfigUtil {
}
}
+ private final static String WEIXIN4J_PREFIX = "weixin4j";
+
+ private static String wrapKeyName(String key) {
+ if (!key.startsWith(WEIXIN4J_PREFIX)) {
+ return String.format("%s.%s", WEIXIN4J_PREFIX, key);
+ }
+ return key;
+ }
+
/**
* 获取weixin4j.properties文件中的key值
*
@@ -47,7 +54,8 @@ public class Weixin4jConfigUtil {
* @return
*/
public static String getValue(String key) {
- return weixinBundle.getString(key);
+ String wrapKey = wrapKeyName(key);
+ return System.getProperty(wrapKey, weixinBundle.getString(wrapKey));
}
/**
@@ -60,7 +68,7 @@ public class Weixin4jConfigUtil {
public static String getValue(String key, String defaultValue) {
String value = defaultValue;
try {
- value = weixinBundle.getString(key);
+ value = getValue(key);
} catch (MissingResourceException e) {
System.err.println("'" + key
+ "' key not found in weixin4j.properties file.");
@@ -101,7 +109,8 @@ public class Weixin4jConfigUtil {
public static WeixinAccount getWeixinAccount() {
WeixinAccount account = null;
try {
- account = JSON.parseObject(getValue("account"), WeixinAccount.class);
+ account = JSON
+ .parseObject(getValue("account"), WeixinAccount.class);
} catch (MissingResourceException e) {
System.err
.println("'account' key not found in weixin4j.properties file.");
diff --git a/weixin4j-mp/CHANGE.md b/weixin4j-mp/CHANGE.md
index b86c9176..19baf66f 100644
--- a/weixin4j-mp/CHANGE.md
+++ b/weixin4j-mp/CHANGE.md
@@ -170,6 +170,8 @@
+ version upgrade to 1.6.3
-* 2015-12-08
+* 2015-12-10
+ version upgrade to 1.6.4
+
+ + 【特大注意】weixin4j.properties全部的属性名添加`weixin4j`前缀,并用`.`代替原来的`_`
diff --git a/weixin4j-mp/README.md b/weixin4j-mp/README.md
index 65d06c02..be647d1e 100644
--- a/weixin4j-mp/README.md
+++ b/weixin4j-mp/README.md
@@ -43,7 +43,7 @@ weixin4j-mp
如何使用
--------
-0.maven依赖(1.6.4,2015-12-08 released)
+0.maven依赖(1.6.4,2015-12-10 released)
com.foxinmy
@@ -56,32 +56,32 @@ weixin4j.properties说明
| 属性名 | 说明 |
| :---------- | :-------------- |
-| account | 微信公众号信息 `json格式`(使用new WeixinProxy()缺省构造器时须填写) |
-| token_path | 使用FileTokenStorager时token保存的物理路径(非必须填写) |
-| qr_path | 调用二维码接口时保存二维码图片的物理路径(非必须填写) |
-| media_path | 调用媒体接口时保存媒体文件的物理路径(非必须填写) |
-| bill_path | 调用下载对账单接口保存文件的物理路径(非必须填写) |
-| ca_file | 调用某些接口(支付相关)强制需要auth的ca授权文件(按须填写) |
-| user_oauth_redirect_uri | 调用OauthApi接口时需要填写的重定向路径(非必须填写) |
+| weixin4j.account | 微信公众号信息 `json格式`(使用new WeixinProxy()缺省构造器时须填写) |
+| weixin4j.token.path | 使用FileTokenStorager时token保存的物理路径(非必须填写) |
+| weixin4j.qrcode.path | 调用二维码接口时保存二维码图片的物理路径(非必须填写) |
+| weixin4j.media.path | 调用媒体接口时保存媒体文件的物理路径(非必须填写) |
+| weixin4j.bill.path | 调用下载对账单接口保存文件的物理路径(非必须填写) |
+| weixin4j.certificate.file | 调用某些接口(支付相关)强制需要auth的ca授权文件(按须填写) |
+| weixin4j.user.oauth.redirect.uri | 调用OauthApi接口时需要填写的重定向路径(非必须填写) |
完整填写示例(properties中换行用右斜杆\\)
- account={"id":"appId","secret":"appSecret",\
+ weixin4j.account={"id":"appId","secret":"appSecret",\
"mchId":"V3.x版本下的微信商户号",\
"partnerId":"V2版本下的财付通的商户号",\
"partnerKey":"V2版本下的财付通商户权限密钥Key",\
"paySignKey":"微信支付中调用API的密钥"}
- token_path=/tmp/weixin4j/token
- qr_path=/tmp/weixin4j/qrcode
- media_path=/tmp/weixin4j/media
- bill_path=/tmp/weixin4j/bill
+ weixin4j.token.path=/tmp/weixin4j/token
+ weixin4j.qrcode.path=/tmp/weixin4j/qrcode
+ weixin4j.media.path=/tmp/weixin4j/media
+ weixin4j.bill.path=/tmp/weixin4j/bill
# ca证书存放的完整路径 (V2版本后缀为*.pfx,V3版本后缀为*.p12)
- ca_file=/tmp/weixin4j/xxxxx.p12
- #classpath路径下:ca_file=classpath:xxxxx.p12
+ weixin4j.certificate.file=/tmp/weixin4j/xxxxx.p12
+ #classpath路径下:weixin4j.certificate.file=classpath:xxxxx.p12
#公众号登陆授权的重定向路径(使用OauthApi时需要填写)
- user_oauth_redirect_uri=http://xxx
+ weixin4j.user.oauth.redirect.uri=http://xxx
2.实例化微信企业号接口代理对象,调用具体的API方法
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
index 5a6f3bdd..029c86e4 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MediaApi.java
@@ -249,7 +249,7 @@ public class MediaApi extends MpApi {
*/
public File downloadMediaFile(String mediaId, boolean isMaterial)
throws WeixinException {
- String media_path = Weixin4jConfigUtil.getValue("media_path",
+ String media_path = Weixin4jConfigUtil.getValue("media.path",
Weixin4jConst.DEFAULT_MEDIA_PATH);
final String prefixName = String.format("%s.", mediaId);
File[] files = new File(media_path).listFiles(new FilenameFilter() {
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java
index 03f25bfe..0a70f340 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/OauthApi.java
@@ -33,7 +33,7 @@ public class OauthApi extends MpApi {
public String getAuthorizeURL() {
String appId = DEFAULT_WEIXIN_ACCOUNT.getId();
String redirectUri = Weixin4jConfigUtil
- .getValue("user_oauth_redirect_uri");
+ .getValue("user.oauth.redirect.uri");
return getAuthorizeURL(appId, redirectUri, "state", "snsapi_base");
}
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java
index 2e670e3a..3b9f0e76 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java
@@ -51,6 +51,7 @@ import com.foxinmy.weixin4j.util.DigestUtil;
import com.foxinmy.weixin4j.util.MapUtil;
import com.foxinmy.weixin4j.util.StringUtil;
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
+import com.foxinmy.weixin4j.util.Weixin4jConst;
import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
/**
@@ -346,7 +347,7 @@ public class Pay2Api extends MpApi {
* @since V2
* @throws WeixinException
*/
- public File downloadbill(Date billDate, BillType billType)
+ public File downloadBill(Date billDate, BillType billType)
throws WeixinException {
if (billDate == null) {
Calendar now = Calendar.getInstance();
@@ -357,7 +358,8 @@ public class Pay2Api extends MpApi {
billType = BillType.ALL;
}
String formatBillDate = DateUtil.fortmat2yyyyMMdd(billDate);
- String bill_path = Weixin4jConfigUtil.getValue("bill_path");
+ String bill_path = Weixin4jConfigUtil.getValue("bill.path",
+ Weixin4jConst.DEFAULT_BILL_PATH);
String fileName = String.format("%s_%s_%s.txt", formatBillDate,
billType.name().toLowerCase(), weixinAccount.getId());
File file = new File(String.format("%s/%s", bill_path, fileName));
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java
index 29d40e51..2c27f379 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/QrApi.java
@@ -80,7 +80,7 @@ public class QrApi extends MpApi {
* @see com.foxinmy.weixin4j.mp.model.QRParameter
*/
public File createQRFile(QRParameter parameter) throws WeixinException {
- String qr_path = Weixin4jConfigUtil.getValue("qr_path",
+ String qr_path = Weixin4jConfigUtil.getValue("qrcode.path",
Weixin4jConst.DEFAULT_QRCODE_PATH);
String filename = String.format("%s_%s_%d.jpg", parameter.getQrType()
.name(), parameter.getSceneValue(), parameter
diff --git a/weixin4j-mp/src/main/resources/weixin4j.properties b/weixin4j-mp/src/main/resources/weixin4j.properties
index fec4b1d7..7815943b 100644
--- a/weixin4j-mp/src/main/resources/weixin4j.properties
+++ b/weixin4j-mp/src/main/resources/weixin4j.properties
@@ -1,23 +1,23 @@
# \u6d4b\u8bd5\u4e4b\u7528 \u6b63\u5f0f\u73af\u5883\u4e0bcopy\u4e00\u4efd\u5230classpath
# \u516c\u4f17\u53f7\u4fe1\u606f
-account={"id":"wx4ab8f8de58159a57","secret":"1d4eb0f4bf556aaed539f30ed05ca795",\
+weixin4j.account={"id":"wx4ab8f8de58159a57","secret":"1d4eb0f4bf556aaed539f30ed05ca795",\
"mchId":"V3.x\u7248\u672c\u4e0b\u7684\u5fae\u4fe1\u5546\u6237\u53f7 \u670d\u52a1\u53f7\u652f\u4ed8\u65f6\u9700\u8981\u586b\u5165",\
"partnerId":"V2\u7248\u672c\u4e0b\u7684\u8d22\u4ed8\u901a\u7684\u5546\u6237\u53f7 \u670d\u52a1\u53f7\u652f\u4ed8\u65f6\u9700\u8981\u586b\u5165",\
"partnerKey":"V2\u7248\u672c\u4e0b\u7684\u8d22\u4ed8\u901a\u5546\u6237\u6743\u9650\u5bc6\u94a5Key \u670d\u52a1\u53f7\u652f\u4ed8\u65f6\u9700\u8981\u586b\u5165",\
"paySignKey":"\u5fae\u4fe1\u652f\u4ed8\u4e2d\u8c03\u7528API\u7684\u5bc6\u94a5 \u670d\u52a1\u53f7\u652f\u4ed8\u65f6\u9700\u8981\u586b\u5165"}
# \u4f7f\u7528FileTokenStorager\u65f6token\u7684\u5b58\u653e\u8def\u5f84
-token_path=/tmp/weixin4j/token
+weixin4j.token.path=/tmp/weixin4j/token
# \u4e8c\u7ef4\u7801\u4fdd\u5b58\u8def\u5f84
-qr_path=/tmp/weixin4j/qrcode
+weixin4j.qrcode.path=/tmp/weixin4j/qrcode
# \u5a92\u4f53\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84
-media_path=/tmp/weixin4j/media
+weixin4j.media.path=/tmp/weixin4j/media
# \u5bf9\u8d26\u5355\u4fdd\u5b58\u8def\u5f84
-bill_path=/tmp/weixin4j/bill
+weixin4j.bill.path=/tmp/weixin4j/bill
# ca\u8bc1\u4e66\u5b58\u653e\u7684\u5b8c\u6574\u8def\u5f84 (V2\u7248\u672c\u540e\u7f00\u4e3a*.pfx,V3\u7248\u672c\u540e\u7f00\u4e3a*.p12)
-ca_file=/tmp/weixin4j/xxxxx.p12
+weixin4j.certificate.file=/tmp/weixin4j/xxxxx.p12
# classpath\u8def\u5f84\u4e0b\u53ef\u4ee5\u8fd9\u4e48\u5199
-# ca_file=classpath:xxxxx.pfx
+# weixin4j.certificate.file=classpath:xxxxx.pfx
# \u7528\u6237oauth\u6388\u6743\u540e\u91cd\u5b9a\u5411\u7684url
-user_oauth_redirect_uri=
\ No newline at end of file
+weixin4j.user.oauth.redirect.uri=
\ No newline at end of file
diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java
index 1af9556b..02242a9c 100644
--- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java
+++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java
@@ -37,7 +37,7 @@ public class PayTest {
"请填入v2版本的partnerKey");
PAY2 = new Pay2Api(ACCOUNT2, new FileTokenStorager(
Weixin4jConfigUtil
- .getValue("token_path", "/tmp/weixin4j/token")));
+ .getValue("token.path", "/tmp/weixin4j/token")));
ACCOUNT3 = new WeixinPayAccount("请填入v3版本的appid", "请填入v3版本的appSecret",
"请填入v3版本的paysignkey", "请填入v3版本的mchid", null, null, null, null);
PAY3 = new WeixinPayProxy(ACCOUNT3);
@@ -74,7 +74,7 @@ public class PayTest {
c.set(Calendar.YEAR, 2014);
c.set(Calendar.MONTH, 11);
c.set(Calendar.DAY_OF_MONTH, 22);
- File file = PAY2.downloadbill(c.getTime(), null);
+ File file = PAY2.downloadBill(c.getTime(), null);
System.err.println(file);
}
diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java
index f7a9e2a8..673c7a1e 100644
--- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java
+++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/TokenTest.java
@@ -28,7 +28,7 @@ public class TokenTest {
WeixinAccount weixinAccount = Weixin4jConfigUtil.getWeixinAccount();
tokenHolder = new TokenHolder(new WeixinTokenCreator(
weixinAccount.getId(), weixinAccount.getSecret()),
- new FileTokenStorager(Weixin4jConfigUtil.getValue("token_path",
+ new FileTokenStorager(Weixin4jConfigUtil.getValue("token.path",
"/tmp/weixin4j/token")));
}
diff --git a/weixin4j-qy/CHANGE.md b/weixin4j-qy/CHANGE.md
index 4e1600c7..5fa7c418 100644
--- a/weixin4j-qy/CHANGE.md
+++ b/weixin4j-qy/CHANGE.md
@@ -132,6 +132,8 @@
+【重要】第三方应用授权时获取永久授权码覆盖问题。
-* 2015-12-08
+* 2015-12-10
+ version upgrade to 1.6.4
+
+ + 【特大注意】weixin4j.properties全部的属性名添加`weixin4j`前缀,并用`.`代替原来的`_`
diff --git a/weixin4j-qy/README.md b/weixin4j-qy/README.md
index 0db7ab31..ff3cf0c3 100644
--- a/weixin4j-qy/README.md
+++ b/weixin4j-qy/README.md
@@ -37,7 +37,7 @@ weixin4j-qy
如何使用
--------
-0.maven依赖(1.6.4,2015-12-08 released)
+0.maven依赖(1.6.4,2015-12-10 released)
com.foxinmy
@@ -50,37 +50,37 @@ weixin4j.properties说明
| 属性名 | 说明 |
| :---------- | :-------------- |
-| account | 微信企业号信息 `json格式`(使用new WeixinProxy()缺省构造器时须填写) |
-| token_path | 使用FileTokenStorager时token保存的物理路径(非必须填写) |
-| media_path | 调用媒体接口时保存媒体文件的物理路径(非必须填写) |
-| bill_path | 调用下载对账单接口保存文件的物理路径(非必须填写) |
-| ca_file | 调用某些接口(支付相关)强制需要auth的ca授权文件(非必须填写) |
-| user_oauth_redirect_uri | 企业号用户身份授权后重定向的url(OauthApi接口) |
-| third_oauth_redirect_uri | 企业号第三方提供商授权后重定向的url(OauthApi接口) |
-| suite_oauth_redirect_uri | 企业号第三方应用套件授权后重定向的url(OauthApi接口) |
+| weixin4j.account | 微信企业号信息 `json格式`(使用new WeixinProxy()缺省构造器时须填写) |
+| weixin4j.token.path | 使用FileTokenStorager时token保存的物理路径(非必须填写) |
+| weixin4j.media.path | 调用媒体接口时保存媒体文件的物理路径(非必须填写) |
+| weixin4j.bill.path | 调用下载对账单接口保存文件的物理路径(非必须填写) |
+| weixin4j.certificate.file | 调用某些接口(支付相关)强制需要auth的ca授权文件(非必须填写) |
+| weixin4j.user.oauth.redirect.uri | 企业号用户身份授权后重定向的url(OauthApi接口) |
+| weixin4j.third.oauth.redirect.uri | 企业号第三方提供商授权后重定向的url(OauthApi接口) |
+| weixin4j.suite.oauth.redirect.uri | 企业号第三方应用套件授权后重定向的url(OauthApi接口) |
示例(properties中换行用右斜杆\\)
- account={"id":"corpid","secret":"corpsecret",\
+ weixin4j.account={"id":"corpid","secret":"corpsecret",\
"suites":[{"id":"应用套件的id","secret":"应用套件的secret"}],\
"providerSecret:"第三方提供商secret(企业号登陆)",\
"chatSecret":"消息服务secret(企业号消息服务,暂时没用到)"}
- token_path=/tmp/weixin4j/token
- media_path=/tmp/weixin4j/media
- bill_path=/tmp/weixin4j/bill
+ weixin4j.token.path=/tmp/weixin4j/token
+ weixin4j.media.path=/tmp/weixin4j/media
+ weixin4j.bill.path=/tmp/weixin4j/bill
# ca证书存放的完整路径 (证书文件后缀为*.p12)
- ca_file=/tmp/weixin4j/xxxxx.p12
- #classpath路径下:ca_file=classpath:xxxxx.p12
+ weixin4j.certificate.file=/tmp/weixin4j/xxxxx.p12
+ #classpath路径下:weixin4j.certificate.file=classpath:xxxxx.p12
#企业号用户身份授权后重定向的url(使用OauthApi时需要填写)
- user_oauth_redirect_uri=http://xxx
+ weixin4j.user.oauth.redirect.uri=http://xxx
#企业号第三方管理员授权后重定向的url(使用OauthApi时需要填写)
- third_oauth_redirect_uri=http://xxx
+ weixin4j.third.oauth.redirect.uri=http://xxx
#企业号第三方应用套件授权后重定向的url(使用OauthApi时需要填写)
- suite_oauth_redirect_uri=http://xxx
+ weixin4j.suite.oauth.redirect.uri=http://xxx
2.实例化微信企业号接口代理对象,调用具体的API方法
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java
index 453fc535..8e7cffc7 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/MediaApi.java
@@ -177,7 +177,7 @@ public class MediaApi extends QyApi {
*/
public File downloadMediaFile(int agentid, String mediaId)
throws WeixinException {
- String media_path = Weixin4jConfigUtil.getValue("media_path",
+ String media_path = Weixin4jConfigUtil.getValue("media.path",
Weixin4jConst.DEFAULT_MEDIA_PATH);
final String prefixName = String.format("%d_%s.", agentid, mediaId);
File[] files = new File(media_path).listFiles(new FilenameFilter() {
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java
index efe7b3b1..f8d4ac68 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java
@@ -35,7 +35,7 @@ public class OauthApi extends QyApi {
*/
public String getUserAuthorizeURL() {
String corpId = DEFAULT_WEIXIN_ACCOUNT.getId();
- String redirectUri = Weixin4jConfigUtil.getValue("user_oauth_redirect_uri");
+ String redirectUri = Weixin4jConfigUtil.getValue("user.oauth.redirect.uri");
return getUserAuthorizeURL(corpId, redirectUri, "state");
}
@@ -73,7 +73,7 @@ public class OauthApi extends QyApi {
*/
public String getThirdAuthorizeURL() {
String corpId = DEFAULT_WEIXIN_ACCOUNT.getId();
- String redirectUri = Weixin4jConfigUtil.getValue("third_oauth_redirect_uri");
+ String redirectUri = Weixin4jConfigUtil.getValue("third.oauth.redirect.uri");
return getThirdAuthorizeURL(corpId, redirectUri, "state");
}
@@ -135,7 +135,7 @@ public class OauthApi extends QyApi {
* @return
*/
public String getSuiteAuthorizeURL(String suiteId, String preAuthCode) {
- String redirectUri = Weixin4jConfigUtil.getValue("suite_oauth_redirect_uri");
+ String redirectUri = Weixin4jConfigUtil.getValue("suite.oauth.redirect.uri");
return getSuiteAuthorizeURL(suiteId, preAuthCode, redirectUri, "state");
}
diff --git a/weixin4j-qy/src/main/resources/weixin4j.properties b/weixin4j-qy/src/main/resources/weixin4j.properties
index 1d6fab9a..5dfa1735 100644
--- a/weixin4j-qy/src/main/resources/weixin4j.properties
+++ b/weixin4j-qy/src/main/resources/weixin4j.properties
@@ -1,26 +1,26 @@
# \u6d4b\u8bd5\u4e4b\u7528 \u6b63\u5f0f\u73af\u5883\u4e0bcopy\u4e00\u4efd\u5230classpath
# \u4f01\u4e1a\u53f7\u4fe1\u606f
-account={"id":"id","secret":"secret",\
+weixin4j.account={"id":"id","secret":"secret",\
"suites":[{"id":"\u5e94\u7528\u5957\u4ef6\u7684id","secret":"\u5e94\u7528\u5957\u4ef6\u7684secret"}],\
"providerSecret":"\u7b2c\u4e09\u65b9\u63d0\u4f9b\u5546secret(\u4f01\u4e1a\u53f7\u767b\u9646)",\
"chatSecret":"\u6d88\u606f\u670d\u52a1secret(\u4f01\u4e1a\u53f7\u6d88\u606f\u670d\u52a1,\u6682\u65f6\u6ca1\u7528\u5230)"}
# \u4f7f\u7528FileTokenStorager\u65f6token\u7684\u5b58\u653e\u8def\u5f84
-token_path=/tmp/weixin4j/token
+weixin4j.token.path=/tmp/weixin4j/token
# \u5a92\u4f53\u6587\u4ef6\u4fdd\u5b58\u8def\u5f84
-media_path=/tmp/weixin4j/media
+weixin4j.media.path=/tmp/weixin4j/media
# \u5bf9\u8d26\u5355\u4fdd\u5b58\u8def\u5f84
-bill_path=/tmp/weixin4j/bill
+weixin4j.bill.path=/tmp/weixin4j/bill
# ca\u8bc1\u4e66\u5b58\u653e\u7684\u5b8c\u6574\u8def\u5f84 (V2\u7248\u672c\u540e\u7f00\u4e3a*.pfx,V3\u7248\u672c\u540e\u7f00\u4e3a*.p12)
-ca_file=/tmp/weixin4j/xxxxx.p12
+weixin4j.certificate.file=/tmp/weixin4j/xxxxx.p12
# classpath\u8def\u5f84\u4e0b\u53ef\u4ee5\u8fd9\u4e48\u5199
-# ca_file=classpath:xxxxx.pfx
+# weixin4j.certificate.file=classpath:xxxxx.pfx
# \u4f01\u4e1a\u53f7\u7528\u6237\u8eab\u4efd\u6388\u6743\u540e\u91cd\u5b9a\u5411\u7684url
-user_oauth_redirect_uri=
+weixin4j.user.oauth.redirect.uri=
# \u4f01\u4e1a\u53f7\u7b2c\u4e09\u65b9\u63d0\u4f9b\u5546\u6388\u6743\u540e\u91cd\u5b9a\u5411\u7684url
-third_oauth_redirect_uri=
+weixin4j.third.oauth.redirect.uri=
# \u4f01\u4e1a\u53f7\u7b2c\u4e09\u65b9\u5e94\u7528\u5957\u4ef6\u6388\u6743\u540e\u91cd\u5b9a\u5411\u7684url
-suite_oauth_redirect_uri=
\ No newline at end of file
+weixin4j.suite.oauth.redirect.uri=
\ No newline at end of file
diff --git a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MenuTest.java b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MenuTest.java
index 245b9c96..67794c18 100644
--- a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MenuTest.java
+++ b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/MenuTest.java
@@ -48,7 +48,7 @@ public class MenuTest extends TokenTest {
@Test
public void get() throws WeixinException {
- btnList = menuApi.getMenu(1);
+ btnList = menuApi.getMenu(0);
for (Button btn : btnList) {
System.out.println(btn);
}
diff --git a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java
index 89bf38aa..c07753c8 100644
--- a/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java
+++ b/weixin4j-qy/src/test/java/com/foxinmy/weixin4j/qy/test/TokenTest.java
@@ -29,7 +29,7 @@ public class TokenTest {
tokenHolder = new TokenHolder(new WeixinTokenCreator(
weixinAccount.getId(), weixinAccount.getSecret()),
new FileTokenStorager(Weixin4jConfigUtil.getValue(
- "token_path", "/tmp/weixin4j/token")));
+ "token.path", "/tmp/weixin4j/token")));
}
@Test