主要改动了支付接口:对服务商版进行支持
This commit is contained in:
+37
-18
@@ -33,14 +33,16 @@ import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
|
||||
import com.foxinmy.weixin4j.http.weixin.WeixinSSLRequestExecutor;
|
||||
import com.foxinmy.weixin4j.model.Consts;
|
||||
import com.foxinmy.weixin4j.model.Token;
|
||||
import com.foxinmy.weixin4j.model.WeixinPayAccount;
|
||||
import com.foxinmy.weixin4j.model.WeixinPayOldAccount;
|
||||
import com.foxinmy.weixin4j.mp.payment.v2.OrderV2;
|
||||
import com.foxinmy.weixin4j.mp.payment.v2.PayPackageV2;
|
||||
import com.foxinmy.weixin4j.mp.payment.v2.RefundRecordV2;
|
||||
import com.foxinmy.weixin4j.mp.payment.v2.RefundResultV2;
|
||||
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
|
||||
import com.foxinmy.weixin4j.payment.PayRequest;
|
||||
import com.foxinmy.weixin4j.token.FileTokenStorager;
|
||||
import com.foxinmy.weixin4j.token.TokenHolder;
|
||||
import com.foxinmy.weixin4j.token.TokenStorager;
|
||||
import com.foxinmy.weixin4j.type.BillType;
|
||||
import com.foxinmy.weixin4j.type.IdQuery;
|
||||
import com.foxinmy.weixin4j.type.RefundType;
|
||||
@@ -50,11 +52,11 @@ import com.foxinmy.weixin4j.util.DigestUtil;
|
||||
import com.foxinmy.weixin4j.util.MapUtil;
|
||||
import com.foxinmy.weixin4j.util.RandomUtil;
|
||||
import com.foxinmy.weixin4j.util.StringUtil;
|
||||
import com.foxinmy.weixin4j.util.Weixin4jSettings;
|
||||
import com.foxinmy.weixin4j.util.Weixin4jConfigUtil;
|
||||
import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
|
||||
|
||||
/**
|
||||
* V2支付API
|
||||
* V2老支付API
|
||||
*
|
||||
* @className Pay2Api
|
||||
* @author jy
|
||||
@@ -62,24 +64,40 @@ import com.foxinmy.weixin4j.xml.ListsuffixResultDeserializer;
|
||||
* @since JDK 1.6
|
||||
* @see
|
||||
*/
|
||||
public class Pay2Api extends MpApi {
|
||||
public class PayOldApi extends MpApi {
|
||||
|
||||
private final Weixin4jSettings settings;
|
||||
private final WeixinPayOldAccount payAccount;
|
||||
private final TokenHolder tokenHolder;
|
||||
|
||||
public Pay2Api() {
|
||||
this(new Weixin4jSettings());
|
||||
/**
|
||||
* 默认使用weixin4j.properties配置信息
|
||||
*/
|
||||
public PayOldApi() {
|
||||
this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
|
||||
WeixinPayOldAccount.class), new FileTokenStorager(
|
||||
Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
|
||||
System.getProperty("java.io.tmpdir"))));
|
||||
}
|
||||
|
||||
public Pay2Api(Weixin4jSettings settings) {
|
||||
this.tokenHolder = new TokenHolder(new WeixinTokenCreator(settings
|
||||
.getWeixinAccount().getId(), settings.getWeixinAccount()
|
||||
.getSecret()), settings.getTokenStorager0());
|
||||
this.settings = settings;
|
||||
public PayOldApi(WeixinPayOldAccount payAccount) {
|
||||
this(payAccount, new FileTokenStorager(
|
||||
Weixin4jConfigUtil.getClassPathValue("weixin4j.tmpdir",
|
||||
System.getProperty("java.io.tmpdir"))));
|
||||
}
|
||||
|
||||
public WeixinPayAccount getPayAccount() {
|
||||
return this.settings.getWeixinPayAccount();
|
||||
public PayOldApi(TokenStorager tokenStorager) {
|
||||
this(JSON.parseObject(Weixin4jConfigUtil.getValue("account"),
|
||||
WeixinPayOldAccount.class), tokenStorager);
|
||||
}
|
||||
|
||||
public PayOldApi(WeixinPayOldAccount payAccount, TokenStorager tokenStorager) {
|
||||
this.payAccount = payAccount;
|
||||
this.tokenHolder = new TokenHolder(new WeixinTokenCreator(
|
||||
payAccount.getId(), payAccount.getSecret()), tokenStorager);
|
||||
}
|
||||
|
||||
public WeixinPayOldAccount getPayAccount() {
|
||||
return this.payAccount;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -294,7 +312,7 @@ public class Pay2Api extends MpApi {
|
||||
CertificateFactory cf = CertificateFactory
|
||||
.getInstance(com.foxinmy.weixin4j.model.Consts.X509);
|
||||
java.security.cert.Certificate cert = cf
|
||||
.generateCertificate(Pay2Api.class
|
||||
.generateCertificate(PayOldApi.class
|
||||
.getResourceAsStream("cacert.pem"));
|
||||
ks = KeyStore
|
||||
.getInstance(com.foxinmy.weixin4j.model.Consts.JKS);
|
||||
@@ -433,11 +451,13 @@ public class Pay2Api extends MpApi {
|
||||
* @param billType
|
||||
* 下载对账单的类型 ALL,返回当日所有订单信息, 默认值 SUCCESS,返回当日成功支付的订单
|
||||
* REFUND,返回当日退款订单
|
||||
* @param billPath
|
||||
* 对账单保存路径
|
||||
* @return excel表格
|
||||
* @since V2
|
||||
* @throws WeixinException
|
||||
*/
|
||||
public File downloadBill(Date billDate, BillType billType)
|
||||
public File downloadBill(Date billDate, BillType billType, String billPath)
|
||||
throws WeixinException {
|
||||
if (billDate == null) {
|
||||
Calendar now = Calendar.getInstance();
|
||||
@@ -450,8 +470,7 @@ public class Pay2Api extends MpApi {
|
||||
String formatBillDate = DateUtil.fortmat2yyyyMMdd(billDate);
|
||||
String fileName = String.format("%s_%s_%s.txt", formatBillDate,
|
||||
billType.name().toLowerCase(), getPayAccount().getId());
|
||||
File file = new File(String.format("%s/weixin4j_bill_%s",
|
||||
settings.getTmpdir0(), fileName));
|
||||
File file = new File(String.format("%s/%s", billPath, fileName));
|
||||
if (file.exists()) {
|
||||
return file;
|
||||
}
|
||||
+2
-2
@@ -9,7 +9,7 @@ import javax.xml.bind.annotation.XmlElement;
|
||||
import javax.xml.bind.annotation.XmlRootElement;
|
||||
|
||||
import com.alibaba.fastjson.annotation.JSONField;
|
||||
import com.foxinmy.weixin4j.model.WeixinPayAccount;
|
||||
import com.foxinmy.weixin4j.model.WeixinPayOldAccount;
|
||||
import com.foxinmy.weixin4j.payment.PayRequest;
|
||||
import com.foxinmy.weixin4j.util.DigestUtil;
|
||||
|
||||
@@ -62,7 +62,7 @@ public class NativePayResponseV2 extends PayRequest {
|
||||
* @param payPackage
|
||||
* 订单信息
|
||||
*/
|
||||
public NativePayResponseV2(WeixinPayAccount weixinAccount,
|
||||
public NativePayResponseV2(WeixinPayOldAccount weixinAccount,
|
||||
PayPackageV2 payPackage) {
|
||||
super(weixinAccount.getId(), DigestUtil.packageSign(payPackage,
|
||||
weixinAccount.getPartnerKey()));
|
||||
|
||||
@@ -6,11 +6,10 @@ import java.util.Calendar;
|
||||
import org.junit.Test;
|
||||
|
||||
import com.foxinmy.weixin4j.exception.WeixinException;
|
||||
import com.foxinmy.weixin4j.model.WeixinPayAccount;
|
||||
import com.foxinmy.weixin4j.mp.api.Pay2Api;
|
||||
import com.foxinmy.weixin4j.model.WeixinPayOldAccount;
|
||||
import com.foxinmy.weixin4j.mp.api.PayOldApi;
|
||||
import com.foxinmy.weixin4j.type.IdQuery;
|
||||
import com.foxinmy.weixin4j.type.IdType;
|
||||
import com.foxinmy.weixin4j.util.Weixin4jSettings;
|
||||
|
||||
/**
|
||||
* 支付测试(V2版本 2014年9月之前申请微信支付的公众号)
|
||||
@@ -22,13 +21,13 @@ import com.foxinmy.weixin4j.util.Weixin4jSettings;
|
||||
* @see
|
||||
*/
|
||||
public class PayTest {
|
||||
protected final static Pay2Api PAY2;
|
||||
protected final static WeixinPayAccount ACCOUNT2;
|
||||
protected final static PayOldApi PAY2;
|
||||
protected final static WeixinPayOldAccount ACCOUNT2;
|
||||
static {
|
||||
ACCOUNT2 = new WeixinPayAccount("请填入v2版本的appid", "请填入v2版本的appSecret",
|
||||
"请填入v2版本的paysignkey", null, null, null, null,
|
||||
"请填入v2版本的partnerId", "请填入v2版本的partnerKey");
|
||||
PAY2 = new Pay2Api(new Weixin4jSettings(ACCOUNT2));
|
||||
ACCOUNT2 = new WeixinPayOldAccount("请填入v2版本的appid",
|
||||
"请填入v2版本的appSecret", "请填入v2版本的paysignkey", "请填入v2版本的partnerId",
|
||||
"请填入v2版本的partnerKey");
|
||||
PAY2 = new PayOldApi(ACCOUNT2);
|
||||
}
|
||||
/**
|
||||
* 商户证书文件
|
||||
@@ -60,7 +59,7 @@ public class PayTest {
|
||||
c.set(Calendar.YEAR, 2014);
|
||||
c.set(Calendar.MONTH, 11);
|
||||
c.set(Calendar.DAY_OF_MONTH, 22);
|
||||
File file = PAY2.downloadBill(c.getTime(), null);
|
||||
File file = PAY2.downloadBill(c.getTime(), null, "/tmp/bill");
|
||||
System.err.println(file);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user