package com.openhis.web.externalintegration.appservice;

import com.core.common.core.domain.R;

/**
 * BPC商户接口Service接口
 *
 * @author Thanking
 * @date 2025-10-16
 */
public interface IBankPosCloudAppService {

    /**
     * 被扫消费
     *
     * @param txnAmt 交易金额
     * @param merTradeNo 商户系统订单号
     * @param scanCode 二维码信息
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> processConsumerScan(String txnAmt, String merTradeNo, String scanCode, String posNo);

    /**
     * 主扫下单
     *
     * @param txnAmt 交易金额
     * @param merTradeNo 商户系统订单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> createMerchantScanOrder(String txnAmt, String merTradeNo, String posNo);

    /**
     * 消费订单查询
     *
     * @param merTradeNo 商户系统订单号
     * @param tradeNo 原交易订单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> queryPaymentOrder(String merTradeNo, String tradeNo, String posNo);

    /**
     * 关闭订单
     *
     * @param merTradeNo 商户系统订单号
     * @param tradeNo 原交易订单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> closeOrder(String merTradeNo, String tradeNo, String posNo);

    /**
     * 申请退货
     *
     * @param txnAmt 交易金额
     * @param vfTradeNo 退款退订定金单号
     * @param merTradeNo 商户系统订单号
     * @param tradeNo 原交易订单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> applyForRefund(String txnAmt, String vfTradeNo, String merTradeNo, String tradeNo, String posNo);

    /**
     * 查询退货订单
     *
     * @param vfTradeNo 退款退订定金单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> queryRefundOrder(String vfTradeNo, String posNo);

    /**
     * 消费撤销
     *
     * @param txnAmt 交易金额
     * @param vfTradeNo 退款退订定金单号
     * @param merTradeNo 商户系统订单号
     * @param tradeNo 原交易订单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> reversePayment(String txnAmt, String vfTradeNo, String merTradeNo, String tradeNo, String posNo);

    /**
     * 查询撤销订单
     *
     * @param merTradeNo 商户系统订单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> queryReversalOrder(String merTradeNo, String posNo);

    /**
     * 银行卡退货功能
     *
     * @param txnAmt 交易金额
     * @param pan 银行卡号
     * @param vfTradeNo 退款退订定金单号
     * @param posNo 设备终端编号
     * @return 结果
     */
    R<?> processCardRefund(String txnAmt, String pan, String vfTradeNo, String posNo);

}
