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

PDF 与 HTML 报告 ​

平台可以基于同一次采集结果生成报告。pdf_report_types 选择具体报告,订单查询的 pdfReports 提供同源 HTML 与 PDF 的状态和下载地址;generate_html_reports 控制税票详版、简版的在线访问页。选择 TAX_RISK 时另行生成财税风险报告的在线页和二维码,分享期同样由 public_result_access_days 控制(初始默认 7 天)。

产物开关获取方式
可下载 HTML 与 PDFpdf_report_types订单查询 pdfReports.reports[] 中的签名链接
税票在线 HTMLgenerate_html_reports订单查询 htmlReports.reports[].accessUrl 直接访问
财税风险在线 HTML 与二维码pdf_report_types 包含 TAX_RISK订单查询 htmlReports.reports[] 中 reportType=TAX_RISK 的访问地址

旧报告状态接口计划弃用

POST /api/channel/data/reports/status 当前保留以兼容已有客户端,后续将逐步弃用,具体下线时间另行通知。 新接入方在目标环境支持 pdfReports 后统一使用订单查询,已有客户端按迁移说明调整。 PDF 与 HTML 文件下载接口继续保留。

pdfReports 从 API 1.5.21 起提供。本页说明三类期限和独立 HTML 文件下载能力;部署范围见环境与凭据。

互不隐含

generate_html_reports 不会隐式申请 PDF;pdf_report_types 选中的每份报告会生成同源 HTML 文件与 PDF。详版、简版及租赁报告的 PDF 选择不会开启在线分享页;TAX_RISK 同时开启自己的在线分享页和二维码。 报告均要求本单同时采集税务和发票。

可下载报告 ​

选择报告 ​

在创建授权时通过 pdf_report_types 选择:

编码含义需要后台授权
TAX_INVOICE_DETAIL税票 PDF(详版)否
TAX_INVOICE_SUMMARY税票 PDF(简版)否
TAX_RISK财税风险报告(PDF、在线 HTML 与二维码)否
LEASING_CREDIT_CUSTOM唯一 R31 租赁机构信贷报告是

省略或传空数组时不生成可下载报告。

只申请财税风险报告时,创建授权可使用以下请求;即使 generate_html_reports=false,仍会生成这一份报告的在线页与二维码,不会附带详版、简版:

json
{
  "external_order_id": "RISK-20261018-0001",
  "enterprise_name": "示例企业",
  "taxpayer_id": "91420100XXXXXXXXXX",
  "pdf_report_types": ["TAX_RISK"],
  "generate_html_reports": false
}

查询状态 ​

GET /api/v1/channel/orders/{external_order_id}

bash
curl -sS "$RPA_BASE_URL/api/v1/channel/orders/BANK-20260812-0001" \
  -H "X-Channel-Key: $RPA_CHANNEL_KEY"

订单响应中的报告字段示例(其余订单字段省略):

json
{
  "external_order_id": "BANK-20260812-0001",
  "pdfReports": {
    "status": "SUCCEEDED",
    "reports": [
      {
        "reportType": "TAX_INVOICE_DETAIL",
        "status": "SUCCEEDED",
        "reportVersion": "2026-09-11.server-render.5",
        "fileName": "税票报告-详版-BANK-20260812-0001.pdf",
        "fileSize": 1843200,
        "sha256": "…",
        "htmlFileName": "税票报告-详版-BANK-20260812-0001.html",
        "htmlFileSize": 286720,
        "htmlSha256": "…",
        "pageCount": 26,
        "downloadUrl": "https://rpa-api.xiaowu005.xyz/api/channel/data/reports/r-0001/download?expires=…&signature=…",
        "pdfDownloadUrl": "https://rpa-api.xiaowu005.xyz/api/channel/data/reports/r-0001/download?expires=…&signature=…",
        "htmlDownloadUrl": "https://rpa-api.xiaowu005.xyz/api/channel/data/reports/r-0001/html?expires=…&signature=…",
        "downloadExpiresAt": "2026-08-14 10:15:00",
        "dataExpiresAt": "2026-09-13 10:00:00",
        "errorCode": null,
        "errorMessage": null
      }
    ]
  }
}
pdfReports.status含义
PENDING至少一份仍在生成
SUCCEEDED全部成功
PARTIAL部分成功
FAILED全部失败

