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

import com.yn.bftl.common.modules.order.entity.Order;
import com.yn.bftl.thirdparty.modules.unionpay.dto.UnionpaySubOrderItemDTO;
import com.yn.bftl.thirdparty.modules.unionpay.enums.UnionpayAppOrderType;
import com.yn.bftl.thirdparty.modules.unionpay.vo.base.UnionpayResponseVO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 全民付服务
 * <p>银联公司全民付产品，所用接口为综合支付</p>
 *
 * @author huabiao
 * @create 2022/9/5  17:05
 **/
public interface UmsPayService {

    /***
     * 全民付-下单
     *
     * @param order:订单
     * @param unionpaySn:银联订单号
     * @param unionpayAppOrderType:银联APP支付类型
     * @return 支付请求报文
     * @author huabiao
     * @create 2022/9/5  17:22
     */
    Map<String, Object> appPreOrder(Order order, String unionpaySn, UnionpayAppOrderType unionpayAppOrderType);

    /**
     * 全民付-退款
     *
     * @param unionpaySn   银联订单号
     * @param refundAmount 退款金额
     * @param companyId    所属企业ID
     * @return 银联退款单号
     * @author huabiao
     * @create 2022/9/5  19:09
     */
    String refund(String unionpaySn, BigDecimal refundAmount, Long companyId);

    /**
     * 交易查询-支付、退款
     *
     * @param route
     * @param merOrderId
     * @param companyId 企业ID
     * @return
     */
    UnionpayResponseVO tradeQuery(String route, String merOrderId,Long companyId);

    /**
     * 订单关闭
     *
     * @param route
     * @param merOrderId
     * @return
     */
    UnionpayResponseVO tradeClose(String route, String merOrderId, Long companyId);
}
