package com.hzs.third.pay.service;

import com.hzs.common.core.enums.EPayChannel;
import com.hzs.common.domain.third.pay.TOnlinePayment;
import com.hzs.common.domain.third.pay.TOnlineRefund;

import java.math.BigDecimal;
import java.util.Date;

/**
 * @Description: 基础退款服务
 * @Author: jiang chao
 * @Time: 2023/8/16 17:00
 * @Classname: IRefundService
 * @PackageName: com.hzs.third.pay.service
 */
public interface IRefundService {

    /**
     * 新汇付退款处理
     *
     * @param tOnlinePayment 在线支付信息
     * @return
     */
    String huifuRefundHandle(TOnlinePayment tOnlinePayment);

    /**
     * 新汇付退款查询
     *
     * @param tOnlineRefund 退款信息
     * @return
     */
    String queryHuifuRefundHandle(TOnlineRefund tOnlineRefund);


    /**
     * 退款回调成功处理
     *
     * @param ePayChannel  退款渠道
     * @param refundCode   退款编号
     * @param refundNumber 退款流水号
     * @param finishTime   退款完成时间
     * @param finishMoney  退款完成金额
     * @return
     */
    boolean notifyHandle(EPayChannel ePayChannel, String refundCode, String refundNumber, Date finishTime, BigDecimal finishMoney);

    /**
     * 退款回调失败处理
     *
     * @param ePayChannel  退款渠道
     * @param refundCode   退款编号
     * @param refundNumber 退款流水号
     * @param errorMsg     退款失败原因
     * @return
     */
    boolean notifyErrorHandle(EPayChannel ePayChannel, String refundCode, String refundNumber, String errorMsg);

}
