package com.jeesharp.business.modules.pay.refund.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

/**
 * 微信退款请求 DTO，按 {@code wechatPayMode} 走直连或收付通 API。
 *
 * @author jeesharp
 * @since 2026-06-11
 */
@Data
@Schema(description = "微信退款请求")
public class PayRefundRequestDTO {

    @Schema(description = "平台租户ID（支付配置）")
    private String platformTenantId;

    /**
     * @see com.jeesharp.business.modules.pay.paywechatconfig.enums.WechatPayModeEnum
     */
    @Schema(description = "微信支付模式：DIRECT、PARTNER；默认 DIRECT")
    private String wechatPayMode;

    @Schema(description = "特约子商户号 sub_mchid（PARTNER 必填，DIRECT 可空）")
    private String subMchId;

    @Schema(description = "微信 transaction_id")
    private String transactionId;

    @Schema(description = "原支付商户单号 out_trade_no")
    private String outTradeNo;

    @Schema(description = "商户退款单号 out_refund_no")
    private String outRefundNo;

    @Schema(description = "退款原因")
    private String reason;

    @Schema(description = "本次退款金额（分）")
    private Long refundAmountFen;

    @Schema(description = "原订单金额（分）")
    private Long orderAmountFen;

    @Schema(description = "退款结果通知 URL")
    private String notifyUrl;
}
