package com.jeesharp.business.modules.pay.api;

import com.jeesharp.business.modules.pay.dto.BasicPayOrderData;
import com.jeesharp.business.modules.pay.dto.PayWechatPrepayRouteSnapshotDTO;
import com.jeesharp.business.modules.pay.vo.PayWechatPublicConfigVO;
import com.jeesharp.business.modules.pay.vo.WechatJsapiPrepayVO;

import java.util.Map;

/**
 * 支付渠道门面：杏花村统一走财务主单 + 本模块仅提供微信等渠道能力。
 * <p>
 * C 端微信预支付请使用 {@link #wechatJsapiPrepay}（须 {@link BasicPayOrderData#isTravelFinanceOrder()}，
 * 主单由 finance 写入 {@code biz_finance_pay_order}）。
 * </p>
 *
 * @author jeesharp
 * @since 2026-05-25
 */
public interface PayCenterApi {

    /**
     * 预解析微信 JSAPI 路由（写财务支付单前调用，不调微信）。
     */
    PayWechatPrepayRouteSnapshotDTO previewWechatJsapiRoute(BasicPayOrderData payOrderData);

    /**
     * 微信 JSAPI V3 统一下单（仅渠道，不创建 Legacy {@code sys_pay_order}）。
     */
    WechatJsapiPrepayVO wechatJsapiPrepay(BasicPayOrderData payOrderData);

    /**
     * 当前生效的微信支付公开配置（回调基地址等，不含密钥）；平台默认。
     */
    PayWechatPublicConfigVO getWechatPublicConfig();

    /**
     * 按租户解析微信公开配置（租户优先，无则平台兜底）。
     */
    PayWechatPublicConfigVO getWechatPublicConfig(String tenantId);

    /**
     * 解析微信支付 V3 回调报文（验签与解密）。
     */
    Map<String, Object> wechatParsePayNotify(String rawBody, Map<String, String> headers);
}
