# Kylin Pay - 法律合规文档

> **版本**: 1.1
> **最后更新**: 2026-06-20
> **适用范围**: 所有使用 kylin/pay 扩展包的系统

---

## 一、适用法律法规

### 1.1 《非银行支付机构网络支付业务管理办法》(2016.7.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第十条 | 支付机构应建立客户身份识别制度 | 支付实名认证由上层业务实现 |
| 第二十条 | 支付机构应当确保交易信息的真实性、完整性、可追溯性 | `PayListener` 记录支付请求/完成/HTTP 事件结构化日志，回调签名验证 |

### 1.2 《中国人民银行关于加强支付结算管理防范电信网络新型违法犯罪的通知》(银发〔2016〕261号)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二条 | 加强转账管理 | 支付金额校验由上层业务实现 |
| 第七条 | 加强交易监测 | `PayListener::artfulStart()` 记录支付发起日志，`artfulEnd()` 记录完成日志 |

### 1.3 《中华人民共和国个人信息保护法》(2021.11.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第六条 | 最小必要原则 | 仅收集支付相关的必要信息 |
| 第二十八条 | 金融账户信息属于敏感个人信息 | 支付信息加密传输（HTTPS），URL 脱敏记录（`sanitizeUrl()`） |

### 1.4 PCI DSS 支付卡行业数据安全标准

| 要求 | 合规要点 |
|------|----------|
| 要求 3 | 保护持卡人数据 | 卡号不落地，由支付渠道处理 |
| 要求 4 | 加密传输持卡人数据 | HTTPS 传输 |
| 要求 10 | 跟踪和监控所有对网络资源和持卡人数据的访问 | `PayListener` 结构化日志记录 |

### 1.5 《中华人民共和国网络安全法》(2017.6.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第二十一条 | 采取监测、记录网络运行状态、网络安全事件的技术措施，日志留存 >= 180 天 | `PayListener` 记录 HTTP 请求/响应、支付发起/完成事件 |
| 第四十二条 | 不得泄露个人信息 | 支付回调安全处理，URL 脱敏 |

### 1.6 《中华人民共和国反洗钱法》(2007.1.1)

| 条款 | 要求 | 合规要点 |
|------|------|----------|
| 第三条 | 金融机构应当建立健全反洗钱内控制度 | 支付交易日志完整记录，便于反洗钱调查 |

---

## 二、行业规范

### 2.1 支付安全规范

- 各支付渠道签名校验（支付宝/微信/PayPal/Stripe/银联/抖音/JSB）
- 回调处理安全（CallbackPlugin）
- 加解密标准（PKCS7 + AES）
- HTTP 请求/响应结构化日志记录
- URL 脱敏处理（移除查询参数中的敏感信息）

### 2.2 支付渠道

| 渠道 | 接口版本 | 支持能力 |
|------|------|------|
| 支付宝 | V2 | 网页/APP/H5/扫码/小程序支付、退款、转账、分账、红包、人脸认证、OCR |
| 微信支付 | V3 | JSAPI/APP/Native/H5/小程序支付、退款、转账、账单 |
| 银联 | Open | 网页/H5/扫码/POS 支付、退款、撤销、预授权 |
| PayPal | V2 | 支付、退款、查询 |
| Stripe | V1 | 网页支付、退款、取消、查询 |
| 抖音 | V1 | 小程序支付、退款、查询 |
| JSB | - | 扫码支付、退款、查询 |

### 2.3 日志规范

- 支付发起日志：记录商户订单号、插件链（`artfulStart`）
- 支付完成日志：记录商户订单号、渠道流水号、交易状态（`artfulEnd`）
- HTTP 请求日志：记录请求方法、URL（脱敏），不记录请求体（`httpStart`）
- HTTP 响应日志：记录状态码，不记录响应体（`httpEnd`）
- 日志通道可通过 `kylin-pay.log_channel` 配置

---

## 三、合规检查清单

