package com.seer.teach.pay.app.pay.service;

import com.seer.teach.pay.app.pay.controller.req.OrderPayReq;
import com.seer.teach.pay.app.pay.controller.resp.AppPayOrderResp;
import com.seer.teach.pay.entity.PayOrderEntity;

import java.util.Map;

public interface IAppPayOrderService {

    /**
     * 支付订单
     * @param orderPayReq 订单支付请求参数
     * @return 支付的结果
     */
    AppPayOrderResp payOrder(OrderPayReq orderPayReq);
    
    /**
     * 统一处理支付回调
     * @param channelCode 渠道编码
     * @param headers 回调请求头
     * @param params 回调参数
     * @param body 回调请求体
     * @return 是否处理成功
     */
    boolean payCallback(String channelCode, Map<String, String> headers, Map<String, String> params, String body);
    
    /**
     * 查询支付状态
     * @param orderSn 订单号
     * @return 支付订单信息
     */
    PayOrderEntity queryPayStatus(String orderSn);

    /**
     * 关闭支付订单
     * @param orderSn
     * @return
     */
    Boolean closePayOrder(String orderSn);
}