From 18303642f225747fa3df1e52d34f2ad64e6927c2 Mon Sep 17 00:00:00 2001 From: jinyu Date: Tue, 24 May 2016 20:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E9=85=8D=E7=BD=AE=E7=B1=BB?= =?UTF-8?q?=E6=8A=BD=E8=B1=A1=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGE.md | 4 +- .../weixin4j/exception/WeixinException.java | 4 +- .../weixin4j/payment/WeixinPayProxy.java | 16 +- .../weixin4j/setting/SystemSettings.java | 90 ++++++ .../weixin4j/setting/Weixin4jSettings.java | 106 +++++++ .../foxinmy/weixin4j/token/CacheCreator.java | 3 +- .../foxinmy/weixin4j/token/CacheStorager.java | 12 +- .../weixin4j/token/FileTokenStorager.java | 15 +- .../weixin4j/token/MemcacheTokenStorager.java | 9 +- .../weixin4j/token/MemoryTokenStorager.java | 11 +- .../weixin4j/token/RedisTokenStorager.java | 9 +- .../weixin4j/util/Weixin4jSettings.java | 158 ---------- .../foxinmy/weixin4j/base/test/PayTest.java | 2 +- .../com/foxinmy/weixin4j/mp/WeixinProxy.java | 192 ++++++------ .../com/foxinmy/weixin4j/mp/api/MediaApi.java | 28 +- .../foxinmy/weixin4j/mp/test/TokenTest.java | 6 +- .../com/foxinmy/weixin4j/qy/WeixinProxy.java | 273 ++++++++++-------- .../foxinmy/weixin4j/qy/WeixinSuiteProxy.java | 16 +- .../qy/suite/Weixin4jSuiteSettings.java | 90 ++---- .../foxinmy/weixin4j/qy/test/TokenTest.java | 6 +- 20 files changed, 527 insertions(+), 523 deletions(-) create mode 100644 weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/SystemSettings.java create mode 100644 weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java delete mode 100644 weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jSettings.java diff --git a/CHANGE.md b/CHANGE.md index f0893bc0..6a96eda2 100644 --- a/CHANGE.md +++ b/CHANGE.md @@ -699,4 +699,6 @@ + weixin4j-base:删除AbstractTokenCreator,引入CacheCreator类 - + weixin4j-base:修改Memcached-Java-Client的依赖 \ No newline at end of file + + weixin4j-base:修改Memcached-Java-Client的依赖 + + + weixin4j-base:系统配置类抽象化 \ No newline at end of file diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java index e0ae3ab9..40a5c752 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/exception/WeixinException.java @@ -41,7 +41,7 @@ public class WeixinException extends Exception { return code; } - public String getErrorMsg() { + public String getErrorDesc() { return desc; } @@ -51,8 +51,8 @@ public class WeixinException extends Exception { @Override public String getMessage() { - StringBuilder buf = new StringBuilder(); if (StringUtil.isNotBlank(code)) { + StringBuilder buf = new StringBuilder(); buf.append(code).append(" >> ").append(desc); String text = getErrorText(); if (StringUtil.isNotBlank(text)) { 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 adeb84d3..005839c3 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 @@ -36,11 +36,11 @@ import com.foxinmy.weixin4j.payment.mch.RedpacketSendResult; import com.foxinmy.weixin4j.payment.mch.RefundRecord; import com.foxinmy.weixin4j.payment.mch.RefundResult; import com.foxinmy.weixin4j.payment.mch.SettlementRecord; +import com.foxinmy.weixin4j.setting.Weixin4jSettings; import com.foxinmy.weixin4j.type.BillType; import com.foxinmy.weixin4j.type.CurrencyType; import com.foxinmy.weixin4j.type.CustomsCity; import com.foxinmy.weixin4j.type.IdQuery; -import com.foxinmy.weixin4j.util.Weixin4jSettings; /** * 微信支付接口实现 @@ -85,14 +85,14 @@ public class WeixinPayProxy { * * @param settings * 支付相关配置信息 - * @see com.foxinmy.weixin4j.util.Weixin4jSettings + * @see com.foxinmy.weixin4j.setting.Weixin4jSettings */ public WeixinPayProxy(Weixin4jSettings settings) { this.settings = settings; - this.payApi = new PayApi(settings.getWeixinPayAccount()); - this.couponApi = new CouponApi(settings.getWeixinPayAccount()); - this.cashApi = new CashApi(settings.getWeixinPayAccount()); - this.customsApi = new CustomsApi(settings.getWeixinPayAccount()); + this.payApi = new PayApi(settings.getPayAccount()); + this.couponApi = new CouponApi(settings.getPayAccount()); + this.cashApi = new CashApi(settings.getPayAccount()); + this.customsApi = new CustomsApi(settings.getPayAccount()); } /** @@ -100,8 +100,8 @@ public class WeixinPayProxy { * * @return */ - public WeixinPayAccount getPayAccount() { - return this.settings.getWeixinPayAccount(); + public WeixinPayAccount getWeixinPayAccount() { + return this.settings.getPayAccount(); } /** diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/SystemSettings.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/SystemSettings.java new file mode 100644 index 00000000..6bb78254 --- /dev/null +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/SystemSettings.java @@ -0,0 +1,90 @@ +package com.foxinmy.weixin4j.setting; + +import com.foxinmy.weixin4j.http.HttpParams; +import com.foxinmy.weixin4j.token.FileTokenStorager; +import com.foxinmy.weixin4j.token.TokenStorager; + +/** + * 系统配置相关 + * + * @className SystemSettings + * @author jinyu(foxinmy@gmail.com) + * @date 2016年1月28日 + * @since JDK 1.6 + * @see + */ +public abstract class SystemSettings { + /** + * 账号信息 + */ + private T account; + /** + * Http参数 + */ + private HttpParams httpParams; + /** + * token存储方式 默认为FileTokenStorager + */ + private TokenStorager tokenStorager; + /** + * 系统临时目录 + */ + private String tmpdir; + + /** + * @param account + */ + public SystemSettings(T account) { + this.account = account; + } + + public T getAccount() { + return account; + } + + public HttpParams getHttpParams() { + return httpParams; + } + + public HttpParams getHttpParams0() { + if (httpParams == null) { + return new HttpParams(); + } + return httpParams; + } + + public String getTmpdir() { + return tmpdir; + } + + public abstract String getTmpdir0(); + + public TokenStorager getTokenStorager() { + return tokenStorager; + } + + public TokenStorager getTokenStorager0() { + if (tokenStorager == null) { + return new FileTokenStorager(getTmpdir0()); + } + return tokenStorager; + } + + public void setHttpParams(HttpParams httpParams) { + this.httpParams = httpParams; + } + + public void setTmpdir(String tmpdir) { + this.tmpdir = tmpdir; + } + + public void setTokenStorager(TokenStorager tokenStorager) { + this.tokenStorager = tokenStorager; + } + + @Override + public String toString() { + return "account=" + account + ", httpParams=" + httpParams + + ",tokenStorager=" + tokenStorager + ", tmpdir=" + tmpdir; + } +} diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java new file mode 100644 index 00000000..d7eb7c2b --- /dev/null +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/setting/Weixin4jSettings.java @@ -0,0 +1,106 @@ +package com.foxinmy.weixin4j.setting; + +import com.alibaba.fastjson.JSON; +import com.foxinmy.weixin4j.model.WeixinAccount; +import com.foxinmy.weixin4j.model.WeixinPayAccount; +import com.foxinmy.weixin4j.util.StringUtil; +import com.foxinmy.weixin4j.util.Weixin4jConfigUtil; + +/** + * 微信配置相关 + * + * @className Weixin4jSettings + * @author jinyu(foxinmy@gmail.com) + * @date 2016年1月28日 + * @since JDK 1.6 + * @see + */ +public class Weixin4jSettings extends SystemSettings { + /** + * 微信支付账号信息 + */ + private WeixinPayAccount weixinPayAccount; + /** + * 支付接口需要的证书文件(*.p12) + */ + private String certificateFile; + + /** + * 默认使用weixin4j.properties配置的信息 + */ + public Weixin4jSettings() { + this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"), + WeixinPayAccount.class), null); + } + + /** + * 支付代理接口 + * + * @param weixinPayAccount + * 商户信息 + * @param certificateFile + * 支付接口需要的证书文件(*.p12),比如退款接口 + */ + public Weixin4jSettings(WeixinPayAccount weixinPayAccount, + String certificateFile) { + this(weixinPayAccount); + this.certificateFile = certificateFile; + } + + /** + * 支付代理接口 + * + * @param weixinPayAccount + * 商户信息 + */ + public Weixin4jSettings(WeixinPayAccount weixinPayAccount) { + this(new WeixinAccount(weixinPayAccount.getId(), + weixinPayAccount.getSecret())); + this.weixinPayAccount = weixinPayAccount; + } + + /** + * 账号信息 + * + * @param account + */ + public Weixin4jSettings(WeixinAccount account) { + super(account); + } + + public WeixinPayAccount getPayAccount() { + return weixinPayAccount; + } + + @Override + public String getTmpdir0() { + if (StringUtil.isBlank(getTmpdir())) { + return Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir", + System.getProperty("java.io.tmpdir")); + } + return getTmpdir(); + } + + public String getCertificateFile() { + return certificateFile; + } + + public String getCertificateFile0() { + if (StringUtil.isBlank(certificateFile)) { + return Weixin4jConfigUtil.getClassPathValue( + "weixin4j.certificate.file", "classpath:ca.p12"); + } + return certificateFile; + } + + public void setCertificateFile(String certificateFile) { + this.certificateFile = certificateFile; + } + + @Override + public String toString() { + return "Weixin4jSettings [weixinPayAccount=" + weixinPayAccount + + ", certificateFile=" + certificateFile + ", " + + super.toString() + "]"; + } +} diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheCreator.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheCreator.java index 7ea2e6a1..5ec17574 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheCreator.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheCreator.java @@ -22,7 +22,8 @@ public interface CacheCreator { /** * 创建Cache * - * @return + * @throws WeixinException + * @return 缓存对象 */ public T create() throws WeixinException; } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java index 0af84f02..24d5eea3 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/CacheStorager.java @@ -1,7 +1,5 @@ package com.foxinmy.weixin4j.token; -import com.foxinmy.weixin4j.exception.WeixinException; - /** * Cache的存储 * @@ -18,9 +16,8 @@ public interface CacheStorager { * @param key * 缓存key * @return 缓存对象 - * @throws WeixinException */ - T lookup(String key) throws WeixinException; + T lookup(String key); /** * 缓存新的对象 @@ -30,9 +27,8 @@ public interface CacheStorager { * * @param cache * 将要缓存的对象 - * @throws WeixinException */ - void caching(String key, T cache) throws WeixinException; + void caching(String key, T cache); /** * 移除缓存对象 @@ -41,10 +37,10 @@ public interface CacheStorager { * 缓存key * @return 移除的对象 */ - T evict(String key) throws WeixinException; + T evict(String key); /** * 清除所有缓存对象(请慎重) */ - void clear() throws WeixinException; + void clear(); } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java index dcd69867..9fa31f4f 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java @@ -6,14 +6,13 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; -import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.util.FileUtil; import com.foxinmy.weixin4j.xml.XmlStream; /** * 用File形式保存Token信息 - * + * * @className FileTokenStorager * @author jinyu(foxinmy@gmail.com) * @date 2015年1月9日 @@ -28,7 +27,7 @@ public class FileTokenStorager implements TokenStorager { } @Override - public Token lookup(String cacheKey) throws WeixinException { + public Token lookup(String cacheKey) { File token_file = new File(String.format("%s/%s.xml", cachePath, cacheKey)); try { @@ -45,24 +44,24 @@ public class FileTokenStorager implements TokenStorager { } return null; } catch (IOException e) { - throw new WeixinException(e); + throw new RuntimeException(e); } } @Override - public void caching(String cacheKey, Token token) throws WeixinException { + public void caching(String cacheKey, Token token) { try { XmlStream.toXML( token, new FileOutputStream(new File(String.format("%s/%s.xml", cachePath, cacheKey)))); } catch (IOException e) { - throw new WeixinException(e); + throw new RuntimeException(e); } } @Override - public Token evict(String cacheKey) throws WeixinException { + public Token evict(String cacheKey) { Token token = null; File token_file = new File(String.format("%s/%s.xml", cachePath, cacheKey)); @@ -79,7 +78,7 @@ public class FileTokenStorager implements TokenStorager { } @Override - public void clear() throws WeixinException { + public void clear() { File[] files = new File(cachePath).listFiles(new FileFilter() { @Override public boolean accept(File file) { diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java index dc1d5cec..1d54bee7 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemcacheTokenStorager.java @@ -4,7 +4,6 @@ import java.util.ArrayList; import java.util.Date; import java.util.List; -import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.model.Token; import com.whalin.MemCached.MemCachedClient; import com.whalin.MemCached.SockIOPool; @@ -28,12 +27,12 @@ public class MemcacheTokenStorager implements TokenStorager { } @Override - public Token lookup(String cacheKey) throws WeixinException { + public Token lookup(String cacheKey) { return (Token) mc.get(cacheKey); } @Override - public void caching(String cacheKey, Token token) throws WeixinException { + public void caching(String cacheKey, Token token) { if (token.getExpiresIn() > 0) { mc.set(cacheKey, token, new Date(token.getCreateTime() + token.getExpiresIn() @@ -44,14 +43,14 @@ public class MemcacheTokenStorager implements TokenStorager { } @Override - public Token evict(String cacheKey) throws WeixinException { + public Token evict(String cacheKey) { Token token = lookup(cacheKey); mc.delete(cacheKey); return token; } @Override - public void clear() throws WeixinException { + public void clear() { throw new UnsupportedOperationException(); } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java index 974ec303..ee1c200b 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/MemoryTokenStorager.java @@ -3,12 +3,11 @@ package com.foxinmy.weixin4j.token; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; -import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.model.Token; /** * 用内存保存Token信息(不推荐使用) - * + * * @className MemoryTokenStorager * @author jinyu(foxinmy@gmail.com) * @date 2016年1月24日 @@ -24,7 +23,7 @@ public class MemoryTokenStorager implements TokenStorager { } @Override - public Token lookup(String cacheKey) throws WeixinException { + public Token lookup(String cacheKey) { Token token = this.CONMAP.get(cacheKey); if (token != null) { if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - CUTMS) > System @@ -36,17 +35,17 @@ public class MemoryTokenStorager implements TokenStorager { } @Override - public void caching(String cacheKey, Token token) throws WeixinException { + public void caching(String cacheKey, Token token) { this.CONMAP.put(cacheKey, token); } @Override - public Token evict(String cacheKey) throws WeixinException { + public Token evict(String cacheKey) { return this.CONMAP.remove(cacheKey); } @Override - public void clear() throws WeixinException { + public void clear() { this.CONMAP.clear(); } } diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java index b1f18dd9..845cefff 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java @@ -9,7 +9,6 @@ import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.Pipeline; -import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.model.Token; /** @@ -56,7 +55,7 @@ public class RedisTokenStorager implements TokenStorager { } @Override - public Token lookup(String cacheKey) throws WeixinException { + public Token lookup(String cacheKey) { Jedis jedis = null; try { jedis = jedisPool.getResource(); @@ -73,7 +72,7 @@ public class RedisTokenStorager implements TokenStorager { } @Override - public void caching(String cacheKey, Token token) throws WeixinException { + public void caching(String cacheKey, Token token) { Jedis jedis = null; try { jedis = jedisPool.getResource(); @@ -112,7 +111,7 @@ public class RedisTokenStorager implements TokenStorager { } @Override - public Token evict(String cacheKey) throws WeixinException { + public Token evict(String cacheKey) { Token token = lookup(cacheKey); Jedis jedis = null; try { @@ -127,7 +126,7 @@ public class RedisTokenStorager implements TokenStorager { } @Override - public void clear() throws WeixinException { + public void clear() { Jedis jedis = null; try { jedis = jedisPool.getResource(); diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jSettings.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jSettings.java deleted file mode 100644 index 730bfd34..00000000 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/Weixin4jSettings.java +++ /dev/null @@ -1,158 +0,0 @@ -package com.foxinmy.weixin4j.util; - -import com.alibaba.fastjson.JSON; -import com.foxinmy.weixin4j.http.HttpParams; -import com.foxinmy.weixin4j.model.WeixinAccount; -import com.foxinmy.weixin4j.model.WeixinPayAccount; -import com.foxinmy.weixin4j.token.FileTokenStorager; -import com.foxinmy.weixin4j.token.TokenStorager; - -/** - * 微信配置相关 - * - * @className Weixin4jSettings - * @author jinyu(foxinmy@gmail.com) - * @date 2016年1月28日 - * @since JDK 1.6 - * @see - */ -public class Weixin4jSettings { - /** - * 微信支付账号信息 - */ - private WeixinPayAccount weixinPayAccount; - /** - * 微信账号信息 - */ - private WeixinAccount weixinAccount; - /** - * Http参数 - */ - private HttpParams httpParams; - /** - * token存储方式 默认为FileTokenStorager - */ - private TokenStorager tokenStorager; - /** - * 系统临时目录 - */ - private String tmpdir; - /** - * 支付接口需要的证书文件(*.p12) - */ - private String certificateFile; - - /** - * 默认使用weixin4j.properties配置的信息 - */ - public Weixin4jSettings() { - this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"), WeixinPayAccount.class), null); - } - - /** - * 支付代理接口 - * - * @param weixinPayAccount - * 商户信息 - * @param certificateFile - * 支付接口需要的证书文件(*.p12),比如退款接口 - */ - public Weixin4jSettings(WeixinPayAccount weixinPayAccount, String certificateFile) { - this(weixinPayAccount); - this.certificateFile = certificateFile; - } - - /** - * 支付代理接口 - * - * @param weixinPayAccount - * 商户信息 - */ - public Weixin4jSettings(WeixinPayAccount weixinPayAccount) { - this.weixinPayAccount = weixinPayAccount; - this.weixinAccount = new WeixinAccount(weixinPayAccount.getId(), weixinPayAccount.getSecret()); - } - - /** - * 普通代理接口 - * - * @param weixinAccount - */ - public Weixin4jSettings(WeixinAccount weixinAccount) { - this.weixinAccount = weixinAccount; - } - - public WeixinPayAccount getWeixinPayAccount() { - return weixinPayAccount; - } - - public WeixinAccount getWeixinAccount() { - return weixinAccount; - } - - public HttpParams getHttpParams() { - return httpParams; - } - - public HttpParams getHttpParams0() { - if (httpParams == null) { - return new HttpParams(); - } - return httpParams; - } - - public String getTmpdir() { - return tmpdir; - } - - public String getTmpdir0() { - if (StringUtil.isBlank(tmpdir)) { - return Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir", System.getProperty("java.io.tmpdir")); - } - return tmpdir; - } - - public TokenStorager getTokenStorager() { - return tokenStorager; - } - - public TokenStorager getTokenStorager0() { - if (tokenStorager == null) { - return new FileTokenStorager(getTmpdir0()); - } - return tokenStorager; - } - - public String getCertificateFile() { - return certificateFile; - } - - public String getCertificateFile0() { - if (StringUtil.isBlank(certificateFile)) { - return Weixin4jConfigUtil.getClassPathValue("weixin4j.certificate.file", "classpath:ca.p12"); - } - return certificateFile; - } - - public void setHttpParams(HttpParams httpParams) { - this.httpParams = httpParams; - } - - public void setTmpdir(String tmpdir) { - this.tmpdir = tmpdir; - } - - public void setTokenStorager(TokenStorager tokenStorager) { - this.tokenStorager = tokenStorager; - } - - public void setCertificateFile(String certificateFile) { - this.certificateFile = certificateFile; - } - - @Override - public String toString() { - return "Weixin4jSettings [weixinAccount=" + weixinAccount + ", httpParams=" + httpParams + ",tokenStorager=" - + tokenStorager + ", tmpdir=" + tmpdir + ", certificateFile= " + certificateFile + "]"; - } -} diff --git a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java index 12d6cef2..6adfc964 100644 --- a/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java +++ b/weixin4j-base/src/test/java/com/foxinmy/weixin4j/base/test/PayTest.java @@ -21,12 +21,12 @@ import com.foxinmy.weixin4j.payment.mch.Order; import com.foxinmy.weixin4j.payment.mch.PrePay; import com.foxinmy.weixin4j.payment.mch.RefundRecord; import com.foxinmy.weixin4j.payment.mch.RefundResult; +import com.foxinmy.weixin4j.setting.Weixin4jSettings; import com.foxinmy.weixin4j.sign.WeixinPaymentSignature; import com.foxinmy.weixin4j.sign.WeixinSignature; import com.foxinmy.weixin4j.type.IdQuery; import com.foxinmy.weixin4j.type.IdType; import com.foxinmy.weixin4j.type.TradeType; -import com.foxinmy.weixin4j.util.Weixin4jSettings; /** * 支付测试(商户平台) diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index 10245682..dbab7ac0 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -50,6 +50,7 @@ import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator; import com.foxinmy.weixin4j.mp.type.DatacubeType; import com.foxinmy.weixin4j.mp.type.IndustryType; import com.foxinmy.weixin4j.mp.type.Lang; +import com.foxinmy.weixin4j.setting.Weixin4jSettings; import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.tuple.MassTuple; import com.foxinmy.weixin4j.tuple.MpArticle; @@ -57,11 +58,10 @@ import com.foxinmy.weixin4j.tuple.MpVideo; import com.foxinmy.weixin4j.tuple.Tuple; import com.foxinmy.weixin4j.type.MediaType; import com.foxinmy.weixin4j.type.TicketType; -import com.foxinmy.weixin4j.util.Weixin4jSettings; /** * 微信公众平台接口实现 - * + * * @className WeixinProxy * @author jinyu(foxinmy@gmail.com) * @date 2014年3月23日 @@ -135,21 +135,21 @@ public class WeixinProxy { } /** - * + * * @param settings * 微信配置信息 - * @see com.foxinmy.weixin4j.util.Weixin4jSettings + * @see com.foxinmy.weixin4j.setting.Weixin4jSettings */ public WeixinProxy(Weixin4jSettings settings) { - this(new TokenHolder(new WeixinTokenCreator(settings.getWeixinAccount() - .getId(), settings.getWeixinAccount().getSecret()), + this(new TokenHolder(new WeixinTokenCreator(settings.getAccount() + .getId(), settings.getAccount().getSecret()), settings.getTokenStorager0())); this.settings = settings; } /** * 注意:TokenCreator 需为 WeixinTokenCreator - * + * * @see com.foxinmy.weixin4j.mp.token.WeixinTokenCreator * @param tokenHolder */ @@ -171,16 +171,16 @@ public class WeixinProxy { /** * 获取微信账号信息 - * + * * @return */ public WeixinAccount getWeixinAccount() { - return this.settings.getWeixinAccount(); + return this.settings.getAccount(); } /** * token获取 - * + * * @return */ public TokenHolder getTokenHolder() { @@ -189,7 +189,7 @@ public class WeixinProxy { /** * 获取JSSDK Ticket的tokenHolder - * + * * @param ticketType * 票据类型 * @return @@ -203,7 +203,7 @@ public class WeixinProxy { /** * 上传图文消息内的图片获取URL * 请注意,本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。图片仅支持jpg/png格式,大小必须在1MB以下。 - * + * * @param is * 图片数据流 * @param fileName @@ -219,7 +219,7 @@ public class WeixinProxy { /** * 上传群发中的视频素材 - * + * * @param is * 图片数据流 * @param fileName @@ -244,7 +244,7 @@ public class WeixinProxy { /** * 上传媒体文件
此接口只包含图片、语音、缩略图、视频(临时)四种媒体类型的上传 *

- * + * * @param isMaterial * 是否永久上传 * @param is @@ -270,7 +270,7 @@ public class WeixinProxy { /** * 下载媒体文件 - * + * * @param mediaId * 媒体ID * @param isMaterial @@ -297,7 +297,7 @@ public class WeixinProxy { * 、新增的永久素材也可以在公众平台官网素材管理模块中看到,永久素材的数量是有上限的,请谨慎新增。图文消息素材和图片素材的上限为5000, * 其他类型为1000 *

- * + * * @param articles * 图文列表 * @return 上传到微信服务器返回的媒体标识 @@ -315,7 +315,7 @@ public class WeixinProxy { /** * 下载永久图文素材 - * + * * @param mediaId * 媒体ID * @return 图文列表 @@ -331,7 +331,7 @@ public class WeixinProxy { /** * 更新永久图文素材 - * + * * @param mediaId * 要修改的图文消息的id * @param index @@ -353,7 +353,7 @@ public class WeixinProxy { /** * 删除永久媒体素材 - * + * * @param mediaId * 媒体素材的media_id * @return 处理结果 @@ -370,7 +370,7 @@ public class WeixinProxy { /** * 上传永久视频素材 - * + * * @param is * 大小不超过1M且格式为MP4的视频文件 * @param fileName @@ -393,7 +393,7 @@ public class WeixinProxy { /** * 获取永久媒体素材的总数
.图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000 - * + * * @return 总数对象 * @throws WeixinException * @see com.foxinmy.weixin4j.mp.model.MediaCounter @@ -408,7 +408,7 @@ public class WeixinProxy { /** * 获取媒体素材记录列表 - * + * * @param mediaType * 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news) * @param pageable @@ -432,7 +432,7 @@ public class WeixinProxy { /** * 获取全部的媒体素材 - * + * * @param mediaType * 媒体类型 * @return 素材列表 @@ -447,7 +447,7 @@ public class WeixinProxy { /** * 发送客服消息(在48小时内不限制发送次数) - * + * * @param notify * 客服消息对象 * @return 处理结果 @@ -460,7 +460,7 @@ public class WeixinProxy { /** * 发送客服消息(在48小时内不限制发送次数) - * + * * @param notify * 客服消息对象 * @param kfAccount @@ -485,7 +485,7 @@ public class WeixinProxy { /** * 客服聊天记录 - * + * * @param startTime * 查询开始时间 * @param endTime @@ -507,7 +507,7 @@ public class WeixinProxy { /** * 获取公众号中所设置的客服基本信息,包括客服工号、客服昵称、客服登录账号 - * + * * @param isOnline * 是否在线 为ture时可以可以获取客服在线状态(手机在线、PC客户端在线、手机和PC客户端全都在线)、客服自动接入最大值、 * 客服当前接待客户数 @@ -529,7 +529,7 @@ public class WeixinProxy { /** * 新增客服账号 - * + * * @param id * 完整客服账号,格式为:账号前缀@公众号微信号,账号前缀最多10个字符,必须是英文或者数字字符。如果没有公众号微信号, * 请前往微信公众平台设置。 @@ -551,7 +551,7 @@ public class WeixinProxy { /** * 更新客服账号 - * + * * @param id * 完整客服账号,格式为:账号前缀@公众号微信号,账号前缀最多10个字符,必须是英文或者数字字符。如果没有公众号微信号, * 请前往微信公众平台设置。 @@ -575,7 +575,7 @@ public class WeixinProxy { * 邀请绑定客服帐号 * 新添加的客服帐号是不能直接使用的,只有客服人员用微信号绑定了客服账号后,方可登录Web客服进行操作。此接口发起一个绑定邀请到客服人员微信号 * ,客服人员需要在微信客户端上用该微信号确认后帐号才可用。尚未绑定微信号的帐号可以进行绑定邀请操作,邀请未失效时不能对该帐号进行再次绑定微信号邀请。 - * + * * @param kfAccount * 完整客服帐号,格式为:帐号前缀@公众号微信号 * @param inviteAccount @@ -594,7 +594,7 @@ public class WeixinProxy { /** * 上传客服头像 - * + * * @param accountId * 完整客服账号,格式为:账号前缀@公众号微信号 * @param is @@ -615,7 +615,7 @@ public class WeixinProxy { /** * 删除客服账号 - * + * * @param id * 完整客服账号,格式为:账号前缀@公众号微信号 * @return 处理结果 @@ -635,7 +635,7 @@ public class WeixinProxy { * 开发者可以使用本接口,为多客服的客服工号创建会话,将某个客户直接指定给客服工号接待,需要注意此接口不会受客服自动接入数以及自动接入开关限制。 * 只能为在线的客服(PC客户端在线,或者已绑定多客服助手)创建会话。 *

- * + * * @param userOpenId * 用户的userOpenId * @param kfAccount @@ -656,7 +656,7 @@ public class WeixinProxy { /** * 关闭客服会话 - * + * * @param userOpenId * 用户的userOpenId * @param kfAccount @@ -677,7 +677,7 @@ public class WeixinProxy { /** * 获取客户的会话状态:获取客户当前的会话状态。 - * + * * @param userOpenId * 用户的openid * @return 会话对象 @@ -694,7 +694,7 @@ public class WeixinProxy { /** * 获取客服的会话列表:获取某个客服正在接待的会话列表。 - * + * * @param kfAccount * 完整客服账号,格式为:账号前缀@公众号微信号,账号前缀最多10个字符,必须是英文或者数字字符。 * @return 会话列表 @@ -712,7 +712,7 @@ public class WeixinProxy { /** * 获取未接入会话列表:获取当前正在等待队列中的会话列表,此接口最多返回最早进入队列的100个未接入会话 - * + * * @return 会话列表 * @throws WeixinException * @see com.foxinmy.weixin4j.mp.api.CustomApi @@ -728,7 +728,7 @@ public class WeixinProxy { /** * 上传群发的图文消息,一个图文消息支持1到10条图文 - * + * * @param articles * 图片消息 * @return 媒体ID @@ -750,7 +750,7 @@ public class WeixinProxy { * 在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息, * 如消息有时会进行审核、服务器不稳定等,此外,群发任务一般需要较长的时间才能全部发送完毕 *

- * + * * @param MassTuple * 消息元件 * @param isToAll @@ -780,7 +780,7 @@ public class WeixinProxy { /** * 分组ID群发图文消息 - * + * * @param articles * 图文列表 * @param groupId @@ -800,12 +800,12 @@ public class WeixinProxy { /** * openId群发 - * + * *

* 在返回成功时,意味着群发任务提交成功,并不意味着此时群发已经结束,所以,仍有可能在后续的发送过程中出现异常情况导致用户未收到消息, * 如消息有时会进行审核、服务器不稳定等,此外,群发任务一般需要较长的时间才能全部发送完毕 *

- * + * * @param tuple * 消息元件 * @param openIds @@ -832,7 +832,7 @@ public class WeixinProxy { /** * 根据openid群发图文消息 - * + * * @param articles * 图文列表 * @param openIds @@ -855,7 +855,7 @@ public class WeixinProxy { *

* 请注意,只有已经发送成功的消息才能删除删除消息只是将消息的图文详情页失效,已经收到的用户,还是能在其本地看到消息卡片 *

- * + * * @param msgid * 发送出去的消息ID * @throws WeixinException @@ -865,7 +865,7 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.mp.api.MassApi * @see {@link #massByGroupId(Tuple, int)} * @see {@link #massByOpenIds(Tuple, String...) - * + * */ public JsonResult deleteMassNews(String msgid) throws WeixinException { return massApi.deleteMassNews(msgid); @@ -873,7 +873,7 @@ public class WeixinProxy { /** * 预览群发消息
开发者可通过该接口发送消息给指定用户,在手机端查看消息的样式和排版 - * + * * @param toUser * 接收用户的openID * @param toWxName @@ -895,7 +895,7 @@ public class WeixinProxy { /** * 查询群发发送状态 - * + * * @param msgId * 消息ID * @return 消息发送状态 @@ -911,7 +911,7 @@ public class WeixinProxy { /** * 获取用户信息 - * + * * @param openId * 用户对应的ID * @return 用户对象 @@ -933,7 +933,7 @@ public class WeixinProxy { * 在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的,对于不同公众号, * 同一用户的openid不同),公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间 *

- * + * * @param openId * 用户对应的ID * @param lang @@ -953,7 +953,7 @@ public class WeixinProxy { /** * 批量获取用户信息 - * + * * @param openIds * 用户ID * @return 用户列表 @@ -971,7 +971,7 @@ public class WeixinProxy { /** * 批量获取用户信息 - * + * * @param lang * 国家地区语言版本 * @param openIds @@ -992,7 +992,7 @@ public class WeixinProxy { /** * 获取公众号一定数量(10000)的关注者列表 请慎重使用 - * + * * @param nextOpenId * 下一次拉取数据的openid 不填写则默认从头开始拉取 * @return 关注者信息 包含用户的详细信息 @@ -1013,7 +1013,7 @@ public class WeixinProxy { /** * 获取公众号一定数量(10000)的关注者列表 - * + * * @param nextOpenId * 下一次拉取数据的openid 不填写则默认从头开始拉取 * @return 关注者信息 不包含用户的详细信息 @@ -1035,7 +1035,7 @@ public class WeixinProxy { * 当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求, * 将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值 *

- * + * * @return 用户对象集合 * @throws WeixinException * @see - * + * * @return 用户openid集合 * @throws WeixinException * @see @@ -1280,7 +1280,7 @@ public class WeixinProxy { /** * 创建个性化菜单 - * + * * @param buttons * 菜单列表 * @param matchRule @@ -1300,7 +1300,7 @@ public class WeixinProxy { /** * 删除个性化菜单 - * + * * @throws WeixinException * @see @@ -1314,7 +1314,7 @@ public class WeixinProxy { /** * 测试个性化菜单匹配结果 - * + * * @param userId * 可以是粉丝的OpenID,也可以是粉丝的微信号。 * @see @@ -1485,7 +1485,7 @@ public class WeixinProxy { /** * 获取公众号当前使用的自定义菜单的配置,如果公众号是通过API调用设置的菜单,则返回菜单的开发配置, * 而如果公众号是在公众平台官网通过网站功能发布菜单,则本接口返回运营者设置的菜单配置。 - * + * * @return 菜单集合 * @see {@link #getMenu()} * @see 请慎重使用 - * + * * @param tagId * 标签ID * @param nextOpenId @@ -1740,7 +1740,7 @@ public class WeixinProxy { /** * 获取标签下全部的粉丝列表 请慎重使用 - * + * * @param tagId * 标签ID * @return 用户openid列表 @@ -1757,7 +1757,7 @@ public class WeixinProxy { /** * 获取标签下全部的粉丝列表 请慎重使用 - * + * * @param tagId * 标签ID * @return 被打标签者信息 包含用户的详细信息 @@ -1773,7 +1773,7 @@ public class WeixinProxy { /** * 获取用户身上的标签列表 - * + * * @param openId * 用户ID * @return 标签ID集合 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 82f32372..89a4c4a8 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 @@ -47,7 +47,7 @@ import com.foxinmy.weixin4j.util.StringUtil; /** * 素材相关API - * + * * @className MediaApi * @author jinyu(foxinmy@gmail.com) * @date 2014年9月25日 @@ -64,7 +64,7 @@ public class MediaApi extends MpApi { /** * 上传图片获取URL * 请注意,本接口所上传的图片不占用公众号的素材库中图片数量的5000个的限制。图片仅支持jpg/png格式,大小必须在1MB以下。 - * + * * @param is * 图片数据流 * @param fileName @@ -91,7 +91,7 @@ public class MediaApi extends MpApi { /** * 上传群发中的视频素材 - * + * * @param is * 图片数据流 * @param fileName @@ -130,7 +130,7 @@ public class MediaApi extends MpApi { * 正常情况下返回{"type":"TYPE","media_id":"MEDIA_ID","created_at":123456789}, * 否则抛出异常. *

- * + * * @param isMaterial * 是否永久上传 * @param is @@ -222,13 +222,13 @@ public class MediaApi extends MpApi { /** * 下载媒体素材 - * + * * @param mediaId * 媒体ID * @param isMaterial * 是否下载永久素材 * @return 媒体下载结果 - * + * * @throws WeixinException * @see com.foxinmy.weixin4j.model.MediaDownloadResult * @see
- * + * * @param articles * 图文列表 * @return 上传到微信服务器返回的媒体标识 @@ -323,7 +323,7 @@ public class MediaApi extends MpApi { /** * 下载永久图文素材 - * + * * @param mediaId * 媒体ID * @return 图文列表 @@ -342,7 +342,7 @@ public class MediaApi extends MpApi { /** * 更新永久图文素材 - * + * * @param mediaId * 要修改的图文消息的id * @param index @@ -372,7 +372,7 @@ public class MediaApi extends MpApi { /** * 删除永久媒体素材 - * + * * @param mediaId * 媒体素材的media_id * @return 处理结果 @@ -395,7 +395,7 @@ public class MediaApi extends MpApi { /** * 上传永久视频素材 - * + * * @param is * 大小不超过1M且格式为MP4的视频文件 * @param fileName @@ -446,7 +446,7 @@ public class MediaApi extends MpApi { /** * 获取永久媒体素材的总数
.图片和图文消息素材(包括单图文和多图文)的总数上限为5000,其他素材的总数上限为1000 - * + * * @return 总数对象 * @throws WeixinException * @see com.foxinmy.weixin4j.model.MediaCounter @@ -465,7 +465,7 @@ public class MediaApi extends MpApi { /** * 获取媒体素材记录列表 - * + * * @param mediaType * 素材的类型,图片(image)、视频(video)、语音 (voice)、图文(news) * @param pageable @@ -518,7 +518,7 @@ public class MediaApi extends MpApi { /** * 获取全部的媒体素材 - * + * * @param mediaType * 媒体类型 * @return 素材列表 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 c81593e6..c927010f 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 @@ -6,12 +6,12 @@ import org.junit.Test; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator; +import com.foxinmy.weixin4j.setting.Weixin4jSettings; import com.foxinmy.weixin4j.token.TokenHolder; -import com.foxinmy.weixin4j.util.Weixin4jSettings; /** * token测试 - * + * * @className TokenTest * @author jinyu(foxinmy@gmail.com) * @date 2014年4月10日 @@ -26,7 +26,7 @@ public class TokenTest { public void setUp() { this.settings = new Weixin4jSettings(); tokenHolder = new TokenHolder(new WeixinTokenCreator(settings - .getWeixinAccount().getId(), settings.getWeixinAccount() + .getAccount().getId(), settings.getAccount() .getSecret()), settings.getTokenStorager0()); } diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java index cfa46c92..d883cadc 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java @@ -46,15 +46,15 @@ import com.foxinmy.weixin4j.qy.type.ChatType; import com.foxinmy.weixin4j.qy.type.InviteType; import com.foxinmy.weixin4j.qy.type.KfType; import com.foxinmy.weixin4j.qy.type.UserStatus; +import com.foxinmy.weixin4j.setting.Weixin4jSettings; import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.tuple.MpArticle; import com.foxinmy.weixin4j.type.MediaType; import com.foxinmy.weixin4j.type.TicketType; -import com.foxinmy.weixin4j.util.Weixin4jSettings; /** * 微信企业号接口实现 - * + * * @className WeixinProxy * @author jinyu(foxinmy@gmail.com) * @date 2014年11月19日 @@ -120,21 +120,21 @@ public class WeixinProxy { } /** - * + * * @param settings * 微信配置信息 - * @see com.foxinmy.weixin4j.util.Weixin4jSettings + * @see com.foxinmy.weixin4j.setting.Weixin4jSettings */ public WeixinProxy(Weixin4jSettings settings) { - this(new TokenHolder( - new WeixinTokenCreator(settings.getWeixinAccount().getId(), settings.getWeixinAccount().getSecret()), + this(new TokenHolder(new WeixinTokenCreator(settings.getAccount() + .getId(), settings.getAccount().getSecret()), settings.getTokenStorager0())); this.settings = settings; } /** * 第三方套件(永久授权码机制) - * + * * @param perCodeHolder * 第三方套件永久授权码 * {@link com.foxinmy.weixin4j.qy.api.SuiteApi#getPerCodeHolder(String)} @@ -144,16 +144,18 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.qy.api.SuiteApi * @see WeixinSuiteProxy#getWeixinProxy(String, String) */ - public WeixinProxy(SuitePerCodeHolder perCodeHolder, TokenHolder suiteTokenHolder) { - this(new TokenHolder(new WeixinTokenSuiteCreator(perCodeHolder, suiteTokenHolder), - perCodeHolder.getTokenStorager())); - this.settings = new Weixin4jSettings(new WeixinAccount(perCodeHolder.getAuthCorpId(), null)); + public WeixinProxy(SuitePerCodeHolder perCodeHolder, + TokenHolder suiteTokenHolder) { + this(new TokenHolder(new WeixinTokenSuiteCreator(perCodeHolder, + suiteTokenHolder), perCodeHolder.getTokenStorager())); + this.settings = new Weixin4jSettings(new WeixinAccount( + perCodeHolder.getAuthCorpId(), null)); } /** - * 注意:TokenCreator 需为 - * WeixinTokenCreator或WeixinTokenSuiteCreator - * + * 注意:TokenCreator 需为 WeixinTokenCreator或WeixinTokenSuiteCreator + * * @see com.foxinmy.weixin4j.qy.token.WeixinTokenCreator * @param tokenHolder */ @@ -173,7 +175,7 @@ public class WeixinProxy { /** * token获取 - * + * * @return */ public TokenHolder getTokenHolder() { @@ -182,22 +184,23 @@ public class WeixinProxy { /** * 获取微信账号信息 - * + * * @return */ public WeixinAccount getWeixinAccount() { - return this.settings.getWeixinAccount(); + return this.settings.getAccount(); } /** * 获取JSSDK Ticket的tokenHolder - * + * * @param ticketType * 票据类型 * @return */ public TokenHolder getTicketHolder(TicketType ticketType) { - return new TokenHolder(new WeixinTicketCreator(getWeixinAccount().getId(), ticketType, this.tokenHolder), + return new TokenHolder(new WeixinTicketCreator(getWeixinAccount() + .getId(), ticketType, this.tokenHolder), this.settings.getTokenStorager0()); } @@ -208,12 +211,11 @@ public class WeixinProxy { * 2)发送人员不在通讯录权限范围内:不执行发送任务,返回首个出错的userid
* 3)发送人员不在应用可见范围内:不执行发送任务,返回首个出错的userid
*

- * + * * @param message * 客服消息对象 * @return 如果对应用或收件人、部门、标签任何一个无权限,则本次发送失败;如果收件人、部门或标签不存在,发送仍然执行,但返回无效的部分 - *
- * { "errcode": 0, "errmsg": "ok", "invaliduser": "UserID1", + *
{ "errcode": 0, "errmsg": "ok", "invaliduser": "UserID1", * "invalidparty":"PartyID1", "invalidtag":"TagID1" } * @throws WeixinException * @see com.foxinmy.weixin4j.qy.api.NotifyApi @@ -232,13 +234,14 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.tuple.MpNews * @see com.foxinmy.weixin4j.qy.model.IdParameter */ - public IdParameter sendNotifyMessage(NotifyMessage message) throws WeixinException { + public IdParameter sendNotifyMessage(NotifyMessage message) + throws WeixinException { return notifyApi.sendNotifyMessage(message); } /** * 发送客服消息 - * + * * @param message * 客服消息对象 * @return 发送结果 @@ -254,13 +257,14 @@ public class WeixinProxy { * @see com.foxinmy.weixin4j.qy.message.CustomeMessage * @throws WeixinException */ - public JsonResult sendCustomeMessage(CustomeMessage message) throws WeixinException { + public JsonResult sendCustomeMessage(CustomeMessage message) + throws WeixinException { return notifyApi.sendCustomeMessage(message); } /** * 获取客服列表 - * + * * @param kfType * 客服类型 为空时返回全部类型的客服 * @return 第一个元素为内部客服(internal),第二个参数为外部客服(external) @@ -277,10 +281,10 @@ public class WeixinProxy { /** * 自定义菜单(管理员须拥有应用的管理权限 并且应用必须设置在回调模式) - * + * * @param agentid * 应用ID - * + * * @param buttons * 菜单列表 * @throws WeixinException @@ -290,13 +294,14 @@ public class WeixinProxy { * 创建自定义菜单
* @see com.foxinmy.weixin4j.model.Button */ - public JsonResult createMenu(int agentid, List