package com.yn.bftl.thirdparty.modules.unionpay.service;

import com.yn.bftl.common.modules.order.enums.PosPaymentType;
import com.yn.bftl.thirdparty.modules.unionpay.dto.PosAppRechargeDTO;
import com.yn.bftl.thirdparty.modules.unionpay.dto.PosPayResultDTO;
import com.yn.bftl.thirdparty.modules.unionpay.dto.PosRefundResultDTO;
import com.yn.bftl.thirdparty.modules.unionpay.vo.PosPayVO;
import com.yn.bftl.thirdparty.modules.unionpay.vo.PosRefundSalesVO;
import com.yn.bftl.thirdparty.modules.unionpay.vo.PosRefundVO;

/**
 * @Author：Vance
 * @Description：POS支付
 * @Date：2022/9/13 09:19
 */
public interface PosPayService {


    /**
     * 银联POS-下单
     *
     * @param orderId
     * @param hardwareSn pos机硬件序列号
     * @param payType
     * @return
     */
    PosPayVO appOrder(Long orderId, String hardwareSn, PosPaymentType payType);

    /**
     * 银联POS-退款（撤销-只能当天）
     *
     * @param orderId
     * @return
     */
    PosRefundVO refund(Long orderId);

    /**
     * 银联POS-退款（退货-隔日退货）
     *
     * @param orderId
     * @return
     */
    PosRefundSalesVO refundSales(Long orderId);

    /**
     * 银联POS-支付回调
     *
     * @param dto
     * @return
     */
    Boolean payCallBack(PosPayResultDTO dto);

    /**
     * 银联POS-退款、退货回调
     *
     * @param dto
     * @return
     */
    Boolean refundCallBack(PosRefundResultDTO dto);

    /**
     * 银联POS-APP充值
     * @param posAppRechargeDTO POS充值
     * @return
     * @author huabiao
     * @create 2023/3/6  18:45
     */
    PosPayVO appRecharge(PosAppRechargeDTO posAppRechargeDTO);

    /**
     * 银联POS-充值支付回调
     *
     * @param dto
     * @return
     */
    Boolean rechargeCallBack(PosPayResultDTO dto);

    /**
     * 银联POS-充值退款（撤销-只能当天）
     *
     * @param topUpOrderId
     * @return
     */
    PosRefundVO rechargeRefund(Long topUpOrderId);

    /**
     * 银联POS-充值退款回调
     *
     * @param dto
     * @return
     */
    Boolean rechargeRefundCallBack(PosRefundResultDTO dto);
}
