package com.dora.dto;

import lombok.Data;
import jakarta.validation.constraints.DecimalMin;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import java.math.BigDecimal;

/**
 * 微信支付请求DTO
 */
@Data
public class WxPayRequestDto {
    
    /**
     * 下单金额，单位元（保留2位小数）
     */
    @NotNull(message = "支付金额不能为空")
    @DecimalMin(value = "0.01", message = "支付金额必须大于0")
    private BigDecimal amounts;
    
    /**
     * 订单号
     */
    @NotBlank(message = "订单号不能为空")
    private String orderNo;
    
    /**
     * 商品描述
     */
    @NotBlank(message = "商品描述不能为空")
    private String description;
    
    /**
     * 交易类型（JSAPI: 小程序支付，NATIVE：二维码，APP: app支付，MWEB: H5支付，MICROPAY：付款码支付）
     */
    private String tradeType;
    
    /**
     * openid（当tradeType=JSAPI时，必填）
     */
    private String openid;
    
    /**
     * 支付授权码（当tradeType=MICROPAY时，必填）
     */
    private String authCode;
    
    /**
     * 回调地址（优先读取这里的数据，其次读取application.yml里面的数据）
     */
    private String notifyUrl;
    
    /**
     * 子商户号（条件：服务商模式，必填）
     */
    private String subMchId;
    
    /**
     * 子商户公众账号ID（条件：服务商模式+小程序支付，必填）
     */
    private String subAppid;
    
    /**
     * 子商户openid（条件：服务商模式+小程序支付，必填）
     */
    private String subOpenid;
} 