package cn.novalon.gym.manage.payment.service;

import cn.novalon.gym.manage.payment.dto.CreatePaymentRequest;
import cn.novalon.gym.manage.payment.dto.PaymentResponse;

/**
 * 支付服务接口
 */
public interface PaymentService {

    /**
     * 创建支付订单
     *
     * @param request 创建支付请求
     * @return 支付响应
     */
    PaymentResponse createPayment(CreatePaymentRequest request);

    /**
     * 查询支付状态
     *
     * @param orderId 订单ID
     * @return 支付响应
     */
    PaymentResponse getPaymentStatus(String orderId);

    /**
     * 支付宝App支付
     *
     * @param request 创建支付请求
     * @return 支付响应
     */
    PaymentResponse alipayAppPay(CreatePaymentRequest request);

    /**
     * 支付宝扫码支付（二维码支付）
     *
     * @param request 创建支付请求
     * @return 支付响应（包含二维码链接）
     */
    PaymentResponse alipayQrCodePay(CreatePaymentRequest request);

    /**
     * 处理支付宝异步通知
     *
     * @param params 通知参数
     * @return 处理结果
     */
    String handleAlipayNotify(java.util.Map<String, String> params);

    /**
     * 申请退款
     *
     * @param orderId   订单ID
     * @param refundAmt 退款金额(分)
     * @return 退款结果
     */
    boolean refund(String orderId, String refundAmt);
}
