package com.njzscloud.supervisory.order.pojo.dto;

import lombok.Data;

/**
 * 微信支付退款回调通知DTO
 */
@Data
public class WechatPayRefundCallbackDto {
    
    /**
     * 通知ID
     */
    private String id;
    
    /**
     * 通知创建时间
     */
    private String createTime;
    
    /**
     * 通知类型
     */
    private String eventType;
    
    /**
     * 通知数据类型
     */
    private String resourceType;
    
    /**
     * 通知数据
     */
    private ResourceData resource;
    
    /**
     * 通知数据
     */
    @Data
    public static class ResourceData {
        /**
         * 加密算法类型
         */
        private String algorithm;
        
        /**
         * 数据密文
         */
        private String ciphertext;
        
        /**
         * 附加数据
         */
        private String associatedData;
        
        /**
         * 原始回调类型
         */
        private String originalType;
        
        /**
         * 随机字符串
         */
        private String nonce;
    }
    
    /**
     * 解密后的退款信息
     */
    @Data
    public static class RefundInfo {
        /**
         * 服务商APPID
         */
        private String spAppid;
        
        /**
         * 服务商商户号
         */
        private String spMchid;
        
        /**
         * 子商户APPID
         */
        private String subAppid;
        
        /**
         * 子商户号
         */
        private String subMchid;
        
        /**
         * 商户订单号
         */
        private String outTradeNo;
        
        /**
         * 微信支付订单号
         */
        private String transactionId;
        
        /**
         * 商户退款单号
         */
        private String outRefundNo;
        
        /**
         * 微信支付退款单号
         */
        private String refundId;
        
        /**
         * 退款状态
         */
        private String refundStatus;
        
        /**
         * 退款成功时间
         */
        private String successTime;
        
        /**
         * 退款入账账户
         */
        private String userReceivedAccount;
        
        /**
         * 退款金额信息
         */
        private RefundAmount amount;
        
        /**
         * 优惠退款信息
         */
        private PromotionDetail promotionDetail;
    }
    
    @Data
    public static class RefundAmount {
        /**
         * 订单金额（分）
         */
        private Long total;
        
        /**
         * 退款金额（分）
         */
        private Long refund;
        
        /**
         * 用户支付金额（分）
         */
        private Long payerTotal;
        
        /**
         * 用户退款金额（分）
         */
        private Long payerRefund;
    }
    
    @Data
    public static class PromotionDetail {
        /**
         * 券ID
         */
        private String couponId;
        
        /**
         * 优惠名称
         */
        private String name;
        
        /**
         * 优惠范围
         */
        private String scope;
        
        /**
         * 优惠类型
         */
        private String type;
        
        /**
         * 优惠券面额（分）
         */
        private Long amount;
        
        /**
         * 活动ID
         */
        private String stockId;
        
        /**
         * 微信出资（分）
         */
        private Long wechatpayContribute;
        
        /**
         * 商户出资（分）
         */
        private Long merchantContribute;
        
        /**
         * 其他出资（分）
         */
        private Long otherContribute;
        
        /**
         * 优惠币种
         */
        private String currency;
    }
}
