主题
上线检查清单
生产上线前逐项确认。每一条都对应一个曾经在联调中出过问题的点。
凭据与配置
- [ ] API Key 与 Callback Secret 保存在服务端,前端不接触凭据。
- [ ] 测试与生产使用各自独立的 API Key、Callback Secret、端点配置和订单号空间。
- [ ] 已核对目标环境
/health、本站发布清单和对应 OpenAPI;按字段的 required 与 nullable 规则解析,不把目录有定义等同于企业必有数据。 - [ ] 生产回调地址与返回地址已提交平台配置。
地址安全
- [ ]
success_url、exit_url使用完整公网 HTTPS 地址;需要公网 HTTP 或 App 协议时,已由平台为渠道开启非 HTTPS 跳转。callback_url的 HTTP 例外须由平台另行对机构配置。 - [ ]
success_url和exit_url指向客户业务页面,与平台管理/API 公开地址不同源。 - [ ] 前端直接打开平台返回的
authorization_url,没有自行拼接授权页地址。
回调
- [ ] 接收端先验证签名(基于原始字节),再解密,再解析 JSON。
- [ ] 按完整
event_id去重并设置唯一约束,不截掉 attempt_id 后缀;回调与业务状态在同一事务保存,旧批次不覆盖新批次。 - [ ] 事务提交后才返回 2xx;处理耗时控制在 10 秒内。
- [ ] 已验证重复投递、非顺序到达两种场景。
状态与取数
- [ ] 状态查询作为回调的补充,间隔不低于 15 秒。
- [ ] 取数前确认产品
state == "SUCCEEDED"且available == true。 - [ ] 已处理
SUCCESS/SUCCEEDED同时出现qualityStatus=WARNING、collectionResult=COMPLETED_WITH_WARNINGS的情况,并保存质量明细。 - [ ] 没有用页面进度百分比作为业务判断依据。
- [ ] 能处理订单
revenueCheck的通过、未核验、失败和异常;未将UNVERIFIED当作通过,也未用产品可取数覆盖整单核验失败。 - [ ] 成功判定统一使用
success === true,未硬编码code == 200(发票 ALL 成功码是0)。
数据范围
- [ ] 已明确选择
ALL/STANDARD(或两者);新建含发票订单默认PACKAGE,如需CURSOR或LEGACY已显式选择,并确认历史订单沿用原方式。 - [ ] 税务 ALL 按
tax-all-business.v3完整对象解析,实际范围由默认主表与所选附表决定。 - [ ] STANDARD 按当前环境的专用字段字典处理,与 ALL、Compatible_V1 分开解析。税务查询日期读取
data.data.taxCollQryStartDate和data.data.taxCollQryEndDate,不按明细日期或当天日期推算。 - [ ] 财务金额按表型、原列、期间和单位取值;冲突字段为 null 时保留其他有效记录,不猜金额、不整表丢弃。
- [ ] 已区分原表实例与基础业务行,避免重复累加;原始值、单位标签与空值状态分别保存。
- [ ] 未将目录预登记、未采集或来源不足解释为企业没有记录。
- [ ] 附表已在创建授权时纳入采集范围;取数选择不超过本批次已采范围,追加附表已安排重新采集。
- [ ] 税务 ALL 结果连同
job_id、attempt_id和质量摘要保存;未自行传入或猜测映射版本。 - [ ] 未再发送已废弃的模块筛选字段(会被忽略)。
- [ ] 发票 ALL 按
invoice.flat-fields.v4读取公共字段和扩展字段,按六类角色区分票头、明细、专项及合计;未用total代替invoiceCount。 - [ ] 已使用真实脱敏完整响应验证解析,区分接口响应、纯业务数据和契约示例。
大批量与文件
- [ ] 同一有效交付内中断后能续读且不重复入库;快照或格式已过期时从头读取,支持 Range 的文件可断点续传。
- [ ] 普通分页同一轮固定 pageSize,保存授权代次、attempt_id、字段版本、pageNum;新批次或字段版本变化后从头读取。税务按 deliveryId / snapshotId / pageIndex 保存,游标按 datasetId 和请求 cursor 保存。
- [ ] 下载 PDF / 分片 / 原始文件后校验 SHA-256。
- [ ] 直接使用返回的
downloadUrl,未自行拼接;原始文件、HTML、PDF 与分片的签名下载未附加渠道请求头。 - [ ] 需长期留存原始表格时,已在保留期内转存到自有存储。
访问期限
- [ ] 已确认目标环境支持三类期限和签名下载,截止时间按北京时间解析。
- [ ] 能区分分享到期、单次下载签名到期与资料保留期到期;只有短期链接到期时重新鉴权查询取新地址。
- [ ] 未把历史订单的
null截止时间解释成永久访问。
安全
- [ ] 签名请求每次使用新的 Nonce(UUID v4 或等强度随机数)。
- [ ] 服务器时钟已与 NTP 同步(签名时间戳容差 300 秒)。
- [ ] 若启用
SM4,已在目标语言验证解密可用,且实现了「先验签后解密」。 - [ ] HTML 报告
accessUrl按敏感凭据保护,未写入公开日志或分析参数。
联调覆盖
- [ ] 成功
- [ ] 处理中(
PROCESS/60003) - [ ] 失败(含
retryable与不可重试两类) - [ ] 部分税务项目未取得但已有数据继续交付(
COMPLETED_WITH_WARNINGS) - [ ] 税局会话失效后从原授权链接重新录入凭据,确认
job_id不变、attempt_id更新 - [ ] 重复回调
- [ ] 签名错误
- [ ] 链接过期
日志与告警
- [ ] 每笔业务记录
external_order_id、authorization_code、job_id、attempt_id。 - [ ] 记录每次请求的 Nonce 与响应
code,回调的event_id与X-RPA-Delivery。 - [ ] 对
60003长时间不结束、回调长时间未到达设置告警。
生产验证
- [ ] 在生产环境用一笔真实订单从头到尾完整验证一遍。
- [ ] 确认生产订单与测试订单数据相互隔离,未复用测试订单号。