将WeixinPayProxy的构造函数调整为(WeixinMpAccount,TokenHolder)

This commit is contained in:
jy.hu 2015-01-12 09:54:28 +08:00
parent a97beafaf2
commit 78332647c0
9 changed files with 52 additions and 183 deletions

165
README.md
View File

@ -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)
----------------------
接下来
------

View File

@ -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);

View File

@ -27,7 +27,9 @@ weixin4j-mp-api
* HelperApi `辅助API`
* PayApi `支付API`
* Pay2Api `V2支付API`
* Pay3Api `V3支付API`
如何使用
--------

View File

@ -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;

View File

@ -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);
}

View File

@ -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);
}
/**

View File

@ -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;
}
/**

View File

@ -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");

View File

@ -35,11 +35,23 @@ public class MenuTest extends TokenTest {
public void create() throws WeixinException {
btnList = new ArrayList<Button>();
Button b = new Button("click", "name", ButtonType.click);
btnList.add(b);
Button b1 = new Button("我要订餐", "ORDERING", ButtonType.click);
btnList.add(b1);
b = new Button("qq", "http://www.qq.com", ButtonType.view);
btnList.add(b);
Button b2 = new Button("", "", ButtonType.click);
b2.pushSub(new Button("个人中心", "MINE", ButtonType.click));
b2.pushSub(new Button("会员中心", "MEMRBER", ButtonType.click));
b2.pushSub(new Button("我的积分", "SCORE", ButtonType.click));
b2.pushSub(new Button("我的优惠券", "COUPON", ButtonType.click));
b2.pushSub(new Button("我的订单", "MYORDER", ButtonType.click));
btnList.add(b2);
Button b3 = new Button("商家功能", "", ButtonType.click);
b3.pushSub(new Button("商家主页", "SHOPLIST", ButtonType.click));
b3.pushSub(new Button("大转盘", "WHEEL", ButtonType.click));
b3.pushSub(new Button("店铺区域", "SHOPAREA", ButtonType.click));
b3.pushSub(new Button("店铺口味", "SHOPTASTE", ButtonType.click));
btnList.add(b3);
JsonResult result = menuApi.createMenu(btnList);
Assert.assertEquals(0, result.getCode());