### 3.1 支付渠道

- [x] 支付宝（V2 接口，完整能力）
- [x] 微信支付 V3
- [x] 银联支付（Open 接口）
- [x] PayPal
- [x] Stripe
- [x] 抖音支付
- [x] JSB 支付

### 3.2 安全机制

- [x] 各渠道签名验证（VerifySignaturePlugin / CallbackPlugin）
- [x] 回调处理（CallbackPlugin）
- [x] 加解密（PKCS7 + AES）
- [x] HTTPS 传输

### 3.3 日志与审计

- [x] 支付发起日志（`artfulStart`）
- [x] 支付完成日志（`artfulEnd`）
- [x] HTTP 请求日志（`httpStart`，URL 脱敏）
- [x] HTTP 响应日志（`httpEnd`）
- [x] 日志通道可配置（`kylin-pay.log_channel`）
- [x] 日志记录失败不影响支付流程（try-catch 保护）

### 3.4 数据保护

- [x] URL 脱敏处理（`sanitizeUrl()` 移除查询参数）
- [x] 不记录请求体和响应体（防止泄露敏感数据）
- [x] 插件链简化记录（仅记录类名）

---

## 四、代码检测报告

### 4.1 检测结果

| 检测项 | 状态 | 说明 |
|------|------|------|
| 支付宝/微信/银联/PayPal/Stripe/抖音/JSB | ✅ 已通过 | 7 个支付渠道完整支持 |
| 签名验证 | ✅ 已通过 | 各渠道 VerifySignaturePlugin / CallbackPlugin |
| 回调处理 | ✅ 已通过 | CallbackPlugin |
| 加解密 | ✅ 已通过 | PKCS7 + AES |
| 支付发起日志 | ✅ 已通过 | `artfulStart()` 记录商户订单号、插件链 |
| 支付完成日志 | ✅ 已通过 | `artfulEnd()` 记录商户订单号、渠道流水号、交易状态 |
| HTTP 请求日志 | ✅ 已通过 | `httpStart()` 记录方法、URL（脱敏） |
| HTTP 响应日志 | ✅ 已通过 | `httpEnd()` 记录状态码 |
| URL 脱敏 | ✅ 已通过 | `sanitizeUrl()` 移除查询参数 |
| 日志容错 | ✅ 已通过 | try-catch 保护，日志失败不影响支付 |
| 日志通道配置 | ✅ 已通过 | `kylin-pay.log_channel` 可配置 |

### 4.2 日志事件清单

| 事件 | 级别 | 说明 | 法律依据 |
|------|------|------|------|
| `支付请求发起` | info | 记录商户订单号、插件链 | 银发〔2016〕261号第七条 |
| `支付请求完成` | info | 记录商户订单号、渠道流水号、交易状态 | 《非银行支付机构网络支付业务管理办法》第二十条 |
| `支付 HTTP 请求` | debug | 记录方法、URL（脱敏） | 《网络安全法》第二十一条 |
| `支付 HTTP 响应` | debug | 记录状态码 | 《网络安全法》第二十一条 |

### 4.3 审查结论

**本包代码合规性良好。** 7 个支付渠道、签名验证、安全加解密、结构化日志记录功能完整。

底层 SDK 通过 `PayListener` 记录结构化日志，业务级审计日志（含用户、IP 等）应由上层 `kylin/payment` 包通过监听 `PayStart` / `PayEnd` 事件实现，并写入 `kylin/audit-log`。

---

## 五、免责声明

本扩展包在代码层面实现了支付 SDK 的合规基础能力，但不构成法律建议。使用方应：

1. 确保支付业务符合《非银行支付机构网络支付业务管理办法》
2. 对接合规的支付服务提供商（持牌支付机构）
3. 上层业务应实现客户身份识别（KYC）和反洗钱监测
4. 业务级审计日志应由上层 `kylin/payment` 包实现
5. 咨询专业法律顾问，确保系统整体合规
