top.rwocj.wx.pay.dto.WxCreateOrderRequest Maven / Gradle / Ivy
package top.rwocj.wx.pay.dto;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import top.rwocj.wx.pay.enums.OrderType;
import java.util.List;
/**
* app/native/h5/jsapi下单请求体
* ...
*/
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
public class WxCreateOrderRequest {
/**
* 下单类型
*
* @required
*/
@JsonIgnore
private OrderType orderType;
/**
* 交易结束时间
*
* @mock 2018-06-08T10:34:56+08:00
*/
@JsonProperty("time_expire")
private String timeExpire;
/**
* 订单金额
*
* @required
*/
private Amount amount;
/**
* 直连商户号,如为null,会自动配置配置文件中设置的
*
* @mock 1230000109
* @required
*/
private String mchid;
/**
* 商品描述
*
* @mock Image形象店-深圳腾大-QQ公仔
* @required
*/
private String description;
/**
* 通知地址,如为null,会自动配置配置文件中设置的
*
* @mock https://www.weixin.qq.com/wxpay/pay.php
* @required
*/
@JsonProperty("notify_url")
private String notifyUrl;
/**
* 支付者信息
*/
private Payer payer;
/**
* 商户订单号
* 商户系统内部订单号,只能是数字、大小写字母_-*且在同一个商户号下唯一,详见【商户订单号】。
* 特殊规则:最小字符长度为6
*
* @mock 1217752501201407033233368018
* @required
*/
@JsonProperty("out_trade_no")
private String outTradeNo;
/**
* 订单优惠标记
*
* @mock WXG
*/
@JsonProperty("goods_tag")
private String goodsTag;
/**
* 传入true时,支付成功消息和支付详情页将出现开票入口。需要在微信支付商户平台或微信公众平台开通电子发票功能,传此字段才可生效。
*/
@JsonProperty("support_fapiao")
private Boolean supportFapiao;
/**
* 公众号ID,如为null,会自动配置配置文件中设置的
*
* @required
*/
private String appid;
/**
* 附加数据
* 附加数据,在查询API和支付通知中原样返回,可作为自定义参数使用
*/
private String attach;
/**
* 优惠功能详情
*/
private Detail detail;
/**
* 场景信息
*/
@JsonProperty("scene_info")
private SceneInfo sceneInfo;
public WxCreateOrderRequest(String description, String outTradeNo, OrderType orderType, Amount amount, Payer payer) {
this.description = description;
this.outTradeNo = outTradeNo;
this.orderType = orderType;
this.amount = amount;
this.payer = payer;
}
public static WxCreateOrderRequest jsapiOrder(String description, String outTradeNo, Amount amount, Payer payer) {
return new WxCreateOrderRequest(description, outTradeNo, OrderType.jsapi, amount, payer);
}
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@NoArgsConstructor
public static class Amount {
/**
* 总金额,订单总金额,单位为分。
*
* @required
*/
private int total;
/**
* 货币类型
* CNY:人民币,境内商户号仅支持人民币
*
* @mock CNY
*/
private String currency;
public Amount(int total) {
this.total = total;
}
}
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public static class Detail {
/**
* 商品小票ID
*/
@JsonProperty("invoice_id")
private String invoiceId;
/**
* 订单原价
* 1、商户侧一张小票订单可能被分多次支付,订单原价用于记录整张小票的交易金额。
* 2、当订单原价与支付金额不相等,则不享受优惠。
* 3、该字段主要用于防止同一张小票分多次支付,以享受多次优惠的情况,正常支付订单不必上传此参数
*
* @mock 600
* @required
*/
@JsonProperty("cost_price")
private Integer costPrice;
/**
* 单品列表
*/
@JsonProperty("goods_detail")
private List goodsDetail;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class GoodsDetail {
/**
* 商品实际名称
*/
@JsonProperty("goods_name")
private String goodsName;
/**
* 微信侧商品编码
* 微信支付定义的统一商品编号(没有可不传)
*/
@JsonProperty("wechatpay_goods_id")
private String wechatpayGoodsId;
/**
* 商品数量
*/
private int quantity;
/**
* 商户侧商品编码
* 由半角的大小写字母、数字、中划线、下划线中的一种或几种组成。
*
* @required
*/
@JsonProperty("merchant_goods_id")
private String merchantGoodsId;
/**
* 商品单价
* 商品单价,单位为分
*
* @required
*/
@JsonProperty("unit_price")
private int unitPrice;
}
}
@JsonInclude(JsonInclude.Include.NON_NULL)
@Data
public static class SceneInfo {
/**
* 门店信息
*/
@JsonProperty("store_info")
private StoreInfo storeInfo;
/**
* 商户端设备号
* 商户端设备号(门店号或收银设备ID)。
*
* @mock 013467007045764
*/
@JsonProperty("device_id")
private String deviceId;
/**
* 用户终端IP
* 调用微信支付API的机器IP,支持IPv4和IPv4两种格式的IP地址。
*
* @mock 14.23.150.211
* @required
*/
@JsonProperty("payer_client_ip")
private String payerClientIp;
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
public static class StoreInfo {
/**
* 详细地址
*
* @required
*/
private String address;
/**
* 地区编码
* 地区编码,详细请见省市区编号对照表(https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/ecommerce/applyments/chapter4_1.shtml)
*
* @required
*/
@JsonProperty("area_code")
private String areaCode;
/**
* 门店名称
*
* @required
*/
private String name;
/**
* 门店编号
* 商户侧门店编号
*/
private String id;
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy