mi-assessment/server/MiAssessment/src/MiAssessment.Core/Interfaces/IPaymentNotifyService.cs
2026-02-03 14:25:01 +08:00

57 lines
2.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using MiAssessment.Model.Models.Payment;
namespace MiAssessment.Core.Interfaces;
/// <summary>
/// 支付回调服务接口
/// </summary>
public interface IPaymentNotifyService
{
/// <summary>
/// 处理微信支付回调(自动识别 V2/V3 格式)
/// </summary>
/// <param name="notifyBody">回调请求体</param>
/// <param name="headers">回调请求头V3 需要用于签名验证)</param>
/// <returns>回调处理结果</returns>
Task<NotifyResult> HandleWechatNotifyAsync(string notifyBody, WechatPayNotifyHeaders? headers = null);
/// <summary>
/// 处理微信支付 V2 回调XML 格式)
/// </summary>
/// <param name="xmlData">微信回调XML数据</param>
/// <returns>回调处理结果</returns>
Task<NotifyResult> HandleWechatV2NotifyAsync(string xmlData);
/// <summary>
/// 处理微信支付 V3 回调JSON 格式)
/// </summary>
/// <param name="jsonData">微信回调JSON数据</param>
/// <param name="headers">回调请求头</param>
/// <returns>回调处理结果</returns>
Task<NotifyResult> HandleWechatV3NotifyAsync(string jsonData, WechatPayNotifyHeaders headers);
/// <summary>
/// 检查订单是否已处理(幂等性检查)
/// </summary>
/// <param name="orderNo">订单号</param>
/// <returns>是否已处理</returns>
Task<bool> IsOrderProcessedAsync(string orderNo);
/// <summary>
/// 记录支付回调通知
/// </summary>
/// <param name="orderNo">订单号</param>
/// <param name="notifyData">回调数据</param>
/// <returns>是否记录成功</returns>
Task<bool> RecordNotifyAsync(string orderNo, WechatNotifyData notifyData);
/// <summary>
/// 更新订单通知状态
/// </summary>
/// <param name="orderNo">订单号</param>
/// <param name="status">状态0-待处理 1-处理成功 2-处理失败</param>
/// <param name="message">处理消息</param>
/// <returns>是否更新成功</returns>
Task<bool> UpdateNotifyStatusAsync(string orderNo, byte status, string? message = null);
}