package com.ruoyi.ai.domain;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.Data;

/**
 * VM统一下单响应
 *
 * @author system
 * @date 2025-01-XX
 */
@Data
@JsonIgnoreProperties(ignoreUnknown = true)
public class VmUnifiedOrderRes {

    /**
     * 响应码，0表示成功
     */
    private Integer code;

    /**
     * 响应消息
     */
    private String msg;

    /**
     * 响应数据
     */
    private VmUnifiedOrderData data;

    /**
     * 响应签名（API 返回）
     */
    private String sign;

    @Data
    public static class VmUnifiedOrderData {
        /**
         * 支付订单号（必填）
         */
        private String payOrderId;

        /**
         * 商户订单号（必填）
         */
        private String mchOrderNo;

        /**
         * 订单状态（必填）
         * 0-订单生成, 1-支付中, 2-支付成功, 3-支付失败, 4-已撤销, 5-已退款, 6-订单关闭
         */
        private Integer orderState;

        /**
         * 支付数据类型（必填）
         * payUrl-跳转链接的方式
         * form-表单方式
         * wxapp-微信支付参数(微信公众号,小程序,app支付时)
         * aliapp-支付宝app支付参数
         * ysfapp-云闪付app支付参数
         * codeUrl-二维码地址
         * codeImgUrl-二维码图片地址
         * none-空支付参数
         */
        private String payDataType;

        /**
         * 支付数据（可选）
         * 发起支付用到的支付参数，根据payDataType不同而不同
         * 如果payDataType为payUrl，则此字段为跳转链接
         */
        private String payData;

        /**
         * 渠道错误码（可选）
         */
        private String errCode;

        /**
         * 渠道错误描述（可选）
         */
        private String errMsg;

        // 以下字段为兼容旧版本保留
        /**
         * 支付链接（兼容字段，优先使用payData）
         */
        private String payUrl;

        /**
         * 订单号（兼容字段）
         */
        private String orderId;

        /**
         * 支付参数（兼容字段）
         */
        private String payParams;
    }
}
