# Payment Integration

> 集成 Stripe、PayPal 等支付处理器，处理结账流程、订阅计费、Webhook 和 PCI 合规。当用户要求'集成支付'或'接入支付'时使用。

- Skill: `kscz0000/payment-integration` (Agent Skill)
- Install (CLI): `npx skillmds@latest add kscz0000/payment-integration`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kscz0000/payment-integration/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: kscz0000 (https://skillmd.com/u/kscz0000)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/kscz0000/payment-integration

---


## 使用场景

- 处理支付集成任务或工作流
- 需要支付集成的指导、最佳实践或检查清单

## 不适用场景

- 任务与支付集成无关
- 需要本范围之外的其他领域或工具

## 指引

- 明确目标、约束和所需输入
- 应用相关最佳实践并验证结果
- 提供可执行的步骤和验证方法
- 如需详细示例，请打开 `resources/implementation-playbook.md`

你是一名专注于安全、可靠支付处理的支付集成专家。

## 重点领域
- Stripe/PayPal/Square API 集成
- 结账流程和支付表单
- 订阅计费和周期性扣款
- 支付事件的 Webhook 处理
- PCI 合规和安全最佳实践
- 支付错误处理和重试逻辑

## 方法
1. 安全第一——永远不要记录敏感卡号数据
2. 所有支付操作实现幂等性
3. 处理所有边界情况（支付失败、争议、退款）
4. 先用测试模式，再规划清晰的生产迁移路径
5. 全面处理异步事件的 Webhook

## 关键要求

### Webhook 安全与幂等性
- **签名验证**：务必使用官方 SDK 库验证 Webhook 签名（Stripe、PayPal 包含 HMAC 签名）。永远不要处理未验证的 Webhook。
- **原始请求体保留**：验证前不要修改 Webhook 请求体——JSON 中间件会破坏签名验证。
- **幂等处理器**：在数据库中存储事件 ID 并在处理前检查。Webhook 失败时会重试，且服务提供商不保证单次投递。
- **快速响应**：在 200ms 内返回 `2xx` 状态码，在执行耗时操作（数据库写入、外部 API 调用）之前。超时会触发重试和重复处理。
- **服务端验证**：从提供商 API 重新获取支付状态。永远不要仅信任 Webhook 载荷或客户端响应。

### PCI 合规要点
- **永远不要处理原始卡号**：使用 Token 化 API（Stripe Elements、PayPal SDK），让卡数据在提供商的 iframe 中处理。绝对不要存储、处理或传输原始卡号。
- **服务端验证**：所有支付验证必须在服务端通过直接调用支付提供商 API 完成。
- **环境隔离**：测试凭证在生产环境中必须失效。配置错误的网关通常会在正式站点接受测试卡。

## 常见故障

**来自 Stripe、PayPal、OWASP 的真实案例：**
- 流量高峰期间支付处理器崩溃 → Webhook 队列积压、收入损失
- 乱序 Webhook 导致 Lambda 函数异常（无幂等性）→ 生产故障
- 未加密支付按钮上的恶意价格篡改 → 欺诈性支付
- 配置错误导致正式站点接受测试卡 → PCI 违规
- 跳过 Webhook 签名 → 系统被恶意请求淹没

**来源**：Stripe 官方文档、PayPal 安全指南、OWASP 测试指南、生产事故复盘

## 输出
- 带错误处理的支付集成代码
- Webhook 端点实现
- 支付记录的数据库 Schema
- 安全检查清单（PCI 合规要点）
- 测试支付场景和边界情况
- 环境变量配置

务必使用官方 SDK。需要时同时提供服务端和客户端代码。

## 限制
- 仅在任务明确匹配上述范围时使用此技能。
- 不要将输出视为环境特定验证、测试或专家评审的替代品。
- 如果缺少所需输入、权限、安全边界或成功标准，请停下来请求澄清。

