主题
PDF 与 HTML 报告
平台可以基于同一次采集结果生成报告。pdf_report_types 选择具体报告,订单查询的 pdfReports 提供同源 HTML 与 PDF 的状态和下载地址;generate_html_reports 控制税票详版、简版的在线访问页。选择 TAX_RISK 时另行生成财税风险报告的在线页和二维码,分享期同样由 public_result_access_days 控制(初始默认 7 天)。
| 产物 | 开关 | 获取方式 |
|---|---|---|
| 可下载 HTML 与 PDF | pdf_report_types | 订单查询 pdfReports.reports[] 中的签名链接 |
| 税票在线 HTML | generate_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、orderNo | GET 路径传 external_order_id,即原 channelOrderNo,携带 X-Channel-Key |
data.status | pdfReports.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 查找,不按数组下标识别报告。
| 层级 | 可能取值 |
|---|---|
整体 status | PENDING、READY、PARTIAL、FAILED |
单份 status | PENDING、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 嵌入。
| HTTP | code | 含义 |
|---|---|---|
| 404 | HTML_REPORT_NOT_FOUND | 令牌未知或被篡改 |
| 404 | HTML_REPORT_NOT_READY | 报告尚未生成完成 |
| 410 | HTML_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 保留;预览、下载已保存报告不会自动重算,也不会发起新的付费工商司法查询。本次发布不批量重生成历史订单,旧报告不会因部署自动变成修正版。