2.8 KiB
2.8 KiB
Contract: IF-REV-008 发票申请接口
1. 合同定位
本合同用于固化 REV-005 一期后台发票申请 / 单笔与批量开票接口口径,服务于后续正式接口文档修订、任务拆解与 backend 实施。
2. 适用范围
适用场景:
- 后台营业收费员 / 财务人员发起单笔开票
- 后台按已收费账单集合批量发起开票
- 生成发票申请记录并提交
SYS-008
不适用范围:
- 客户侧直接申请开票
- 原始单账单直接任意部分金额开票
- 复杂拆分/合并开票策略配置
3. 请求合同
| 字段 | 类型 | 必填 | 说明 | 约束 |
|---|---|---|---|---|
| applicationNo | String | 否 | 发票申请单号 | 服务端生成,作为幂等主键之一 |
| chargeIds | Array | 是 | 关联账单 ID 列表 | 所有账单必须已收费且未开票 |
| custId | Long | 是 | 客户 ID | 必须存在可用开票信息 |
| invoiceType | String | 是 | 发票类型 | ELECTRONIC / PAPER |
| invoiceTitle | String | 是 | 发票抬头 | 来自 biz_cust_invoice 或后台确认输入 |
| taxNo | String | 否 | 纳税人识别号 | 企业抬头场景建议必填 |
| String | 否 | 接收邮箱 | 电子发票场景优先使用 | |
| mobile | String | 否 | 接收手机号 | 推送或通知场景使用 |
| sourceChannel | String | 是 | 来源渠道 | COUNTER / FINANCE_BACKOFFICE |
| remark | String | 否 | 申请备注 | 进入操作留痕 |
4. 响应合同
| 字段 | 类型 | 说明 | 约束 |
|---|---|---|---|
| invoiceId | Long | 发票申请记录 ID | 对应 biz_invoice.id |
| applicationNo | String | 发票申请单号 | 后续查询与幂等主键 |
| invoiceStatus | String | 当前状态 | SUBMITTED / PENDING / REJECTED |
| sysRequestNo | String | SYS-008 受理号 |
异步查询主键 |
| msg | String | 处理说明 | 不可开票时返回明确原因 |
5. 共性规则
- 所有账单必须处于“已收费、未开票、未作废”状态。
- 一期不支持对原始单账单直接任意部分金额开票。
- 如需多张发票,需来源于拆账/分账后的账单集合。
- 幂等控制可采用
applicationNo或custId + chargeIds组合。 - 申请成功后必须生成查询补偿任务,不可依赖回调作为唯一结果来源。
- 所有申请动作必须写入操作留痕。
6. 物理承接口径
| 逻辑对象 | 物理承接 |
|---|---|
| 发票申请主对象 | biz_invoice |
| 客户开票信息 | biz_cust_invoice |
| 税率配置 | biz_invoice_taxrate |
| 关联账单 | biz_charge* |
| 操作留痕 | biz_operat_log* |
7. 验收关注点
- 是否支持后台单笔 / 批量已收费账单开票
- 是否拒绝原始单账单直接部分金额开票
- 是否生成申请单号与查询主键
- 是否与
SYS-008查询兜底模式一致