我如何在 ASP.NET Core 中停止猜测支付失败(免费工具)
Source: Dev.to
支付集成很少会大声报错。
它们往往悄悄失败。Webhook 没有到达,结果你在凌晨 2 点调试生产日志。
在真实的支付网关集成(Worldpay)中遇到这些问题后,我为 ASP.NET Core 构建了一个专门用于支付事件的集中日志系统。
真正的问题
大多数支付集成面临以下困境:
- 日志分散在控制器和服务中
- 没有结构化的审计轨迹
- 看不到状态转换
- Webhook 事件重复
- 事后调试痛苦
当涉及金钱时,传统日志根本不够。你需要每笔支付的清晰生命周期历史。
解决思路
我创建了一个轻量级组件 PaymentEventLogger,它:
- 捕获每个与支付相关的事件
- 存储结构化的审计条目
- 跟踪状态随时间的变化
- 检测重复的 webhook 调用
- 大幅简化生产环境的调试
它可以直接插入已有的 ASP.NET Core 应用——无需沉重框架,只需清晰可见。
示例用例
不再是简单的日志调用:
_logger.LogInformation("Payment received");
而是生成包含以下信息的结构化条目:
- 支付 ID
- 之前的状态
- 新的状态
- 时间戳
- 来源(Webhook / API / 手动)
- 原始负载引用
所有信息以结构化方式存储,这样当出现问题时,你可以立刻看到完整的支付生命周期。
为什么分享
我把这个组件从真实的生产系统中抽离出来,并整理成可复用的形式。现在在发布阶段,我 免费 提供它,以便收集其他开发者的反馈。如果它对你有帮助,欢迎支持该项目。
结语
支付调试不应像法医调查。如果你在 ASP.NET Core 中构建支付系统,结构化日志不是可选的——它是必需的。期待听到大家在生产环境中如何处理 webhook 审计的经验。