Skip to content

PDF 与 HTML 报告

平台可以基于同一次采集结果生成两类报告产物。它们由两个独立开关控制:

产物开关获取方式
可下载 PDFpdf_report_types报告状态接口 → 签名链接下载
在线 HTMLgenerate_html_reports结果中的 accessUrl 直接访问

互不隐含

只开启 HTML 不会生成 PDF;只申请 PDF 也不会生成 HTML。 两者都要求本单同时采集税务和发票

PDF 报告

选择报告

创建授权时通过 pdf_report_types 选择:

编码含义需要后台授权
TAX_INVOICE_DETAIL税票 PDF(详版)
TAX_INVOICE_SUMMARY税票 PDF(简版)
LEASING_CREDIT_CUSTOM定制版统一开关

省略或传空数组时不生成 PDF。

查询状态

POST /api/channel/data/reports/status

json
{
  "channelCode": "BANK",
  "channelOrderNo": "BANK-20260812-0001",
  "orderNo": "1e3f2f55-8da4-4ba9-b941-84860eb1d243"
}
json
{
  "code": 200,
  "success": true,
  "data": {
    "status": "SUCCEEDED",
    "reports": [
      {
        "reportType": "TAX_INVOICE_DETAIL",
        "status": "SUCCEEDED",
        "reportVersion": "report.v12",
        "fileName": "税票报告-详版-BANK-20260812-0001.pdf",
        "fileSize": 1843200,
        "sha256": "…",
        "pageCount": 26,
        "downloadUrl": "https://rpa-api.xiaowu005.xyz/api/channel/data/reports/r-0001/download?expires=…&signature=…",
        "errorCode": null,
        "errorMessage": null
      }
    ]
  }
}
整体 status含义
PENDING至少一份仍在生成
SUCCEEDED全部成功
PARTIAL部分成功
FAILED全部失败

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

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

本单未申请任何 PDF 报告时,接口返回业务码 60002

下载

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

直接用签名链接

链接自带 expiressignature不需要渠道请求头,也不得自行拼接或改写。 下载后用响应头 X-Content-SHA256(或状态接口返回的 sha256)校验文件。

HTTP含义
403签名无效或链接已过期 —— 重新调用状态接口取新链接
404报告文件不存在

HTML 在线报告

generate_html_reports=true 时,订单结果和最终结果回调(终态回调)的 data额外包含 htmlReports;终态回调顶层还会额外包含 generateHtmlReports=true 和同一份 htmlReports

这两份 HTML 页面分别是详版、简版 PDF 报告的在线版。

1.5.3 报告口径

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

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

统计时,红冲蓝字正数原票与红字负数票共同进入净额,完整红冲组合净额为 0; 增值税申报和财务报表份数按申报批次/所属期去重,不按原始表格明细行数累计。 这也是 1.5.3 与旧版报告最需要注意的口径差异。

json
{
  "htmlReports": {
    "requested": true,
    "status": "READY",
    "generatedAt": "2026-08-14T02:00:00Z",
    "expiresAt": "2026-08-21T02:00:00Z",
    "reports": [
      {
        "reportType": "TAX_INVOICE_DETAIL",
        "label": "税票PDF(详版)",
        "status": "READY",
        "accessUrl": "https://rpa-auth.xiaowu005.xyz/api/v1/public/html-reports/<detail-token>",
        "expiresAt": "2026-08-21T02:00:00Z",
        "errorCode": null,
        "errorMessage": null
      },
      {
        "reportType": "TAX_INVOICE_SUMMARY",
        "label": "税票PDF(简版)",
        "status": "READY",
        "accessUrl": "https://rpa-auth.xiaowu005.xyz/api/v1/public/html-reports/<summary-token>",
        "expiresAt": "2026-08-21T02:00:00Z",
        "errorCode": null,
        "errorMessage": null
      }
    ]
  }
}

reports 固定列出详版和简版两项,便于在报告尚未就绪时也能跟踪各自状态。

层级可能取值
整体 statusPENDINGREADYPARTIALFAILED
单份 statusPENDINGREADYFAILED

生成失败不影响采集

HTML 报告生成失败不影响主流程:某份生成失败时用 PARTIAL / FAILED 和单项错误字段提示,不会把已成功的税务、发票采集改成失败。

访问链接的性质

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

链接本身就是钥匙

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

  • 不得自行拼接链接,只使用返回的 accessUrl
  • 不得转存到公开日志、工单附件或第三方分析参数;
  • 链接中不包含 authorization_code
  • accessUrl 使用平台配置的公开域名(生产为 https://rpa-auth.xiaowu005.xyz), 与 API 域名不同 —— 请直接使用返回值
  • 有效期在生成时固定为 7 天,重复查询状态不续期
  • 成功进度页仅在本开关开启时显示详版、简版两个二维码。
  • 页面使用 Cache-Control: no-store、禁止脚本和外部资源的 CSP, 默认不允许被 iframe 嵌入。
HTTPcode含义
404HTML_REPORT_NOT_FOUND令牌未知或被篡改
404HTML_REPORT_NOT_READY报告尚未生成完成
410HTML_REPORT_EXPIRED链接过期、授权取消/过期,或被新一轮授权取代

适配平台 1.5.3 · 接入指南、接口参考、字段字典与税局状态统一入口。