package shop.alien.lawyer.payment;


import shop.alien.entity.result.R;

import java.util.Map;

/**
 * 支付策略接口
 *
 * @author lyx
 * @date 2025/11/20
 */
public interface PaymentStrategy {

    /** 生成预支付订单
     *
     * @param price 订单金额
     * @param subject 订单标题
     * @return 预支付订单信息
     * @throws Exception 生成异常
     */
    R createPrePayOrder(String price, String subject) throws Exception;


    /**
     * 处理支付通知
     *
     * @param notifyData 支付通知数据
     * @return 处理结果
     * @throws Exception 处理异常
     */
    R handleNotify(String notifyData) throws Exception;

     /**
     * 查询订单状态
     *
     * @param transactionId 交易订单号
     * @return 订单状态信息
     * @throws Exception 查询异常
     */
    R searchOrderByOutTradeNoPath(String transactionId,Integer id,String orderStr) throws Exception;

     /**
     * 处理退款请求
     *
     * @param params 退款请求参数
     * @return 处理结果
     * @throws Exception 处理异常
     */
     String handleRefund(Map<String,String> params) throws Exception;



    /**
     * 获取策略类型字符串
     *
     * @return 策略类型字符串
     */
    String getType();
}
