package com.dobbinsoft.fw.pay.model.request; import com.dobbinsoft.fw.pay.anntation.MatrixIgnoreCopy; import com.dobbinsoft.fw.pay.anntation.MatrixNotNull; import com.dobbinsoft.fw.pay.enums.PayChannelType; import lombok.*; import java.util.List; /** *
* 统一下单请求参数对象. * 参考文档:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 ** */ @Data @EqualsAndHashCode(callSuper = true) @Builder(builderMethodName = "newBuilder") @NoArgsConstructor @AllArgsConstructor public class MatrixPayUnifiedOrderRequest extends MatrixBasePayRequest { private static final long serialVersionUID = -3173551488619526785L; /** *
* 字段名:接口版本号. * 变量名:version * 是否必填:单品优惠必填 * 类型:String(32) * 示例值:1.0 * 描述:单品优惠新增字段,接口版本号,区分原接口,默认填写1.0。 * 入参新增version后,则支付通知接口也将返回单品优惠信息字段promotion_detail,请确保支付通知的签名验证能通过。 * 更多信息,详见文档:https://pay.weixin.qq.com/wiki/doc/api/danpin.php?chapter=9_102&index=2 **/ private String version; /** *
* 字段名:设备号. * 变量名:device_info * 是否必填:否 * 类型:String(32) * 示例值:013467007045764 * 描述:终端设备号(门店号或收银设备Id),注意:PC网页或公众号内支付请传"WEB" **/ private String deviceInfo; /** *
* 字段名:商品描述. * 变量名:body * 是否必填:是 * 类型:String(128) * 示例值: 腾讯充值中心-QQ会员充值 * 描述:商品简单描述,该字段须严格按照规范传递,具体请见参数规定 **/ @MatrixNotNull(msg = "商品描述不可为空 [body]") private String body; /** *
* 字段名:商品详情. * 变量名:detail * 是否必填:否 * 类型:String(6000) * 描述:商品详细列表,使用Json格式,传输签名前请务必使用CDATA标签将JSON文本串保护起来。 **/ @MatrixIgnoreCopy private List
* 字段名:附加数据. * 变量名:attach * 是否必填:否 * 类型:String(127) * 示例值: 深圳分店 * 描述: 附加数据,在查询API和支付通知中原样返回,该字段主要用于商户携带订单的自定义数据 **/ private String attach; /** *
* 字段名:商户订单号. * 变量名:out_trade_no * 是否必填:是 * 类型:String(32) * 示例值:20150806125346 * 描述:商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号 **/ private String outTradeNo; /** *
* 字段名:货币类型. * 变量名:fee_type * 是否必填:否 * 类型:String(16) * 示例值:CNY * 描述: 符合ISO 4217标准的三位字母代码,默认人民币:CNY,其他值列表详见货币类型 **/ private String feeType; /** *
* 字段名:总金额. * 变量名:total_fee * 是否必填:是 * 类型:Int * 示例值: 888 * 描述:订单总金额,单位为分,详见支付金额 **/ @MatrixNotNull(msg = "订单总金额不能为空 [totalFee]") private Integer totalFee; /** *
* 字段名:终端IP. * 变量名:spbill_create_ip * 是否必填:是 * 类型:String(16) * 示例值:123.12.12.123 * 描述:APP和网页支付提交用户端ip,Native支付填调用微信支付API的机器IP。 **/ @MatrixNotNull(channels = {PayChannelType.WX}, msg = "{channel}客户端IP不能为空 [spbillCreateIp]") private String spbillCreateIp; /** *
* 字段名:交易起始时间. * 变量名:time_start * 是否必填:否 * 类型:String(14) * 示例值:20091225091010 * 描述:订单生成时间,格式为yyyyMMddHHmmss,如2009年12月25日9点10分10秒表示为20091225091010。其他详见时间规则 **/ private String timeStart; /** *
* 字段名:交易结束时间. * 变量名:time_expire * 是否必填:否 * 类型:String(14) * 示例值:20091227091010 * 描述:订单失效时间,格式为yyyyMMddHHmmss,如2009年12月27日9点10分10秒表示为20091227091010。其他详见时间规则 * 注意:最短失效时间间隔必须大于5分钟 **/ private String timeExpire; /** *
* 字段名:商品标记. * 变量名:goods_tag * 是否必填:否 * 类型:String(32) * 示例值:WXG * 描述:商品标记,代金券或立减优惠功能的参数,说明详见代金券或立减优惠 **/ private String goodsTag; /** *
* 字段名:通知地址. * 变量名:notify_url * 是否必填:是 * 类型:String(256) * 示例值:http://www.weixin.qq.com/wxpay/pay.php * 描述:接收微信支付异步通知回调地址,通知url必须为直接可访问的url,不能携带参数。 **/ private String notifyUrl; /** *
* 字段名:交易类型. * 变量名:trade_type * 是否必填:是 * 类型:String(16) * 示例值: JSAPI * 描述: 取值如下:JSAPI,NATIVE,APP,详细说明见参数规定: * JSAPI--公众号支付、NATIVE--原生扫码支付、APP--app支付,统一下单接口trade_type的传参可参考这里 **/ // private String tradeType; /** *
* 字段名:商品Id. * 变量名:product_id * 是否必填:否 * 类型:String(32) * 示例值:12235413214070356458058 * 描述:trade_type=NATIVE,此参数必传。此id为二维码中包含的商品Id,商户自行定义。 **/ private String productId; /** *
* 字段名:指定支付方式. * 变量名:limit_pay * 是否必填:否 * 类型:String(32) * 示例值:no_credit * 描述:no_credit--指定不能使用信用卡支付 **/ private String limitPay; /** *
* 字段名:用户标识. * 变量名:openid * 是否必填:否 * 类型:String(128) * 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o * 描述:trade_type=JSAPI,此参数必传,用户在商户appid下的唯一标识。 * openid如何获取,可参考【获取openid】。 * 企业号请使用【企业号OAuth2.0接口】获取企业号内成员userid,再调用【企业号userid转openid接口】进行转换 **/ private String openid; /** *
* 字段名:用户子标识. * 变量名:sub_openid * 是否必填:否 * 类型:String(128) * 示例值:oUpF8uMuAJO_M2pxb1Q9zNjWeS6o * 描述:trade_type=JSAPI,此参数必传,用户在子商户appid下的唯一标识。 * openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid。 * 下单前需要调用【网页授权获取用户信息】接口获取到用户的Openid。 **/ private String subOpenid; /** *
* 字段名:电子发票入口开放标识. * 变量名: receipt * 是否必填:否 * 类型:String(8) * 示例值:Y * 描述: Y,传入Y时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效 **/ private String receipt; /** *
* 字段名:场景信息. * 变量名:scene_info * 是否必填:否,对H5支付来说是必填 * 类型:String(256) * 示例值:{ * "store_id": "SZT10000", * "store_name":"腾讯大厦腾大餐厅" * } * 描述:该字段用于统一下单时上报场景信息,目前支持上报实际门店信息。 * { * "store_id": "", //门店唯一标识,选填,String(32) * "store_name":"”//门店名称,选填,String(64) * } **/ private String sceneInfo; /** *
* 字段名:浏览器指纹. * 变量名:fingerprint * 是否必填:否 * 详细参考 https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_7&index=6 **/ private String fingerprint; /** *
* 字段名:重定向地址 * 变量名:returnUrl * 描述:Web支付成功后, **/ private String returnUrl; /** * 如果配置中已经设置,可以不设置值. * * @param notifyUrl 支付回调通知地址 */ public void setNotifyUrl(String notifyUrl) { this.notifyUrl = notifyUrl; } }