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值");
}
}