diff --git a/pom.xml b/pom.xml index 53a49b98..c5e57b88 100644 --- a/pom.xml +++ b/pom.xml @@ -152,7 +152,7 @@ org.apache.commons commons-lang3 - 3.6 + 3.5 org.slf4j diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayUnifiedOrderRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayUnifiedOrderRequest.java index ecd73dd5..f45a2d0c 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayUnifiedOrderRequest.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/request/WxPayUnifiedOrderRequest.java @@ -333,12 +333,18 @@ public class WxPayUnifiedOrderRequest extends WxPayBaseRequest { @Override protected void checkConstraints() throws WxPayException { - if (TradeType.JSAPI.equals(this.getTradeType()) && this.getOpenid() == null && this.getSubOpenid() == null) { - throw new WxPayException("当 trade_type是'JSAPI'时未指定openid或sub_openid"); + if (TradeType.JSAPI.equals(this.getTradeType())) { + if (StringUtils.isBlank(this.getSubAppId()) && StringUtils.isBlank(this.getOpenid())) { + throw new WxPayException("当trade_type是'JSAPI'时,需指定非空的openid值"); + } + + if (StringUtils.isNotBlank(this.getSubAppId()) && StringUtils.isBlank(this.getSubOpenid())) { + throw new WxPayException("在服务商模式下,当trade_type是'JSAPI'时,需指定非空的sub_openid值"); + } } - if (TradeType.NATIVE.equals(this.getTradeType()) && this.getProductId() == null) { - throw new WxPayException("当 trade_type是'NATIVE'时未指定product_id"); + if (TradeType.NATIVE.equals(this.getTradeType()) && StringUtils.isBlank(this.getProductId())) { + throw new WxPayException("当trade_type是'NATIVE'时,需指定非空的product_id值"); } }