跳转到正文
生产环境文档契约 1.5.169
正在核对线上版本…

上线检查清单 ​

生产上线前逐项确认。每一条都对应一个曾经在联调中出过问题的点。

凭据与配置 ​

  • [ ] 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 长时间不结束、回调长时间未到达设置告警。

生产验证 ​

  • [ ] 在生产环境用一笔真实订单从头到尾完整验证一遍。
  • [ ] 确认生产订单与测试订单数据相互隔离,未复用测试订单号。

文档契约 API 1.5.169