# 支付宝支付集成校验清单

本文档整理了支付宝支付集成过程中的通用校验项，仅包含必须校验和高危项目。集成完成后，请逐项核对并通过校验模板输出结果。校验结果供参考，开发者务必按照支付宝最新开放平台文档进行检查。

---

## 一、密钥与安全校验

| 校验项 | 校验要求 | 说明 |
|----------|----------|----------|
| 私钥存储位置 | 私钥不得保存在客户端代码中 | 构造交易数据并签名必须在商家服务端完成，私钥绝对不能保存在商家APP客户端中，也不能从服务端下发。商户需妥善保存私钥，不建议在代码或配置中明文写入私钥，应当通过加密配置文件或秘钥管理平台进行管理 |
| 私钥日志安全 | 私钥不得出现在日志中 | 私钥的保密等级比源码高，出现在日志中将增加私钥泄露的风险 |
| 私钥仓库安全 | 私钥不得上传公共仓库 | 私钥泄露将导致应用和支付宝交互的安全性完全丧失 |

---

## 二、异步通知校验

| 校验项 | 校验要求 | 说明 |
|----------|----------|----------|
| 验签必须执行 | 收到异步通知后必须先验签 | 确保通知来自支付宝 |
| 关键信息校验 | 检验 out_trade_no、total_amount、app_id、seller_id 等商户请求关键参数| 防止伪造订单、金额篡改等 |
| 交易状态判断 | 仅 `TRADE_SUCCESS` 或 `TRADE_FINISHED` 才算支付成功 | 其他状态不算支付成功 |
| 幂等处理 | 必须进行幂等处理，过滤重复的通知 | 同一笔订单可能收到多次异步通知 |
| 响应值 | 商户侧处理成功后需返回字符串 `success` | 否则支付宝会重试通知 |
| URL 格式 | notify_url 不能包含空格和 HTML 标签 | 否则可能导致通知失败 |
| 重定向 | notify_url 不能重定向 | 重定向会导致支付宝收不到 success |
| 外网可访问 | notify_url 必须外网可访问 | 需确保支付宝服务器可访问 |

---

## 三、支付结果处理校验

| 校验项 | 校验要求 | 说明 |
|----------|----------|----------|
| 前台同步结果防范 | 前台同步跳转结果仅作通知，**不能作为支付成功的依据** | 必须以异步通知或查询接口结果为准 |
| 支付成功判断 | 仅 `trade_status` 为 `TRADE_SUCCESS` 或 `TRADE_FINISHED` 时才认定付款成功 | 其他状态不算支付成功 |
| 主动查询兜底 | 主动查询订单状态必须作为支付结果确认的兜底逻辑 | 无论异步通知是否到达，都应具备主动查询订单状态的能力，防止因网络抖动、通知延迟或丢失导致的状态不一致 |
| 未知异常处理 | 网络超时或未知异常时，必须调用查询接口确认 | 不能简单推断为成功或失败 |
| 商家资损防范 | 不依赖前台同步结果，以异步通知或查询为准 | 防止用户未付款但商家判定成功 |
| 用户资损防范 | 未确认支付结果前不要求用户再次付款 | 防止用户已付款但商家判定失败导致重复扣款 |

---

## 四、退款校验

| 校验项 | 校验要求 | 说明 |
|----------|----------|----------|
| 退款使用场景 | 所有退款业务都必须调用退款接口 | 撤销接口不能用于退款业务，撤销接口仅用于在不确定支付结果情况下对交易发起撤销 |
| 退款是否成功判断 | 退款接口返回 `fund_change=Y` 或退款查询返回 `refund_status=REFUND_SUCCESS` 才算退款成功 | 其他状态不算退款成功 |
| 退款幂等保障 | 接口未退款成功且不明确交易情况时，重试请务必保证退款请求号 out_request_no 以及请求参数一致，避免发生多次退款 | 防止多次退款 |

---

## 五、上线前校验

| 校验项 | 校验要求 | 说明 |
|----------|----------|----------|
| 网关地址切换 | 切换为生产网关 `https://openapi.alipay.com/gateway.do`|  上线前必须修改 |
| APPID 切换 | 使用生产环境的 APPID | 与沙箱 APPID 不同 |
| 密钥切换 | 使用生产环境的应用私钥和支付宝公钥 | 与沙箱密钥不同 |
| 证书切换 | 公钥证书模式需切换为生产环境证书 | 应用公钥证书、支付宝公钥证书、支付宝根证书 |
| 产品开通状态 | 确认产品已在生产环境开通 | 沙箱无需开通，生产环境需要申请开通 |
| 私钥安全 | 私钥不在代码、日志、公共仓库中明文存储 | 使用安全的方式管理私钥 |
| 日志安全 | 日志中不打印敏感信息（私钥、用户信息等） | 防止信息泄露 |
| HTTPS 通信 | 生产环境必须使用 HTTPS | 保证传输安全 |

---

## 六、集成结果校验模板

> 复制以下模板，逐项填写校验结果并输出。校验结果说明：
> - ✅ 通过：已实现且符合规范
> - ❌ 不通过：未实现或不符合规范，需整改
> - ⚠️ 部分通过：部分实现，需补充完善
> - ➖ 不适用：当前集成场景不涉及此项

### 一、校验结论
[校验结果整体结论，输出校验结果和风险情况]
---

### 二、校验清单

| 校验类别 | 校验项 | 校验结果 | 问题描述 |
|------|------|------|------|
| 密钥与安全校验 | | | |
| 异步通知校验 | | | |
| 支付结果处理校验 | | | |
| 退款校验 | | | |
| 上线前校验 | | | |
| **合计** | | | |

---

### 三、风险说明

[未通过校验项（❌不通过、⚠️部分通过）的风险说明，需要提醒用户发布前完成整改或确认风险可接受。]

---

> 📖 本文档内容整理自支付宝开放平台官方文档，如有更新请以官方文档为准。