Skip to content

等待结果

采集是异步的。平台会主动回调通知结果; 本页的两个查询接口是兜底手段,用于回调丢失、客户端重启补偿或人工排查。

轮询间隔

查询间隔不得低于 15 秒,建议 15–30 秒。不要用页面进度百分比作为业务判断依据。

订单查询

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"

状态机

state含义是否结束
CONNECT等待用户提交授权
PROCESS排队、采集、校验或上传中
INTERACTION等待短信或图形验证码
SUCCESS采集完成
ERROR最终失败

1.5.3 的 SUCCESS 可能带质量警告

税务某个非阻断子项目超时、来源不足或记录不完整时,平台会保留已取得的数据继续处理。 订单仍可为 SUCCESS,同时返回 qualityStatus=WARNINGcollectionResult=COMPLETED_WITH_WARNINGS。因此还要读取 dataQualityqualityIssues,不能把 SUCCESS 直接解释成“所有来源都完整”。

四个编号

响应里有四个标识,作用各不相同,落库时建议全部保存:

字段作用
external_order_id客户业务订单号
authorization_code当前授权记录标识。只有创建新授权代次时才变化;1.5.3 的原链接重新录入凭据会沿用它
job_id采集任务标识。这就是数据接口里的 orderNo
attempt_id当前采集尝试。平台系统重试或原授权页重新录入凭据后会变化,job_id 不变

用 attempt_id 区分两类重试

job_id 不变、attempt_id 变化 = 同一任务进入新的执行尝试,客户端继续跟踪即可。 authorization_code 变化 = 平台创建了新的授权代次;不要仅凭是否需要用户重新录入凭据 来推断它一定变化。

响应示例

json
{
  "external_order_id": "BANK-20260812-0001",
  "authorization_code": "550e8400-e29b-41d4-a716-446655440000",
  "job_id": "1e3f2f55-8da4-4ba9-b941-84860eb1d243",
  "attempt_id": "a2ad4ec4-b878-42c5-b623-4d962f350e72",
  "state": "SUCCESS",
  "dataDeliveryMode": "STRUCTURED",
  "invoice_period": "LAST_36_MONTHS",
  "invoice_period_label": "近36个月",
  "invoice_start_date": "2023-08-12",
  "invoice_end_date": "2026-08-12",
  "result": {},
  "qualityStatus": "PASSED",
  "qualityIssues": [],
  "collectionResult": "COMPLETED",
  "dataQuality": {},
  "artifacts": [],
  "updated_at": "2026-08-12T10:41:07+00:00"
}

质量字段

字段常见值处理方式
qualityStatusPASSED / WARNING / UNVERIFIED作为整体质量结论保存
collectionResultCOMPLETED / COMPLETED_WITH_WARNINGS后者表示已有数据可用,但存在非阻断问题
qualityIssues问题对象数组保存问题代码、严重度及可重试提示
dataQuality覆盖率、partialusable、问题与隔离制品用于判断具体缺失范围,不要只看顶层状态

1.5.3 取消税务子项目的本地硬超时和整轮重跑;单次税局请求超时会记录该项目未取得, 继续处理其他项目。只有活动采集页真实跳回税局登录路由时,才会终止当前 attempt 并要求在原授权页重新录入凭据。

开启 HTML 报告时,响应会增量包含 htmlReports; 选择 WORKER_RAW 时,artifacts 会列出原始文件及其 downloadUrl

订单不存在时返回 404 CHANNEL_ORDER_NOT_FOUND

产品查询

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

product 只允许 TAXINVOICE。按产品粒度返回采集状态、数据集清单与质量信息。

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

取数前提

两个条件缺一不可

state == "SUCCEEDED"  &&  available == true

只满足其一都不能取数。

这两个条件表示产品结果可以交付。若 qualityStatus=WARNINGcollectionResult=COMPLETED_WITH_WARNINGS,仍需把质量明细与业务数据一起落库, 由下游按可接受的覆盖范围决定是否继续。

state含义是否终态
PENDING尚未产生终态(排队中或采集中)
SUCCEEDED该产品采集完成
FAILED该产品最终失败
SKIPPED本单未执行该产品

retryable 说明该失败是否可由平台自动重试; error_code / error_message 给出失败原因。

响应示例

json
{
  "external_order_id": "BANK-20260812-0001",
  "authorization_code": "550e8400-e29b-41d4-a716-446655440000",
  "job_id": "1e3f2f55-8da4-4ba9-b941-84860eb1d243",
  "attempt_id": "a2ad4ec4-b878-42c5-b623-4d962f350e72",
  "product": "INVOICE",
  "state": "SUCCEEDED",
  "available": true,
  "dataset_count": 4,
  "record_count": 2841,
  "qualityStatus": "PASSED",
  "qualityIssues": [],
  "datasets": [
    { "id": "ds-0001", "name": "发票基础信息", "product": "invoice", "row_count": 1204 }
  ],
  "artifacts": [],
  "error_code": null,
  "error_message": null,
  "retryable": false,
  "available_at": "2026-08-12T10:41:07Z"
}

常见错误

HTTPcode含义
404CHANNEL_ORDER_NOT_FOUND订单不存在
404PRODUCT_NOT_REQUESTED本单未申请该产品
422INVALID_PRODUCTproduct 不是 TAX / INVOICE

PDF 状态不在这里

PDF 报告状态不通过产品接口查询,应调用 POST /api/channel/data/reports/status,见 PDF 与 HTML 报告

推荐的等待策略

mermaid
flowchart TD
  A[收到 authorization_url] --> B[等待回调]
  B -->|收到终态回调| C[验签 + 按 event_id 幂等落库]
  B -->|超时未收到| D[轮询订单查询, 间隔 15-30 秒]
  D -->|state 未结束| D
  D -->|state = SUCCESS| E[逐产品查询]
  C --> E
  E -->|SUCCEEDED 且 available| F[取数]
  E -->|FAILED| G[读 error_code 决定重试或转人工]

适配平台 1.5.3 · 客户交付 R4.4;本文档仅供已签约渠道客户使用。