pdfReports.reports[] 列出本单申请的每份报告;单份状态为 PENDING、QUEUED、RUNNING、SUCCEEDED 或 FAILED。 尚未生成报告记录时也会列出申请的报告,状态为 PENDING,下载地址为 null。 报告异步生成,应独立检查报告状态,不能仅凭订单 state 判断 PDF 已可下载。 需要轮询时,继续查询订单,间隔为 15–30 秒;某份报告为 SUCCEEDED 后即可下载,整体为 PARTIAL 时也可以下载成功的部分。

单份状态里的 PENDING 可能是重试中

某份报告在未达最大重试次数前的失败,对外仍显示为 PENDING。 只有不再重试的最终失败才显示 FAILED,并带上 errorCode / errorMessage。

本单未申请任何 PDF 报告时,订单响应不包含 pdfReports。generate_html_reports=true 不会隐式申请 PDF。 订单启用 output_encryption=SM4 时,先解密整个订单响应,再读取 pdfReports。

旧接口迁移 ​

旧接口 POST /api/channel/data/reports/status 已标记为计划弃用,当前请求和响应保持兼容。

原调用方式迁移后的调用方式
POST 请求体传 channelCode、channelOrderNo、orderNoGET 路径传 external_order_id,即原 channelOrderNo,携带 X-Channel-Key
data.statuspdfReports.status
data.reports[]pdfReports.reports[],单份报告字段保持一致
未申请 PDF 返回业务码 60002订单正常返回,不包含 pdfReports
下载签名过期后重新调用旧接口重新查询订单获取新的签名链接

先确认目标环境已经部署支持 pdfReports 的版本,再切换客户端。已申请 PDF 的订单在旧部署中也可能不包含该字段,不能据此判定未申请。 迁移完成后无需再单独查询旧接口;具体下线安排将在发布说明中提前通知。

下载 ​

GET /api/channel/data/reports/{report_id}/download

直接用签名链接

链接自带 expires 与 signature,不需要渠道请求头,也不得自行拼接或改写。 下载后用响应头 X-Content-SHA256(或 pdfReports.reports[] 返回的 sha256)校验文件。

同源 HTML 使用 GET /api/channel/data/reports/{report_id}/html;直接使用 pdfReports.reports[] 返回的 htmlDownloadUrl,并依据 htmlSha256 校验。R31 PDF 由这份 HTML 同源渲染,不存在其他并行租赁模板。

HTTP含义
403签名无效或链接已过期,重新查询订单取新链接
404报告文件不存在
410资料到期或访问权限撤销,不能靠刷新签名续期

HTML 在线报告 ​

generate_html_reports=true 或 pdf_report_types 包含 TAX_RISK 时,订单结果和结果回调的 data 会额外包含 htmlReports;结果回调顶层还会额外包含 generateHtmlReports=true 和同一份 htmlReports。

详版、简版 HTML 对应两种税票报告;财税风险 HTML 对应 TAX_RISK。generateHtmlReports=true 在结果回调中表示本单存在在线报告,不能据此推断创建请求一定传了 generate_html_reports=true。

报告统计口径 ​

两份 HTML 使用同一份由 ALL 投影形成的报告事实模型,但章节范围不同:

  • 简版:企业税务画像、申报与财务资料覆盖、发票规模/月度趋势、主要交易方;
  • 详版:在简版基础上增加税款状态、红冲口径、客户/供应商结构和数据源覆盖。

统计时,红冲蓝字正数原票与红字负数票共同进入净额,完整红冲组合净额为 0; 增值税申报和财务报表份数按申报批次/所属期去重,不按原始表格明细行数累计。 报告值仍应结合其实际所属期、数据覆盖和质量说明理解。

json
{
  "htmlReports": {
    "requested": true,
    "status": "READY",
    "generatedAt": "2026-08-14T02:00:00Z",
    "expiresAt": "2026-08-21 10:00:00",
    "reports": [
      {
        "reportType": "TAX_INVOICE_DETAIL",
        "label": "税务发票综合分析报告(详版)",
        "status": "READY",
        "accessUrl": "https://rpa-auth.xiaowu005.xyz/api/v1/public/html-reports/<detail-token>",
        "downloadUrl": "https://rpa-api.xiaowu005.xyz/api/v1/public/html-reports/downloads/detail-report-id?expires=…&signature=…",
        "downloadExpiresAt": "2026-08-14 10:15:00",
        "dataExpiresAt": "2026-09-13 10:00:00",
        "expiresAt": "2026-08-21 10:00:00",
        "errorCode": null,
        "errorMessage": null
      },
      {
        "reportType": "TAX_INVOICE_SUMMARY",
        "label": "税票概括报告(简版)",
        "status": "READY",
        "accessUrl": "https://rpa-auth.xiaowu005.xyz/api/v1/public/html-reports/<summary-token>",
        "downloadUrl": "https://rpa-api.xiaowu005.xyz/api/v1/public/html-reports/downloads/summary-report-id?expires=…&signature=…",
        "downloadExpiresAt": "2026-08-14 10:15:00",
        "dataExpiresAt": "2026-09-13 10:00:00",
        "expiresAt": "2026-08-21 10:00:00",
        "errorCode": null,
        "errorMessage": null
      }
    ]
  }
}

