package com.wzj.soopin.transaction.domain.bo;

import com.wzj.soopin.transaction.enums.easypay.PayType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 支付请求参数
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class PaymentBO {

    /**
     * 订单Id
     */
    @NotNull(message = "订单Id不能为空")
    private Long orderId;

    /**
     * 支付方式
     */
    @NotNull(message = "支付方式不能为空")
    private PayType payType;

    /**
     * 支付宝业务参数:买家的支付宝唯一用户号
     */
    private String buyerId;

    /**
     * 微信登录授权码
     */
    private String wxLoginCode;

    // ============银联业务参数 start ==============
    /**
     * 交易类型
     */
    private String transType;
    /**
     * 授权码
     */
    private String userAuthCode;
    /**
     * 用户标识，对应旧系统的payerId
     */
    private String userId;
    /**
     * 地区信息，7位，1-3为国家代码，境内业务统一为“156”，4-7位为地区码，采用《银联卡跨行业务地区代码标准》。境外商户受理的二维码业务，地区代码用全0 填充。 点击
     * [地区码](https://www.yuque.com/pandans/ws1g9s/loa46fu6isbvoksz#n3L1v)
     * <p>
     * 例：上海市——上海市——浦东新区 则传 1562904
     */
    private String areaInfo;
    /**
     * 支付有效时间，允许对一个订单进行支付的最长相对时间，单位为秒。
     */
    private String paymentValidTime;
    /**
     * 二维码，payType=UnionPayJsapi、UnionPayJsMini时必填。
     * 二维码表示的数据，内容为特定格式的URL或TLV。其中境内二维码采用URL格式，境外二维码采用TLV格式。见附录F21.
     */
    private String qrCode;
    /**
     * 二维码类型，payType=UnionPayJsapi、UnionPayJsMini时必填。
     */
    private String qrCodeType;
    /**
     * 支付方式，payType=UnionPayJsMini时必填
     */
    private String payChannel;
    /**
     * 微信分配的公众账号ID，payType=UnionPayJsMini时必填，上送调起云闪付微信小程序的微信APPID
     */
    private String appid;
    /**
     * 银联支付标识，payType=UnionPayJsMini时必填，固定上送MicroMessenger
     */
    private String appUpIdentifier;
 // ============银联业务参数 end ==============




}
