🎨 #1458 微信支付createOrder方法增加一个重载实现

调用 WxPayService 的 <T> T createOrder(WxPayUnifiedOrderRequest request) 时,经常找源码来看返回什么样的实体类,再强制转换。

通常在业务中使用此方法时,可以明确交易类型,所以添加一个交易类型的类,设置交易类型的同时,顺便作为确定 createOrder 返回类型的参数传入。
This commit is contained in:
JoeWoo
2020-03-22 11:13:36 +08:00
committed by GitHub
parent 6f7bc7c02c
commit d3b58e3174
4 changed files with 93 additions and 0 deletions

View File

@@ -8,6 +8,7 @@ import com.github.binarywang.wxpay.bean.notify.WxScanPayNotifyResult;
import com.github.binarywang.wxpay.bean.request.*;
import com.github.binarywang.wxpay.bean.result.*;
import com.github.binarywang.wxpay.config.WxPayConfig;
import com.github.binarywang.wxpay.constant.WxPayConstants;
import com.github.binarywang.wxpay.exception.WxPayException;
import java.io.File;
@@ -166,6 +167,17 @@ public interface WxPayService {
*/
<T> T createOrder(WxPayUnifiedOrderRequest request) throws WxPayException;
/**
* 调用统一下单接口,并组装生成支付所需参数对象.
*
* @see WxPayService#createOrder(WxPayUnifiedOrderRequest)
* @param specificTradeType 将使用的交易方式,不能为 null
* @param request 统一下单请求参数,设定的 tradeType 及配置里的 tradeType 将被忽略,转而使用 specificTradeType
* @return 返回 {@link WxPayConstants.TradeType.Specific} 指定的类
* @throws WxPayException the wx pay exception
*/
<T> T createOrder(WxPayConstants.TradeType.Specific<T> specificTradeType, WxPayUnifiedOrderRequest request) throws WxPayException;
/**
* 统一下单(详见https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_1)
* 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识"

View File

@@ -351,6 +351,15 @@ public abstract class BaseWxPayServiceImpl implements WxPayService {
}
@Override
public <T> T createOrder(TradeType.Specific<T> specificTradeType, WxPayUnifiedOrderRequest request) throws WxPayException {
if (specificTradeType == null) {
throw new IllegalArgumentException("specificTradeType 不能为 null");
}
request.setTradeType(specificTradeType.getType());
return createOrder(request);
}
@Override
public WxPayUnifiedOrderResult unifiedOrder(WxPayUnifiedOrderRequest request) throws WxPayException {
request.checkAndSign(this.getConfig());