Skip to content

获取数据

数据接口都在 /api/channel/data/* 下,使用业务码信封返回。

前提

取数前必须确认

对应产品 state == "SUCCEEDED"available == true。 取数范围不得超过创建授权时已选择的输出类型。

公共请求体

税务、发票和报告查询都使用同一个三元组:

json
{
  "channelCode": "BANK",
  "channelOrderNo": "BANK-20260812-0001",
  "orderNo": "1e3f2f55-8da4-4ba9-b941-84860eb1d243"
}
字段取值
channelCode渠道编码,必须与 X-Channel-Key 所属渠道一致,否则 403
channelOrderNo创建授权时的 external_order_id
orderNo订单查询返回的 job_id(也接受 authorization_code

业务码信封

json
{
  "code": 200,
  "msg": "操作成功",
  "message": "操作成功",
  "success": true,
  "data": {}
}

只用 success 判定成功

接口成功码
/tax/all/tax/standardTable/tax/results200
/invoice/all0
/invoice/standard/invoice/results200
/reports/status200

差异是历史客户端契约的一部分,不会改变。一律用 success === true 判定, code 只用于失败分支细分。

失败业务码

code含义处理
60003正在采集15–30 秒后重试当前查询
60002失败或无可交付数据查询订单/产品的错误信息
10000任务不存在核对渠道编码与两类订单号
10001参数或输出范围错误按授权范围修正请求

接口一览

税务

接口返回
POST /api/channel/data/tax/all税局原始/映射数据,固定 37 个顶层节点
POST /api/channel/data/tax/standardTabletax-standard.v2,固定完整 24 个模块
POST /api/channel/data/tax/results按授权范围一次返回 ALL / STANDARD / WORKER_RAW

字段口径与模块状态见税务数据契约

1.5.3 的 TAX ALL 快照不会漂移

同一任务首次生成的 TAX ALL 会固化已发布映射修订与目录哈希;后台后续调整映射 不会改写已经生成的快照。客户端不传映射版本参数,但应连同 job_idattempt_id 和质量摘要一起保存结果。

发票

接口返回
POST /api/channel/data/invoice/all原始发票明细分页,默认 100、上限 1,000 条/页
POST /api/channel/data/invoice/standardinvoice-standard.v2,固定完整 13 个模块
POST /api/channel/data/invoice/results按授权范围一次返回多种输出

字段口径与记录角色见发票数据契约

组合接口

/tax/results/invoice/results 用一次调用取回多种输出,减少往返:

json
{
  "channelCode": "BANK",
  "channelOrderNo": "BANK-20260812-0001",
  "orderNo": "1e3f2f55-8da4-4ba9-b941-84860eb1d243",
  "taxDataTypes": ["ALL", "STANDARD"]
}
  • 省略 taxDataTypes / invoiceDataTypes 时,默认取本次授权已选择的全部类型。
  • 显式传入时必须是授权范围的子集,否则 10001
  • WORKER_RAW 返回原始制品清单(含 downloadUrl)。
  • 任一子结果未就绪时,整体返回该子结果的业务码(如 60003),不会返回部分数据。

响应结构:

json
{
  "code": 200,
  "success": true,
  "data": {
    "ALL": {},
    "STANDARD": { "schemaVersion": "tax-standard.v2" },
    "WORKER_RAW": { "artifacts": [] }
  }
}

组合接口的成功码统一是 200

即使其中包含发票 ALL 子结果,/invoice/results 的成功码仍是 200, 而不是单接口的 0

发票分页

json
{
  "channelCode": "BANK",
  "channelOrderNo": "BANK-20260812-0001",
  "orderNo": "1e3f2f55-8da4-4ba9-b941-84860eb1d243",
  "pageNum": 1,
  "pageSize": 500
}

响应 data 是标准分页对象:

json
{
  "current": 1,
  "size": 500,
  "pages": 6,
  "total": 2841,
  "records": [],
  "searchCount": true,
  "optimizeCountSql": true,
  "countId": null,
  "maxLimit": null,
  "orders": []
}

total 不是发票张数

total原始行数总计。一张发票的多个商品行会产生多条记录。 需要发票张数时使用 invoiceCount,见发票数据契约

落库建议:

  • 逐页流式落库,不要先在内存里拼完整数组。
  • orderNo + pageNum 做幂等键,某页失败只重试该页。
  • 分页参数格式错误返回 10001

发票量大时改用 CURSOR 或 PACKAGE

取数决策

mermaid
flowchart TD
  A[产品 SUCCEEDED 且 available] --> B{要哪种数据}
  B -->|税务| C[tax/all 或 tax/standardTable 或 tax/results]
  B -->|发票 STANDARD| D[invoice/standard]
  B -->|发票 ALL| E{数据量}
  E -->|小| F[invoice/all 分页]
  E -->|边拉边处理| G[V2 cursor]
  E -->|大批量离线| H[V2 package]
  B -->|原始表格文件| I[artifacts downloadUrl]
  B -->|PDF / HTML 报告| J[reports/status 或 htmlReports]

鉴权

/api/channel/data/* 始终要求 X-Channel-Key。渠道可被平台配置为 「仅校验 Key」或「强制校验 Key + Timestamp + Nonce + Signature」。

若提交了任一签名头,三项签名头必须齐全,否则 401 CHANNEL_SIGNATURE_REQUIRED。 签名算法见鉴权与签名

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