diff --git a/README.md b/README.md index 520181d3..7335b098 100644 --- a/README.md +++ b/README.md @@ -58,173 +58,16 @@ https://github.com/foxinmy/weixin4j/releases ###3.从源码打包 -`git clone`&`mvn package`,到相应的target目录下将`weixin4j-*-full`包或者`weixin4j-base`和`weixin4j-*-api`引入到自己的工程. +`git clone`&`mvn package -Prelease`,到相应的target目录下将`weixin4j-[mp|qy]-full`包或者`weixin4j-base`和`weixin4j-[mp|qy]-api`引入到自己的工程. 如何获取netty部分 --------------- netty的代码没有放到maven中心仓库,也没什么意义,因为最终需要自己去实现具体的业务逻辑, -目前的做法是建议下载server部分的源代码复制到自己的工程内,当然你也可以直接在上面进行开发. +下载winxin4j-[mp|qy]-server项目的源代码复制到自己的工程内,当然也可以在上面直接开发. -更新LOG -------- -* 2014-10-27 - - + maven多模块分离 - - + **weixin4j-mp**: 用netty构建http服务器并支持消息分发 - -* 2014-10-28 - - + **weixin4j-mp**: 调整`ActionMapping`抽象化 - -* 2014-10-31 - - + **weixin4j-mp**: `weixin.properties`切分为API调用地址和公众号信息两部分 - - + **weixin4j-base**: `TokenApi`重命名为`TokenHolder` - - + **weixin4j-base**:新增`WeixinConfig`等类 - -* 2014-11-03 - - + **weixin4j-mp**: 分离为`weixin-mp-api`和`weixin-mp-server`两个工程 - - + **weixin4j-mp**: 加入支付模块 - -* 2014-11-05 - - + 优化了代码 - -* 2014-11-06 - - + **weixin4j-base**: 删除`WeixinConfig`类只保留`WeixinAccount`类 - - + **weixin4j-mp**: 新增V3版本`退款接口` - -* 2014-11-08 - - + **weixin4j-mp**: 新增V2版本`退款申请`、`退款查询`、`对账单下载`三个接口 - - + **weixin4j-mp**: 新增一个简单的`语义理解`接口 - -* 2014-11-11 - - + **weixin4j-mp**: 自定义`assembly`将`weixin4j-base`工程也一起打包(`weixin4j-mp-api-full.jar`) - -* 2014-11-15 - - + **weixin4j-base**: 新增aes加密解密函数 - - + **weixin4j-mp**: 新增获取`微信服务器IP地址`接口 - - + **weixin4j-mp**: 解决`server工程`打包后不能运行问题(`ClassUtil`无法获取jar包里面的类) - - + **weixin4j-mp**: 新增被动消息的`加密`以及回复消息的`解密` - -* 2014-11-16 - - + **weixin4j-mp**: 新增`多客服`接口 - -* 2014-11-17 - - + **weixin4j-mp**: 新增`冲正`和`被扫支付`接口 - -* 2014-11-19 - - + **weixin4j-base**: 新增`WeixinQyAccount`企业号账号信息类 - - + **weixin4j-qy**: 得到`weixin4j-qy`和`weixin4j-qy-server`工程 - - + **weixin4j-qy**: 新增`部门管理`接口 - - + **weixin4j-qy**: 新增`用户管理`接口 - - + **weixin4j-qy**: 新增`标签管理`接口 - -* 2014-11-23 - - + **weixin4j-base**: 新增企业号消息体以及用`Responseable`,`Notifyable`,`Massable`三个接口标记不同的可接受的消息类型 - - + **weixin4j-mp**: 重新定义(手贱)了「被动消息」「客服消息」「群发消息」的传输实体 - - + **weixin4j-mp**: `WeixinServerBootstrap`重命名为`WeixinMpServerBootstrap` - - + **weixin4j-qy**: 新增`多媒体管理`接口 - - + **weixin4j-qy**: 新增`发送消息`接口 - - + **weixin4j-qy**: 新增`菜单管理`接口 - -* 2014-11-24 - - + **weixin4j-base**: 将Action跟Mapping基础类并入到项目 - - + **weixin4j-qy**: 新增netty服务与消息分发 - -* 2014-11-27 - - + **weixin-base**: 将BaseApi移入 - -* 2014-11-29 - - + 重构了POM - -* 2014-12-12 - - + **weixin4j-mp**: 新增设置`模板消息所处行业`、`获取模板消息ID`接口 - -* 2014-12-15 - - + **weixin4j-mp**: 修改某些函数在注释上的参数描述错误 - - + **weixin4j-mp**: 调整PayUtil类中`createPayJsRequestJsonV3`的形参位置,`notify_url`与`spbill_create_ip`对换与V2保持一致 - - + **weixin4j-mp**: 在PayUtil类中新增paySign重载版本函数,避免在某些地方产生歧义造成签名错误(appid,appKey) - - + **weixin4j-mp**: 修正V3版本JSAPI接口支付签名错误bug(坑) - -* 2014-12-16 - - + **weixin4j-mp**: 调整方法上@see注解的文档说明接口url - - + **weixin4j-mp**: 新增群发消息预览、状态查询接口 - - + **weixin4j-mp**: 新增多客服添加账号、更新账号、上传头像、删除账号接口 - -* 2014-12-18 - - + clear code with findbugs plugin - - + change the version to 1.1 - -* 2014-12-28 - - + **weixin4j-qy**: 增加用户进入应用的callback事件 - - + **weixin4j-qy**: 增加批量获取用户详情的接口 - - + **weixin4j-qy**: 新增获取微信服务器IP接口 - - + **weixin4j-qy**: 调整回调模式下的首次验证的签名方式 - -* 2015-01-04 - - + **weixin4j-base**: 新增获取classpath目录下的资源路径的方法 - - + **weixin4j-mp**: 支付模块拆分为V2跟V3,新增WeixinPayProxy类 - - + **weixin4j-mp**: 退款相关类拆分V2跟V3 - - + **weixin4j-mp**: 新增接口上报接口 - - + **weixin4j-qy**: 新增批量删除员工接口 - -* 2015-01-10 - - + **weixin4j-base**: 重构token实现机制 - - + **weixin4j-base**: 新增JSTICKET支持 +[更新LOG](./change.log) +---------------------- 接下来 ------ diff --git a/weixin4j-mp/README.md b/weixin4j-mp/README.md index 051522d0..f4ade6d1 100644 --- a/weixin4j-mp/README.md +++ b/weixin4j-mp/README.md @@ -27,6 +27,10 @@ weixin4j-mp + TmplApi `模板消息API` + HelperApi `辅助API` + + + Pay2Api `V2支付API` + + + Pay3Api `V3支付API` * **weixin4j-mp-server** @@ -67,7 +71,7 @@ weixin4j-mp ca_file=/tmp/weixin/xxxxx.p12 | xxxx.pfx #classpath路径下:ca_file=classpath:xxxxx.p12 -3.在项目根目录下执行`mvn package`命令后得到jar包,将`weixin4j-mp-full`包或者`weixin4j-base`和`weixin4j-mp-api`两个包引入到自己的工程. +3.在项目根目录下执行`mvn package -Prelease`命令后得到jar包,将`weixin4j-mp-full`包或者`weixin4j-base`和`weixin4j-mp-api`两个包引入到自己的工程. WeixinProxy weixinProxy = new WeixinProxy(); // weixinProxy = new WeixinProxy(appid,appsecret); diff --git a/weixin4j-mp/weixin4j-mp-api/README.md b/weixin4j-mp/weixin4j-mp-api/README.md index fefb0c77..97246543 100644 --- a/weixin4j-mp/weixin4j-mp-api/README.md +++ b/weixin4j-mp/weixin4j-mp-api/README.md @@ -27,7 +27,9 @@ weixin4j-mp-api * HelperApi `辅助API` -* PayApi `支付API` +* Pay2Api `V2支付API` + +* Pay3Api `V3支付API` 如何使用 -------- diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java index 97357524..237f7686 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java @@ -15,6 +15,10 @@ import com.foxinmy.weixin4j.mp.type.BillType; import com.foxinmy.weixin4j.mp.type.IdQuery; import com.foxinmy.weixin4j.mp.type.IdType; import com.foxinmy.weixin4j.mp.type.RefundType; +import com.foxinmy.weixin4j.token.FileTokenHolder; +import com.foxinmy.weixin4j.token.TokenHolder; +import com.foxinmy.weixin4j.token.WeixinTokenCreator; +import com.foxinmy.weixin4j.type.AccountType; import com.foxinmy.weixin4j.util.ConfigUtil; /** @@ -33,7 +37,8 @@ public class WeixinPayProxy { private final Pay3Api pay3Api; public WeixinPayProxy() { - this(ConfigUtil.getWeixinMpAccount()); + this(ConfigUtil.getWeixinMpAccount(), new FileTokenHolder( + new WeixinTokenCreator(AccountType.MP))); } /** @@ -42,9 +47,9 @@ public class WeixinPayProxy { * @param weixinAccount * 微信账户 */ - public WeixinPayProxy(WeixinMpAccount weixinAccount) { - this.pay2Api = new Pay2Api(weixinAccount); - this.pay3Api = new Pay3Api(weixinAccount); + public WeixinPayProxy(WeixinMpAccount weixinAccount, TokenHolder tokenHolder) { + this.pay2Api = new Pay2Api(weixinAccount, tokenHolder); + this.pay3Api = new Pay3Api(weixinAccount, tokenHolder); int version = weixinAccount.getVersion(); if (version == 2) { this.payApi = this.pay2Api; diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java index 248790d5..237e3130 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java @@ -49,6 +49,7 @@ import com.foxinmy.weixin4j.mp.type.IdQuery; import com.foxinmy.weixin4j.mp.type.RefundType; import com.foxinmy.weixin4j.mp.type.SignType; import com.foxinmy.weixin4j.mp.util.ExcelUtil; +import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.util.ConfigUtil; import com.foxinmy.weixin4j.util.DateUtil; import com.foxinmy.weixin4j.util.MapUtil; @@ -56,7 +57,7 @@ import com.foxinmy.weixin4j.util.MapUtil; /** * V2支付API * - * @className PayApi + * @className Pay2Api * @author jy * @date 2014年10月28日 * @since JDK 1.7 @@ -66,8 +67,8 @@ public class Pay2Api extends PayApi { private final HelperApi helperApi; - public Pay2Api(WeixinMpAccount weixinAccount) { - super(weixinAccount); + public Pay2Api(WeixinMpAccount weixinAccount, TokenHolder tokenHolder) { + super(weixinAccount, tokenHolder); this.helperApi = new HelperApi(tokenHolder); } diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay3Api.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay3Api.java index d1bc2227..667abf1b 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay3Api.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay3Api.java @@ -39,6 +39,7 @@ import com.foxinmy.weixin4j.mp.type.BillType; import com.foxinmy.weixin4j.mp.type.IdQuery; import com.foxinmy.weixin4j.mp.type.IdType; import com.foxinmy.weixin4j.mp.util.ExcelUtil; +import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.util.ConfigUtil; import com.foxinmy.weixin4j.util.DateUtil; import com.foxinmy.weixin4j.util.RandomUtil; @@ -46,7 +47,7 @@ import com.foxinmy.weixin4j.util.RandomUtil; /** * V3支付API * - * @className PayApi + * @className Pay3Api * @author jy * @date 2014年10月28日 * @since JDK 1.7 @@ -54,8 +55,8 @@ import com.foxinmy.weixin4j.util.RandomUtil; */ public class Pay3Api extends PayApi { - public Pay3Api(WeixinMpAccount weixinAccount) { - super(weixinAccount); + public Pay3Api(WeixinMpAccount weixinAccount, TokenHolder tokenHolder) { + super(weixinAccount, tokenHolder); } /** diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/PayApi.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/PayApi.java index be911367..e5a7981e 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/PayApi.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/PayApi.java @@ -16,9 +16,7 @@ import com.foxinmy.weixin4j.mp.payment.v3.ApiResult; import com.foxinmy.weixin4j.mp.type.BillType; import com.foxinmy.weixin4j.mp.type.IdQuery; import com.foxinmy.weixin4j.mp.type.SignType; -import com.foxinmy.weixin4j.token.FileTokenHolder; import com.foxinmy.weixin4j.token.TokenHolder; -import com.foxinmy.weixin4j.token.WeixinTokenCreator; import com.foxinmy.weixin4j.util.DateUtil; /** @@ -33,13 +31,12 @@ import com.foxinmy.weixin4j.util.DateUtil; */ public abstract class PayApi extends MpApi { - protected final TokenHolder tokenHolder; protected final WeixinMpAccount weixinAccount; + protected final TokenHolder tokenHolder; - public PayApi(WeixinMpAccount weixinAccount) { + public PayApi(WeixinMpAccount weixinAccount, TokenHolder tokenHolder) { this.weixinAccount = weixinAccount; - this.tokenHolder = new FileTokenHolder(new WeixinTokenCreator( - weixinAccount.getAccountType())); + this.tokenHolder = tokenHolder; } /** diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/ApiResult.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/ApiResult.java index d8c06538..ffc6f8ce 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/ApiResult.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/ApiResult.java @@ -97,6 +97,10 @@ public class ApiResult extends XmlResult { return recall; } + public String setRecall() { + return recall; + } + @JSONField(deserialize = false, serialize = false) public boolean getFormatRecall() { return recall != null && recall.equalsIgnoreCase("y"); diff --git a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MenuTest.java b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MenuTest.java index 73181156..fb347441 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MenuTest.java +++ b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/MenuTest.java @@ -35,11 +35,23 @@ public class MenuTest extends TokenTest { public void create() throws WeixinException { btnList = new ArrayList