优化MchPayRequest & ServerToolkits

This commit is contained in:
jinyu
2015-12-27 14:14:20 +08:00
parent 1fc5a34369
commit 66bd25bb58
21 changed files with 74 additions and 100 deletions
@@ -130,13 +130,14 @@ public class Pay3Api {
PrePay prePay = createPrePay(payPackage);
String tradeType = payPackage.getTradeType();
if (TradeType.APP.name().equalsIgnoreCase(tradeType)) {
return new APPPayRequest(prePay, weixinAccount);
return new APPPayRequest(prePay.getPrepayId(), weixinAccount);
} else if (TradeType.JSAPI.name().equalsIgnoreCase(tradeType)) {
return new JSAPIPayRequest(prePay, weixinAccount);
return new JSAPIPayRequest(prePay.getPrepayId(), weixinAccount);
} else if (TradeType.NATIVE.name().equalsIgnoreCase(tradeType)) {
return new NATIVEPayRequest(prePay, weixinAccount);
return new NATIVEPayRequest(prePay.getPrepayId(),
prePay.getCodeUrl(), weixinAccount);
} else if (TradeType.WAP.name().equalsIgnoreCase(tradeType)) {
return new WAPPayRequest(prePay, weixinAccount);
return new WAPPayRequest(prePay.getPrepayId(), weixinAccount);
} else if (TradeType.MICROPAY.name().equalsIgnoreCase(tradeType)) {
throw new WeixinPayException("maybe use createMicroPay method?");
} else {
@@ -19,8 +19,8 @@ import com.foxinmy.weixin4j.util.MapUtil;
*/
public class APPPayRequest extends AbstractPayRequest {
public APPPayRequest(PrePay prePay, WeixinPayAccount payAccount) {
super(prePay, payAccount);
public APPPayRequest(String prePayId, WeixinPayAccount payAccount) {
super(prePayId, payAccount);
}
/**
@@ -30,7 +30,7 @@ public class APPPayRequest extends AbstractPayRequest {
public PayRequest toRequestObject() {
PayRequest payRequest = new PayRequest(getPayAccount().getId(),
"Sign=WXPay");
payRequest.setPrepayId(getPrePay().getPrepayId());
payRequest.setPrepayId(getPrePayId());
payRequest.setPartnerId(getPayAccount().getPartnerId());
return payRequest;
}
@@ -1,30 +1,24 @@
package com.foxinmy.weixin4j.payment.mch;
import com.alibaba.fastjson.JSON;
import com.foxinmy.weixin4j.model.WeixinPayAccount;
public abstract class AbstractPayRequest implements MchPayRequest {
private final PrePay prePay;
private final String prePayId;
private final WeixinPayAccount payAccount;
public AbstractPayRequest(PrePay prePay, WeixinPayAccount payAccount) {
this.prePay = prePay;
public AbstractPayRequest(String prePayId, WeixinPayAccount payAccount) {
this.prePayId = prePayId;
this.payAccount = payAccount;
}
@Override
public PrePay getPrePay() {
return this.prePay;
public String getPrePayId() {
return this.prePayId;
}
@Override
public WeixinPayAccount getPayAccount() {
return this.payAccount;
}
@Override
public String toRequestString() {
return JSON.toJSONString(toRequestObject());
}
}
@@ -1,5 +1,6 @@
package com.foxinmy.weixin4j.payment.mch;
import com.alibaba.fastjson.JSON;
import com.foxinmy.weixin4j.model.WeixinPayAccount;
import com.foxinmy.weixin4j.payment.PayRequest;
import com.foxinmy.weixin4j.type.SignType;
@@ -24,17 +25,22 @@ import com.foxinmy.weixin4j.util.DigestUtil;
*/
public class JSAPIPayRequest extends AbstractPayRequest {
public JSAPIPayRequest(PrePay prePay, WeixinPayAccount payAccount) {
super(prePay, payAccount);
public JSAPIPayRequest(String prePayId, WeixinPayAccount payAccount) {
super(prePayId, payAccount);
}
@Override
public PayRequest toRequestObject() {
PayRequest payRequest = new PayRequest(getPayAccount().getId(),
"prepay_id=" + getPrePay().getPrepayId());
"prepay_id=" + getPrePayId());
payRequest.setSignType(SignType.MD5);
payRequest.setPaySign(DigestUtil.paysignMd5(payRequest, getPayAccount()
.getPaySignKey()));
return payRequest;
}
@Override
public String toRequestString() {
return JSON.toJSONString(toRequestObject());
}
}
@@ -17,11 +17,11 @@ import com.foxinmy.weixin4j.payment.PayRequest;
*/
public interface MchPayRequest {
/**
* 预支付对象
* 预支付交易ID
*
* @return
*/
public PrePay getPrePay();
public String getPrePayId();
/**
* 商户信息
@@ -17,8 +17,12 @@ import com.foxinmy.weixin4j.payment.PayRequest;
*/
public class NATIVEPayRequest extends AbstractPayRequest {
public NATIVEPayRequest(PrePay prePay, WeixinPayAccount payAccount) {
super(prePay, payAccount);
private final String codeUrl;
public NATIVEPayRequest(String prePayId, String codeUrl,
WeixinPayAccount payAccount) {
super(prePayId, payAccount);
this.codeUrl = codeUrl;
}
/**
@@ -26,12 +30,11 @@ public class NATIVEPayRequest extends AbstractPayRequest {
*/
@Override
public PayRequest toRequestObject() {
return new PayRequest(getPayAccount().getId(), "code_url="
+ getPrePay().getCodeUrl());
return new PayRequest(getPayAccount().getId(), "code_url=" + codeUrl);
}
@Override
public String toRequestString() {
return getPrePay().getCodeUrl();
return this.codeUrl;
}
}
@@ -22,8 +22,8 @@ import com.foxinmy.weixin4j.util.URLEncodingUtil;
*/
public class WAPPayRequest extends AbstractPayRequest {
public WAPPayRequest(PrePay prePay, WeixinPayAccount payAccount) {
super(prePay, payAccount);
public WAPPayRequest(String prePayId, WeixinPayAccount payAccount) {
super(prePayId, payAccount);
}
/**
@@ -32,7 +32,7 @@ public class WAPPayRequest extends AbstractPayRequest {
@Override
public PayRequest toRequestObject() {
PayRequest payRequest = new PayRequest(getPayAccount().getId(), "WAP");
payRequest.setPrepayId(getPrePay().getPrepayId());
payRequest.setPrepayId(getPrePayId());
return payRequest;
}