上例只请求了详版、简版在线报告。reports 按本单请求列出报告,即使尚未就绪也保留对应项:只选择 TAX_RISK 时为一项,只开启 generate_html_reports 时为详版、简版两项,两者都选择时为三项。客户端按 reportType 查找,不按数组下标识别报告。

层级可能取值
整体 statusPENDING、READY、PARTIAL、FAILED
单份 statusPENDING、READY、FAILED

区分采集完成与订单交付

HTML 报告生成失败时用 PARTIAL / FAILED 和单项错误字段提示,已取得的税务、发票采集证据继续保留。本单申请的在线报告未全部生成时,订单交付可失败并显示 ERROR,应联系平台处理报告生成,无需因此重新采集。

访问链接的性质 ​

GET /api/v1/public/html-reports/{token}

链接本身就是钥匙

accessUrl 不需要再登录或带任何请求头 —— 拿到链接的人就能打开报告。 因此客户系统应把它当敏感凭据保护:

  • 不得自行拼接链接,只使用返回的 accessUrl;
  • 不得转存到公开日志、工单附件或第三方分析参数;
  • 链接中不包含 authorization_code。
  • accessUrl 使用平台配置的公开域名(生产为 https://rpa-auth.xiaowu005.xyz), 与 API 域名不同 —— 请直接使用返回值。
  • 新策略订单按 public_result_access_days 计算分享期(1–30 天,初始默认 7 天),以返回的 expiresAt 为准,重复查询不续期;历史 HTML 保留原有七天规则。
  • 成功进度页按在线报告选择及就绪状态显示二维码:详版、简版由 generate_html_reports 控制;财税风险报告由 TAX_RISK 控制。
  • 页面使用 Cache-Control: no-store、禁止脚本和外部资源的 CSP, 默认不允许被 iframe 嵌入。
HTTPcode含义
404HTML_REPORT_NOT_FOUND令牌未知或被篡改
404HTML_REPORT_NOT_READY报告尚未生成完成
410HTML_REPORT_EXPIRED链接过期、授权取消/过期,或被新一轮授权取代

保留期内下载在线报告 HTML 文件 ​

通过鉴权订单查询取得 htmlReports.reports[].downloadUrl,直接 GET 下载,无需渠道请求头。该接口为 GET /api/v1/public/html-reports/downloads/{report_id},必须完整保留返回地址中的 expires 与 signature。

accessUrl 用于在线分享,downloadUrl 用于客户保存文件。分享已到期但资料仍在保留期内时,仍可查询并下载文件;公共结果页不返回这个文件下载地址。

PDF、HTML 的单次签名下载地址最长有效 15 分钟,且不超过 dataExpiresAt。downloadExpiresAt、dataExpiresAt 和分享 expiresAt 均为北京时间 YYYY-MM-DD HH:mm:ss。资料到期后返回 410,重新查询不会延长期限。详见授权、分享与资料期限。

当前报告计算与历史文件 ​

财税风险报告基于本次已采集数据检测疑点。存在疑点不等于已认定违法,未采集或无法核验的项目也不等于无风险;按报告中的期间、来源与核验说明理解结果。

2026-09-13 部署的 f2f0182 修正了税额取数、汇算处理、申报与发票比较期间,以及汇总和明细报告的金额依据。缺失罚款金额保留缺失,不按零处理;税务稽查记录按其实际含义展示,关联企业表隐藏已注销企业。报告中的未知或未查询项不应理解为“无风险”。

新生成报告使用当前计算规则。已保存的报告快照和已交付 HTML/PDF 保留;预览、下载已保存报告不会自动重算,也不会发起新的付费工商司法查询。本次发布不批量重生成历史订单,旧报告不会因部署自动变成修正版。

文档契约 API 1.5.169