package org.springblade.yeePay.entity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Builder;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

@Data
@Builder
public class InitOrderDto {
	@NotBlank
	@ApiModelProperty(value = "商户订单号，保证订单唯一性", required = true)
	String orderId;

	@ApiModelProperty(value = "订单金额，单位： 元， 两位小数， 最低 0.01", required = true)
	@NotNull
	Double orderAmount;

	@ApiModelProperty("订单截止时间： 格式: yyyy-MM-dd HH:mm:ss 不传默认一天")
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
	String expiredTime;

	@NotBlank
	@ApiModelProperty(value = "支付成功服务器回调地址", required = true)
	String notifyUrl;

	@ApiModelProperty("页面回调地址。如使用易宝收银台需要上送前端页面回调地址")
	String redirectUrl;

	@ApiModelProperty("自定义对账备注;商户可以自定义自身业务需要使用的字段： 如对账时定义该订单应属的会计科目")
	String memo;

	@NotBlank
	@ApiModelProperty(value = "商品名称", required = true)
	String goodsName;

	@ApiModelProperty("分账订单标记，DELAY_SETTLE:需要分账；REAL_TIME:不需要分账，示例值：REAL_TIME")
	String fundProcessType;

	@NotBlank
	@ApiModelProperty(value = "支付方式类型: USER_SCAN:用户扫码 ;MINI_PROGRAM:小程序支付 ; WECHAT_OFFIACCOUNT:微信公众号 ;ALIPAY_LIFE:支付宝生活号 ;JS_PAY:JS支付 ;SDK_PAY:SDK支付 ;H5_PAY:H5支付", required = true)
	String payWay;

	@NotBlank
	@ApiModelProperty(value = "渠道类型 : WECHAT:微信 ; ALIPAY:支付宝 ;UNIONPAY:银联云闪付", required = true)
	String channel;

	@ApiModelProperty("场景: ONLINE:线上 ; OFFLINE:线下 ; BAOXIAN:保险 ; 渠道类型为银联时，不必传")
	String scene;

	@ApiModelProperty("支付渠道为微信时需要提供用户的openId")
	String userId;

	@NotBlank
	@ApiModelProperty(value = "用户的真实IP地址", required = true)
	String userIp;

	String channelSpecifiedInfo;

	String channelPromotionInfo;

	String uniqueOrderNo;

	String csUrl;

	@ApiModelProperty("支付渠道为微信时需要提供appID")
	String appId;
}
