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

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 支付流水跨模块 API：微信回调落库等；网关/垂直域仅依赖本接口，勿直接依赖 {@code PayRecordApplicationService}。
 *
 * @author jeesharp
 * @since 2026-06-13
 */
public interface PayRecordApi {

    /**
     * 微信支付 JSAPI/小程序回调成功后落库一条支付流水；以微信 {@code transaction_id} 为主键幂等。
     *
     * @param bizSceneCode        业务场景编码（{@link com.jeesharp.business.modules.finance.paymentrecord.enums.PayRecordBizSceneEnum}）
     * @param bizOrderId          业务主单 ID
     * @param merchantOrderNo     商户订单号（微信 out_trade_no）
     * @param thirdPartyTradeNo   微信 transaction_id
     * @param payAmountYuan       实付金额（元）
     * @param subject             商品描述
     * @param memberId            会员主键
     * @param paySuccessTime      支付成功时间
     * @param rawCallbackBody     原始回调报文
     */
    void recordWechatJsapiNotifyIfAbsent(String bizSceneCode, String bizOrderId, String merchantOrderNo,
            String thirdPartyTradeNo, BigDecimal payAmountYuan, String subject, String memberId,
            LocalDateTime paySuccessTime, String rawCallbackBody);
}
