修缮token实现机制
This commit is contained in:
@@ -28,8 +28,9 @@ import com.foxinmy.weixin4j.mp.type.CurrencyType;
|
||||
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.FileTokenStorager;
|
||||
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||
import com.foxinmy.weixin4j.token.TokenStorager;
|
||||
import com.foxinmy.weixin4j.util.ConfigUtil;
|
||||
|
||||
/**
|
||||
@@ -51,19 +52,32 @@ public class WeixinPayProxy {
|
||||
private final CouponApi couponApi;
|
||||
private final CashApi cashApi;
|
||||
|
||||
/**
|
||||
* 默认使用文件保存token、使用weixin4j.properties配置的账号信息
|
||||
*/
|
||||
public WeixinPayProxy() {
|
||||
this(JSON.parseObject(ConfigUtil.getValue("account"),
|
||||
WeixinMpAccount.class), new FileTokenHolder(
|
||||
new WeixinTokenCreator()));
|
||||
this(new FileTokenStorager());
|
||||
}
|
||||
|
||||
/**
|
||||
* WeixinAccount对象
|
||||
*
|
||||
* @param weixinAccount
|
||||
* 微信账户
|
||||
* 使用weixin4j.properties配置的账号信息
|
||||
*/
|
||||
public WeixinPayProxy(WeixinMpAccount weixinAccount, TokenHolder tokenHolder) {
|
||||
public WeixinPayProxy(TokenStorager tokenStorager) {
|
||||
this(tokenStorager, JSON.parseObject(ConfigUtil.getValue("account"),
|
||||
WeixinMpAccount.class));
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param tokenStorager
|
||||
* token的存储策略
|
||||
* @param weixinAccount
|
||||
* 公众号账号信息
|
||||
*/
|
||||
public WeixinPayProxy(TokenStorager tokenStorager,
|
||||
WeixinMpAccount weixinAccount) {
|
||||
TokenHolder tokenHolder = new TokenHolder(new WeixinTokenCreator(
|
||||
weixinAccount), tokenStorager);
|
||||
this.pay2Api = new Pay2Api(weixinAccount, tokenHolder);
|
||||
this.pay3Api = new Pay3Api(weixinAccount, tokenHolder);
|
||||
int version = weixinAccount.getVersion();
|
||||
|
||||
@@ -8,6 +8,7 @@ import java.util.List;
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.http.weixin.JsonResult;
|
||||
import com.foxinmy.weixin4j.model.Button;
|
||||
import com.foxinmy.weixin4j.model.WeixinAccount;
|
||||
import com.foxinmy.weixin4j.mp.api.CustomApi;
|
||||
import com.foxinmy.weixin4j.mp.api.DataApi;
|
||||
import com.foxinmy.weixin4j.mp.api.GroupApi;
|
||||
@@ -39,13 +40,15 @@ 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.token.FileTokenHolder;
|
||||
import com.foxinmy.weixin4j.token.FileTokenStorager;
|
||||
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||
import com.foxinmy.weixin4j.token.TokenStorager;
|
||||
import com.foxinmy.weixin4j.tuple.MassTuple;
|
||||
import com.foxinmy.weixin4j.tuple.MpArticle;
|
||||
import com.foxinmy.weixin4j.tuple.Tuple;
|
||||
import com.foxinmy.weixin4j.tuple.Video;
|
||||
import com.foxinmy.weixin4j.type.MediaType;
|
||||
import com.foxinmy.weixin4j.util.ConfigUtil;
|
||||
|
||||
/**
|
||||
* 微信公众平台接口实现
|
||||
@@ -71,10 +74,18 @@ public class WeixinProxy {
|
||||
private final DataApi dataApi;
|
||||
|
||||
/**
|
||||
* 默认采用文件存放Token信息
|
||||
* 默认使用文件方式保存token、使用weixin4j.properties配置的账号信息
|
||||
*/
|
||||
public WeixinProxy() {
|
||||
this(new FileTokenHolder(new WeixinTokenCreator()));
|
||||
this(new FileTokenStorager());
|
||||
}
|
||||
|
||||
/**
|
||||
* 默认使用weixin4j.properties配置的账号信息
|
||||
* @param tokenStorager
|
||||
*/
|
||||
public WeixinProxy(TokenStorager tokenStorager) {
|
||||
this(tokenStorager, ConfigUtil.getWeixinAccount());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -83,16 +94,19 @@ public class WeixinProxy {
|
||||
* @param appsecret
|
||||
*/
|
||||
public WeixinProxy(String appid, String appsecret) {
|
||||
this(new FileTokenHolder(new WeixinTokenCreator(appid, appsecret)));
|
||||
this(new FileTokenStorager(), new WeixinAccount(appid, appsecret));
|
||||
}
|
||||
|
||||
/**
|
||||
* TokenHolder对象
|
||||
*
|
||||
* @see com.foxinmy.weixin4j.token.TokenHolder
|
||||
* @param tokenHolder
|
||||
* @param tokenStorager
|
||||
* token存储策略
|
||||
* @param weixinAccount
|
||||
* 公众号账号信息
|
||||
*/
|
||||
public WeixinProxy(TokenHolder tokenHolder) {
|
||||
public WeixinProxy(TokenStorager tokenStorager, WeixinAccount weixinAccount) {
|
||||
TokenHolder tokenHolder = new TokenHolder(new WeixinTokenCreator(
|
||||
weixinAccount), tokenStorager);
|
||||
this.mediaApi = new MediaApi(tokenHolder);
|
||||
this.notifyApi = new NotifyApi(tokenHolder);
|
||||
this.customApi = new CustomApi(tokenHolder);
|
||||
|
||||
@@ -13,8 +13,7 @@ import com.foxinmy.weixin4j.mp.model.WeixinMpAccount;
|
||||
import com.foxinmy.weixin4j.mp.payment.coupon.CouponDetail;
|
||||
import com.foxinmy.weixin4j.mp.payment.coupon.CouponResult;
|
||||
import com.foxinmy.weixin4j.mp.payment.coupon.CouponStock;
|
||||
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
|
||||
import com.foxinmy.weixin4j.token.FileTokenHolder;
|
||||
import com.foxinmy.weixin4j.token.FileTokenStorager;
|
||||
import com.foxinmy.weixin4j.util.DateUtil;
|
||||
|
||||
/**
|
||||
@@ -33,8 +32,7 @@ public class CouponTest {
|
||||
ACCOUNT = new WeixinMpAccount("appid",
|
||||
"appsecret",
|
||||
"paysign", "mchid");
|
||||
WEIXINPAY = new WeixinPayProxy(ACCOUNT, new FileTokenHolder(
|
||||
new WeixinTokenCreator(ACCOUNT.getId(), ACCOUNT.getSecret())));
|
||||
WEIXINPAY = new WeixinPayProxy(new FileTokenStorager(), ACCOUNT);
|
||||
}
|
||||
protected final File caFile = new File("证书文件路径(*.p12)");
|
||||
|
||||
|
||||
@@ -17,11 +17,10 @@ import com.foxinmy.weixin4j.mp.payment.v3.ApiResult;
|
||||
import com.foxinmy.weixin4j.mp.payment.v3.Order;
|
||||
import com.foxinmy.weixin4j.mp.payment.v3.PayPackageV3;
|
||||
import com.foxinmy.weixin4j.mp.payment.v3.PrePay;
|
||||
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
|
||||
import com.foxinmy.weixin4j.mp.type.IdQuery;
|
||||
import com.foxinmy.weixin4j.mp.type.IdType;
|
||||
import com.foxinmy.weixin4j.mp.type.TradeType;
|
||||
import com.foxinmy.weixin4j.token.FileTokenHolder;
|
||||
import com.foxinmy.weixin4j.token.FileTokenStorager;
|
||||
|
||||
public class PayTest {
|
||||
private final static WeixinPayProxy PAY2;
|
||||
@@ -31,12 +30,10 @@ public class PayTest {
|
||||
static {
|
||||
ACCOUNT2 = new WeixinMpAccount("请填入v2版本的appid", "请填入v2版本的appSecret",
|
||||
"请填入v3版本的paysignkey", "请填入v2版本的partnerId", "请填入v2版本的partnerKey");
|
||||
PAY2 = new WeixinPayProxy(ACCOUNT2, new FileTokenHolder(
|
||||
new WeixinTokenCreator(ACCOUNT2.getId(), ACCOUNT2.getSecret())));
|
||||
PAY2 = new WeixinPayProxy(new FileTokenStorager(), ACCOUNT2);
|
||||
ACCOUNT3 = new WeixinMpAccount("请填入v3版本的appid", "请填入v3版本的appSecret",
|
||||
"请填入v3版本的paysignkey", "请填入v3版本的mchid");
|
||||
PAY3 = new WeixinPayProxy(ACCOUNT3, new FileTokenHolder(
|
||||
new WeixinTokenCreator(ACCOUNT3.getId(), ACCOUNT3.getSecret())));
|
||||
PAY3 = new WeixinPayProxy(new FileTokenStorager(), ACCOUNT3);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -6,7 +6,7 @@ import org.junit.Test;
|
||||
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
|
||||
import com.foxinmy.weixin4j.token.FileTokenHolder;
|
||||
import com.foxinmy.weixin4j.token.FileTokenStorager;
|
||||
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||
|
||||
/**
|
||||
@@ -23,7 +23,8 @@ public class TokenTest {
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
tokenHolder = new FileTokenHolder(new WeixinTokenCreator());
|
||||
tokenHolder = new TokenHolder(new WeixinTokenCreator(),
|
||||
new FileTokenStorager());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user