主题
发票完整数据交付
默认字段为 invoice.flat-fields.v4,本页接口参考与字段目录按默认新版展示。平台为渠道开启“使用旧版发票 ALL 字段”时,已有和新建订单改用 invoice.flat-fields.v3.1,无需增加请求参数;可下载旧版字段表和旧版记录 Schema。开关只影响发票 ALL,不影响税务、STANDARD 或 Compatible_V1。切换后从第一页或游标首请求重新读取,新旧分页和分片不可混用。
新建授权或订单默认使用 PACKAGE 分片包,同时支持游标。三种交付方式都在 records 中返回渠道当前生效的平铺记录(默认 invoice.flat-fields.v4),使用相同的六类记录角色;交付外壳版本仍为 invoice.v1。
| 交付方式 | 接口 |
|---|---|
分片包(PACKAGE,默认,同时支持游标) | /api/v2/channel/invoices/package/*,分批下载文件 |
固定游标分页(CURSOR) | /api/v2/channel/invoices/cursor,按游标续拉 |
普通接口(LEGACY) | /api/channel/data/invoice/all,按页码读取 |
创建授权时可显式传 invoice_delivery_mode: "CURSOR" 或 "LEGACY" 选择其他方式。已有订单沿用创建时保存的方式,续期或重试不改变它。普通接口按页码取数仍可使用。
不采发票且省略交付方式的请求归一为 LEGACY;显式选择 CURSOR 或 PACKAGE 仍要求采集发票。只选择 STANDARD 时仍按标准接口取数,不会因默认分片包而额外申请 ALL。Compatible_V1 使用独立的 resultFormat 参数,见兼容协议。
普通接口
请求 POST /api/channel/data/invoice/all。保留鉴权信息和订单身份,第二页只需把 pageNum 改为 2:
json
{
"channelCode": "BANK",
"channelOrderNo": "BANK-20261015-0001",
"orderNo": "订单查询返回的标识",
"pageNum": 2,
"pageSize": 100
}无需传 invoiceFormat、snapshotId 或 cursor。invoiceFormat 如需显式填写,只支持 FLAT。普通接口不接受游标参数。
响应 data.records 是本页记录,current 为当前页、pages 为总页数、total 为总记录行数。同一轮固定 pageSize,读取到 current >= pages 时结束;total=0 的成功空结果不再翻页。普通页码没有客户端快照锁定参数,采集批次或字段版本变化后应整轮重读,不能只用订单号加页码覆盖历史批次。invoiceCount 是发票张数,无法核实时为 null;不能用行数替代张数。
真实脱敏第一页响应 · 末页响应 · 全部业务记录 · 字段字典
这些响应按同一真实订单的保留资料脱敏重建,页面示例每页 10 条。完整业务文件含该样本的全部记录,但不带接口外壳;来源说明见真实脱敏样例。
游标接口
请求 POST /api/v2/channel/invoices/cursor,用 limit(也接受 pageSize)控制返回大小;后续把响应 nextCursor 作为请求的 cursor,直至 nextCursor=null。响应 datasetId 标识当前快照,同一有效快照内续读 records;批次、来源或字段版本变化后,旧游标可能失效,须从首请求开始并重建本轮结果。
V2 请求不传 channelCode,使用同一订单身份,并带四个鉴权头,见签名规则。成功外壳为 success 和 data,不套用普通接口的 code=0。data.total 为完整快照的记录数,data.count 为本页记录数。不要把此接口的 cursor 传到普通接口。
分片包
依次调用 /api/v2/channel/invoices/package/status、/api/v2/channel/invoices/package/manifest。状态为 READY 时,用响应的 exportId 获取清单。
包格式为 JSON_GZIP_PARTS。按清单 partNo 顺序下载 downloadUrl,校验压缩文件的 SHA-256,再解压 JSON 并读取 records。totalSize 是压缩后的字节数。
下载地址已带签名,不另加渠道签名头;地址过期后重新获取清单。字段版本或来源变化后,从状态接口取得当前导出,不拼接新旧包。历史冻结文件不改写;已签名的当前格式文件在权限和有效期内可继续下载,已停用格式的包需重新查询状态生成新包。
错误处理
| 错误 | 处理 |
|---|---|
INVOICE_CURSOR_INVALID / INVOICE_CURSOR_EXPIRED | 核对订单和游标;游标不属于当前快照或已过期时,从首次游标请求重新读取 |
INVOICE_SCHEMA_RETIRED | 旧快照或包的格式已停用,重新查询游标或分片包状态 |
INVOICE_DATASET_NOT_READY | 尚无可用资料,不能当作零发票 |
INVOICE_DELIVERY_MODE_MISMATCH | 使用该订单创建时选定的交付方式 |
仅已确认无发票的订单返回成功空记录。整票、商品明细和专项明细分属不同记录角色,统计时分别处理,见发票数据说明。