将WeixinPayProxy的构造函数调整为(WeixinMpAccount,TokenHolder)
This commit is contained in:
parent
a97beafaf2
commit
78332647c0
165
README.md
165
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)
|
||||
----------------------
|
||||
|
||||
接下来
|
||||
------
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -27,7 +27,9 @@ weixin4j-mp-api
|
||||
|
||||
* HelperApi `辅助API`
|
||||
|
||||
* PayApi `支付API`
|
||||
* Pay2Api `V2支付API`
|
||||
|
||||
* Pay3Api `V3支付API`
|
||||
|
||||
如何使用
|
||||
--------
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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");
|
||||
|
||||
@ -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());
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user