|
|
@@ -10,7 +10,7 @@ import org.apache.commons.lang3.StringUtils; |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 统一下单请求参数对象 |
|
|
|
* 统一下单请求参数对象. |
|
|
|
* 参考文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 |
|
|
|
* Created by Binary Wang on 2016/9/25. |
|
|
|
* </pre> |
|
|
@@ -24,9 +24,11 @@ import org.apache.commons.lang3.StringUtils; |
|
|
|
@AllArgsConstructor |
|
|
|
@XStreamAlias("xml") |
|
|
|
public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
private static final long serialVersionUID = 4611350167813931828L; |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:设备号 |
|
|
|
* 字段名:设备号. |
|
|
|
* 变量名:device_info |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(32) |
|
|
@@ -39,7 +41,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:商品描述 |
|
|
|
* 字段名:商品描述. |
|
|
|
* 变量名:body |
|
|
|
* 是否必填:是 |
|
|
|
* 类型:String(128) |
|
|
@@ -53,7 +55,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:商品详情 |
|
|
|
* 字段名:商品详情. |
|
|
|
* 变量名:detail |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(6000) |
|
|
@@ -94,7 +96,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:附加数据 |
|
|
|
* 字段名:附加数据. |
|
|
|
* 变量名:attach |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(127) |
|
|
@@ -107,7 +109,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:商户订单号 |
|
|
|
* 字段名:商户订单号. |
|
|
|
* 变量名:out_trade_no |
|
|
|
* 是否必填:是 |
|
|
|
* 类型:String(32) |
|
|
@@ -121,7 +123,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:货币类型 |
|
|
|
* 字段名:货币类型. |
|
|
|
* 变量名:fee_type |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(16) |
|
|
@@ -134,7 +136,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:总金额 |
|
|
|
* 字段名:总金额. |
|
|
|
* 变量名:total_fee |
|
|
|
* 是否必填:是 |
|
|
|
* 类型:Int |
|
|
@@ -148,7 +150,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:终端IP |
|
|
|
* 字段名:终端IP. |
|
|
|
* 变量名:spbill_create_ip |
|
|
|
* 是否必填:是 |
|
|
|
* 类型:String(16) |
|
|
@@ -162,7 +164,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:交易起始时间 |
|
|
|
* 字段名:交易起始时间. |
|
|
|
* 变量名:time_start |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(14) |
|
|
@@ -175,7 +177,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:交易结束时间 |
|
|
|
* 字段名:交易结束时间. |
|
|
|
* 变量名:time_expire |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(14) |
|
|
@@ -189,7 +191,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:商品标记 |
|
|
|
* 字段名:商品标记. |
|
|
|
* 变量名:goods_tag |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(32) |
|
|
@@ -202,7 +204,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:通知地址 |
|
|
|
* 字段名:通知地址. |
|
|
|
* 变量名:notify_url |
|
|
|
* 是否必填:是 |
|
|
|
* 类型:String(256) |
|
|
@@ -216,7 +218,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:交易类型 |
|
|
|
* 字段名:交易类型. |
|
|
|
* 变量名:trade_type |
|
|
|
* 是否必填:是 |
|
|
|
* 类型:String(16) |
|
|
@@ -231,7 +233,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:商品Id |
|
|
|
* 字段名:商品Id. |
|
|
|
* 变量名:product_id |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(32) |
|
|
@@ -244,7 +246,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:指定支付方式 |
|
|
|
* 字段名:指定支付方式. |
|
|
|
* 变量名:limit_pay |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(32) |
|
|
@@ -257,7 +259,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:用户标识 |
|
|
|
* 字段名:用户标识. |
|
|
|
* 变量名:openid |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(128) |
|
|
@@ -272,7 +274,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:用户子标识 |
|
|
|
* 字段名:用户子标识. |
|
|
|
* 变量名:sub_openid |
|
|
|
* 是否必填:否 |
|
|
|
* 类型:String(128) |
|
|
@@ -287,7 +289,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:场景信息 |
|
|
|
* 字段名:场景信息. |
|
|
|
* 变量名:scene_info |
|
|
|
* 是否必填:否,对H5支付来说是必填 |
|
|
|
* 类型:String(256) |
|
|
@@ -306,7 +308,7 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
private String sceneInfo; |
|
|
|
/** |
|
|
|
* <pre> |
|
|
|
* 字段名:浏览器指纹 |
|
|
|
* 字段名:浏览器指纹. |
|
|
|
* 变量名:fingerprint |
|
|
|
* 是否必填:否 |
|
|
|
* 详细参考 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_7&index=6 |
|
|
@@ -316,14 +318,14 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
private String fingerprint; |
|
|
|
|
|
|
|
/** |
|
|
|
* 如果配置中已经设置,可以不设置值 |
|
|
|
* 如果配置中已经设置,可以不设置值. |
|
|
|
*/ |
|
|
|
public void setNotifyURL(String notifyURL) { |
|
|
|
this.notifyURL = notifyURL; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 如果配置中已经设置,可以不设置值 |
|
|
|
* 如果配置中已经设置,可以不设置值. |
|
|
|
* |
|
|
|
* @param tradeType 交易类型 |
|
|
|
*/ |
|
|
@@ -333,16 +335,6 @@ public class WxPayUnifiedOrderRequest extends BaseWxPayRequest { |
|
|
|
|
|
|
|
@Override |
|
|
|
protected void checkConstraints() throws WxPayException { |
|
|
|
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()) && StringUtils.isBlank(this.getProductId())) { |
|
|
|
throw new WxPayException("当trade_type是'NATIVE'时,需指定非空的product_id值"); |
|
|
|
} |
|
|
|