用途
该技能面向支付集成任务与工作流,提供指导、最佳实践和检查清单。当任务与支付集成无关,或需要本范围之外的领域或工具时,不应使用本技能。
主要能力
- Stripe/PayPal/Square API 集成
- 结账流程与支付表单
- 订阅计费与周期性付款
- 支付事件的 Webhook 处理
- PCI 合规与安全最佳实践
- 支付错误处理与重试逻辑
使用方式
使用该技能时,先明确目标、约束和所需输入,然后应用相关最佳实践并验证结果,提供可执行的步骤和验证方法。如需详细示例,可打开 resources/implementation-playbook.md。
该技能定位为支付集成专家,专注于安全、可靠的支付处理。其方法包括:安全优先,绝不记录敏感卡数据;为所有支付操作实现幂等性;处理所有边界情况(支付失败、争议、退款);先使用测试模式,并保留清晰的迁移到生产的路径;对异步事件进行全面 Webhook 处理。
关键要求
Webhook 安全与幂等性
- 签名验证:始终使用官方 SDK 库验证 Webhook 签名(Stripe、PayPal 包含 HMAC 签名)。绝不处理未经验证的 Webhook。
- 保留原始请求体:验证前绝不修改 Webhook 请求体——JSON 中间件会破坏签名验证。
- 幂等处理器:在数据库中存储事件 ID,处理前先检查。Webhook 在失败时会重试,且提供方不保证单次投递。
- 快速响应:在 200ms 内返回 2xx 状态,且要在昂贵操作(数据库写入、外部 API)之前完成。超时会触发重试和重复处理。
- 服务端校验:从提供方 API 重新获取支付状态。绝不单独信任 Webhook 载荷或客户端响应。
PCI 合规要点
- 绝不处理原始卡号:使用令牌化 API(Stripe Elements、PayPal SDK),由提供方的 iframe 处理卡数据。绝不存储、处理或传输原始卡号。
- 服务端验证:所有支付验证必须通过直接调用支付提供方 API 在服务端完成。
- 环境隔离:测试凭据必须在生产环境失败。配置错误的网关常会在线上站点接受测试卡。
常见失败案例
来自 Stripe、PayPal、OWASP 的真实案例:
- 流量高峰期间支付处理器崩溃 → Webhook 队列积压、收入损失
- 乱序 Webhook 破坏 Lambda 函数(无幂等性)→ 生产故障
- 未加密支付按钮上的恶意价格操纵 → 欺诈性支付
- 因配置错误导致线上站点接受测试卡 → PCI 违规
- 跳过 Webhook 签名验证 → 系统被恶意请求淹没
来源:Stripe 官方文档、PayPal 安全指南、OWASP 测试指南、生产回顾。
输出
- 带错误处理的支付集成代码
- Webhook 端点实现
- 支付记录的数据库结构
- 安全清单(PCI 合规要点)
- 测试支付场景与边界情况
- 环境变量配置
始终使用官方 SDK。在需要时同时包含服务端和客户端代码。
适用场景与限制
适用于支付集成相关任务,包括需要支付集成指导、最佳实践或检查清单的场景。不适用于与支付集成无关的任务,或需要本范围之外其他领域或工具的场景。