From 3fee9a2c181f024f1a6edd3e9127be97187258bf Mon Sep 17 00:00:00 2001 From: tangweijie <877588133@qq.com> Date: Tue, 24 Mar 2026 17:50:46 +0800 Subject: [PATCH] docs: add Nuoshuitong integration design pack Add a Nuoshuitong documentation set covering the implementation checklist, split interface spec notes, normalized enums, and database/DDL guidance so follow-on integration can start from a consistent source of truth. Constraint: Current phase is documentation-first and must not require backend/frontend code changes Rejected: Merge the material directly into formal master design docs now | would broaden scope before the integration model and dialect strategy are reviewed Directive: Treat these guides as integration-layer inputs until they are reconciled with formal technical design masters Confidence: high Scope-risk: moderate Co-Authored-By: Claude Sonnet 4.6 (1M context) --- ...诺网-诺税通销项服务对外接口规范v1.3.18.docx | Bin 0 -> 655725 bytes docs/guides/NUOSHUITONG_DATABASE_DESIGN.md | 543 +++++ docs/guides/NUOSHUITONG_DDL_DRAFT.md | 529 +++++ .../01_概述与接入约定.md | 53 + .../02_开票主链路.md | 37 + .../03_作废重开与冲红.md | 37 + .../04_红字信息表.md | 37 + .../05_红字确认单.md | 36 + .../06_库存票源与打印.md | 42 + .../07_设备企业与配置.md | 41 + .../08_车辆辅助与回传.md | 40 + .../NUOSHUITONG_INTERFACE_SPEC/09_专项能力.md | 40 + .../10_附录_通用状态码.md | 41 + .../NUOSHUITONG_INTERFACE_SPEC/11_枚举清单.md | 147 ++ .../12_标准枚举字典.md | 341 +++ .../NUOSHUITONG_INTERFACE_SPEC/README.md | 130 ++ .../interfaces/乐企授信额度下载_退回接口.md | 106 + .../interfaces/乐企授信额度更新有效期接口.md | 104 + .../interfaces/乐企数电发票库存申领接口.md | 170 ++ .../interfaces/乐企查询数电库存接口.md | 105 + .../interfaces/企业设备查询接口.md | 137 ++ .../interfaces/企业设备状态查询接口.md | 178 ++ .../企业车架号等信息查询结果回传接口.md | 192 ++ .../创建_查询企业车架号_合格证状态接口.md | 132 ++ .../interfaces/创建开票设备接口.md | 230 ++ .../interfaces/删除发票信息接口.md | 117 + .../interfaces/刷新可下载发票库存接口.md | 118 + .../刷新获取开票设备实时发票库存接口.md | 118 + .../刷新获取税盘实时成品油库存接口.md | 118 + .../interfaces/发票交付.md | 181 ++ .../interfaces/发票作废申请接口.md | 146 ++ .../interfaces/发票列表查询接口.md | 2057 +++++++++++++++++ .../interfaces/发票库存余量查询接口.md | 146 ++ .../interfaces/发票重开接口.md | 186 ++ .../interfaces/审核开票删除回传接口.md | 140 ++ .../interfaces/开票结果回传.md | 620 +++++ .../interfaces/开票结果回传_含明细.md | 1825 +++++++++++++++ .../interfaces/开票结果查询接口.md | 1995 ++++++++++++++++ .../interfaces/开票请求接口.md | 2056 ++++++++++++++++ .../interfaces/录入自定义字段.md | 106 + .../interfaces/快捷冲红接口.md | 402 ++++ .../interfaces/成品油库存下载接口.md | 122 + .../interfaces/批量查询发票xmlUrl接口.md | 124 + .../interfaces/批量获取信息转换配置接口.md | 100 + .../interfaces/批量获取备注配置信息接口.md | 148 ++ .../interfaces/抄报清卡.md | 121 + .../interfaces/授信额度刷新接口.md | 124 + .../interfaces/收票入库接口_本地提取发票.md | 1148 +++++++++ .../interfaces/新增_修改企业开票信息.md | 123 + .../interfaces/更新发票票据关联状态接口.md | 107 + .../interfaces/查询可下载发票库存列表接口.md | 125 + .../interfaces/查询成品油库存列表接口.md | 121 + .../interfaces/查询授信额度数据.md | 136 ++ .../查询获取车架号是否可开票结果接口.md | 134 ++ .../根据业务标识查询对应值列表接口.md | 127 + .../interfaces/登录扫码认证确认接口.md | 255 ++ .../interfaces/票源下载接口.md | 117 + .../interfaces/空白发票作废申请.md | 111 + .../interfaces/红字信息表_红字确认单回传.md | 644 ++++++ .../interfaces/红字信息表下载接口.md | 187 ++ .../interfaces/红字信息表撤销接口.md | 101 + .../interfaces/红字信息表查询接口.md | 407 ++++ ...字信息表申请接口_不支持拆分_不推荐使用.md | 418 ++++ .../interfaces/红字信息表申请接口_支持拆分.md | 410 ++++ .../interfaces/红字确认单下载接口.md | 186 ++ .../interfaces/红字确认单撤销接口.md | 185 ++ .../interfaces/红字确认单查询接口.md | 501 ++++ .../interfaces/红字确认单申请接口.md | 526 +++++ .../interfaces/红字确认单确认接口.md | 201 ++ .../interfaces/自定义票源下载接口.md | 132 ++ .../interfaces/获取DAT加密包文件流接口.md | 106 + .../获取下一张发票号码代码接口_A9机柜.md | 119 + .../interfaces/获取关联发票接口.md | 147 ++ .../interfaces/获取发票勾选入账状态接口.md | 164 ++ .../interfaces/获取指定票种当前代码号码.md | 124 + ...获取查询数电登录认证_开票实名认证二维码.md | 118 + .../interfaces/获取纸票打印编号接口.md | 127 + .../蓝字发票剩余可冲红的金额_税额查询接口.md | 197 ++ .../NUOSHUITONG_PG_OPENGAUSS_DDL_GUIDE.md | 342 +++ .../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md | 555 +++++ 80 files changed, 22919 insertions(+) create mode 100644 docs/design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx create mode 100644 docs/guides/NUOSHUITONG_DATABASE_DESIGN.md create mode 100644 docs/guides/NUOSHUITONG_DDL_DRAFT.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/01_概述与接入约定.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/02_开票主链路.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/03_作废重开与冲红.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/04_红字信息表.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/05_红字确认单.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/06_库存票源与打印.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/07_设备企业与配置.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/08_车辆辅助与回传.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/09_专项能力.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/10_附录_通用状态码.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/11_枚举清单.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/12_标准枚举字典.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/README.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度下载_退回接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度更新有效期接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企数电发票库存申领接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企查询数电库存接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备查询接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备状态查询接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业车架号等信息查询结果回传接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建_查询企业车架号_合格证状态接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建开票设备接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/删除发票信息接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新可下载发票库存接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取开票设备实时发票库存接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取税盘实时成品油库存接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票交付.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票作废申请接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票列表查询接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票库存余量查询接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票重开接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/审核开票删除回传接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传_含明细.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果查询接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票请求接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/录入自定义字段.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/快捷冲红接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/成品油库存下载接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量查询发票xmlUrl接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取信息转换配置接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取备注配置信息接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/抄报清卡.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/授信额度刷新接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/收票入库接口_本地提取发票.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/新增_修改企业开票信息.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/更新发票票据关联状态接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询可下载发票库存列表接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询成品油库存列表接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询授信额度数据.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询获取车架号是否可开票结果接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/根据业务标识查询对应值列表接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/登录扫码认证确认接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/票源下载接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/空白发票作废申请.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表_红字确认单回传.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表下载接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表撤销接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表查询接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_不支持拆分_不推荐使用.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_支持拆分.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单下载接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单撤销接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单查询接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单申请接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单确认接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/自定义票源下载接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取DAT加密包文件流接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取下一张发票号码代码接口_A9机柜.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取关联发票接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取发票勾选入账状态接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取指定票种当前代码号码.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取查询数电登录认证_开票实名认证二维码.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取纸票打印编号接口.md create mode 100644 docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/蓝字发票剩余可冲红的金额_税额查询接口.md create mode 100644 docs/guides/NUOSHUITONG_PG_OPENGAUSS_DDL_GUIDE.md create mode 100644 docs/guides/NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md diff --git a/docs/design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx b/docs/design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx new file mode 100644 index 0000000000000000000000000000000000000000..f9a8a5a791fb1d61b612987d1f6e8ff9942bcedc GIT binary patch literal 655725 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⩔- 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%0Dki%Zh-$31u-tRDhbVrPP2U>ONyy0_G!lE;hpB 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

VJ z_dh;E4q*F`LkQ8hSnT@0U2@qYHTj2b+?Z`spw3gg;`;nG&7Fj^aKG_hK=+Cyk34C?qDH4O2=A!eRhv{O8E89rm5R;igvE1TPzMT(zWU-l!VKTFQ?QjcuKZ z=1^WBr)=^~0)(3a?E%hCNXFu>yHrVl5HhB%&6{21j-Qc8YJKhNH(?|yEC-?xc{#m9 z@Y5x^o%4=8i0`-(?D4k$-7+e`87S)hiN6hm9o4hOIM}A3^?_+!IFSY zOjV-;z|u82JbTq^ru+Wf+4EH*-1yDdG!UK{M>_G|71QyC{7Gdh{!4)tg91GbIMRXE9 z_enAI)>dTF`27rh+}AvB;JxuyyRDHBLqG|j_~_sXC>HttA64%hA4$}0fyTCN+qONi zZ9AFRww+9Ddt%$h#GKg1>-oNW-@EV6s_N5qe$`#)?7j9{dx_=22_X33y|iP!v@)By(aOH3GL&}bMSjF#|w^y`pZ`1aVqhNrK@N!uw(A~Vm>hL&A z{-w|+c*$j@OdLUnJN26aTAT47@)5naxXy>?!9Nh>PdDrTqkM8AY~%i4ZVf}V)P^hy z7Nxo+y_UUvVoy|h z{En*s*0XbLCIr(t`bVB^CmAN6tj-}7p}v)bV#DgpWoDt> zlQJyHr1Vvhkh& z1xHO%%9UtMIMbbt#e|nhYZCgvK?7K;$cs*E&Oj5j-OgB4lwLYkakgkKz}yfL@493@ zJXE}jfZXB&5Ja7FU@y3nkAedt2zsh5b%E!tne;Y54$dQn5p&#*z%fb;pQoQFRY4Sn z(-81qc5hlNb9KKE? znnuuNP(Y7-M!QNU>+BG_kqx@MEZi34BVLmt@rOaa;3N26+60#0YKyzrC#pDDNy6B; z)<{5Z98zK_!u=0!8}oM)a4E&eg!==72J@w_)~)Tl{EVA$|B?TAMEVPE<=LZR>e14j z5wrm^c7TXdd`c}B+ZjWMVXjvF9i#sXjBxsF!?@>-hW$sdPgO|31&6`j$$IX|wOMXi zA?^-$vi{i!Vp>FlX?sv?xy;Ah3⪙RBbddf?R6?|76malD$ORB>xnwfgZ9bXz?SQ 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®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

N1dS0$D!>Fd-!s1PMt6QaHUCe_d|wod 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 M0!-M=zd>0V0KHnXQvd(} literal 0 HcmV?d00001 diff --git a/docs/guides/NUOSHUITONG_DATABASE_DESIGN.md b/docs/guides/NUOSHUITONG_DATABASE_DESIGN.md new file mode 100644 index 0000000..87c6707 --- /dev/null +++ b/docs/guides/NUOSHUITONG_DATABASE_DESIGN.md @@ -0,0 +1,543 @@ +# 诺税通对接数据库设计草案 + +## 文档信息 + +| 项目 | 内容 | +| --- | --- | +| 项目名称 | 福建水务营收系统 | +| 文档类型 | 外部平台对接数据库设计草案 | +| 对接平台 | 诺税通 saas | +| 适用范围 | 销项开票、发票查询、文件获取、交付、作废、红字单据、设备与库存、企业开票配置 | +| 版本 | v1.0 | +| 日期 | 2026-03-24 | +| 状态 | 草案 | + +## 适用说明 + +本文档用于支撑福建水务营收系统对接诺税通 saas 时的数据库落库设计。内容聚焦对接层数据承接,不直接替代正式业务数据库设计主文档,而是作为外部平台集成方案、领域建模和后续 DDL 细化的基础输入。 + +当前口径基于以下资料统一整理: +- `docs/guides/NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md` +- `docs/guides/NUOSHUITONG_INTERFACE_SPEC/` + +## 设计目标 + +本设计用于支撑以下闭环: +- 开票申请与状态同步 +- 发票票面文件获取 +- 发票交付与补发 +- 发票作废、重开、冲红 +- 红字信息表与红字确认单管理 +- 开票设备与票源库存管理 +- 企业开票配置与规则缓存 +- 平台回调与请求日志追踪 + +## 表清单总览 + +| 表名 | 说明 | +| --- | --- | +| `ns_invoice` | 发票主表 | +| `ns_invoice_item` | 发票明细表 | +| `ns_invoice_delivery` | 发票交付记录表 | +| `ns_invoice_reversal` | 发票逆向处理表 | +| `ns_red_document` | 红字单据主表 | +| `ns_red_document_item` | 红字单据明细表 | +| `ns_billing_device` | 开票设备表 | +| `ns_invoice_stock_snapshot` | 发票库存快照表 | +| `ns_enterprise_billing_config` | 企业开票配置表 | +| `ns_platform_event_log` | 平台回调事件表 | +| `ns_platform_request_log` | 平台请求响应日志表 | +| `ns_config_dictionary_cache` | 配置字典缓存表(可选) | + +## 命名与通用约定 + +### 表命名 +- 对接域表统一采用 `ns_` 前缀,表示 Nuoshuitong 集成域。 +- 字段命名统一使用下划线命名法。 + +### 通用审计字段 +除快照类或纯日志类表外,建议统一具备: +- `created_at` +- `updated_at` +- `created_by` +- `updated_by` + +### 状态字段约定 +建议状态类字段统一采用“编码 + 文本”双承接: +- `*_status` +- `*_status_text` + +### JSON 字段约定 +当平台返回结构复杂、且短期内不适合完全拆表时,可保留 JSON/TEXT 字段承接,例如: +- `specific_factor_json` +- `request_body` +- `response_body` +- `payload_json` + +## 详细表结构草案 + +## `ns_invoice` 发票主表 + +### 用途 +承接发票从申请、查询、回调、文件获取到交付的主生命周期。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `sys_request_no` | varchar(64) | 是 | 系统侧请求号,建议唯一 | +| `order_no` | varchar(64) | 否 | 业务订单号 | +| `source_business_type` | varchar(32) | 否 | 来源业务类型 | +| `source_business_id` | varchar(64) | 否 | 来源业务主键 | +| `platform_invoice_serial_num` | varchar(64) | 否 | 平台发票流水号 | +| `invoice_id` | varchar(64) | 否 | 平台发票 ID | +| `invoice_code` | varchar(32) | 否 | 发票代码 | +| `invoice_no` | varchar(32) | 否 | 发票号码 | +| `all_electronic_invoice_no` | varchar(64) | 否 | 数电票号码 | +| `seller_tax_no` | varchar(32) | 是 | 销方税号 | +| `buyer_name` | varchar(200) | 否 | 购方名称 | +| `buyer_tax_no` | varchar(64) | 否 | 购方税号 | +| `buyer_address` | varchar(255) | 否 | 购方地址 | +| `buyer_tel` | varchar(64) | 否 | 购方电话 | +| `buyer_account` | varchar(255) | 否 | 购方开户行及账号 | +| `invoice_type` | varchar(16) | 否 | 蓝票/红票 | +| `invoice_line` | varchar(16) | 否 | 发票票种 | +| `list_flag` | smallint | 否 | 清单标志 | +| `with_tax_flag` | smallint | 否 | 含税标志 | +| `notify_phone` | varchar(64) | 否 | 交付手机号 | +| `notify_email` | varchar(128) | 否 | 交付邮箱 | +| `cc_phone` | varchar(256) | 否 | 抄送手机号 | +| `cc_email` | varchar(256) | 否 | 抄送邮箱 | +| `total_amount` | decimal(18,2) | 否 | 含税总金额 | +| `amount_without_tax` | decimal(18,2) | 否 | 不含税总金额 | +| `tax_amount` | decimal(18,2) | 否 | 税额 | +| `request_status` | varchar(32) | 是 | 请求状态 | +| `invoice_status` | varchar(32) | 否 | 开票状态 | +| `invoice_status_text` | varchar(255) | 否 | 状态说明 | +| `invalid_state` | varchar(32) | 否 | 作废状态 | +| `delivery_status` | varchar(32) | 否 | 交付状态 | +| `sync_status` | varchar(32) | 否 | 平台同步状态 | +| `pdf_url` | varchar(1024) | 否 | PDF 地址 | +| `ofd_url` | varchar(1024) | 否 | OFD 地址 | +| `image_url` | varchar(1024) | 否 | 图片地址 | +| `paper_pdf_url` | varchar(1024) | 否 | 纸票 PDF 地址 | +| `invoice_time` | datetime | 否 | 开票时间 | +| `request_time` | datetime | 否 | 请求时间 | +| `invalid_time` | datetime | 否 | 作废时间 | +| `last_sync_time` | datetime | 否 | 最近同步时间 | +| `ori_invoice_code` | varchar(32) | 否 | 原发票代码 | +| `ori_invoice_no` | varchar(32) | 否 | 原发票号码 | +| `old_electronic_invoice_no` | varchar(64) | 否 | 原数电票号码 | +| `remark` | varchar(1000) | 否 | 备注 | +| `specific_factor_json` | text | 否 | 特殊因子 JSON | +| `latest_result` | varchar(1000) | 否 | 最近一次平台结果摘要 | +| `latest_error` | varchar(1000) | 否 | 最近一次错误摘要 | +| `try_count` | int | 否 | 同步/补偿次数 | +| `last_try_time` | datetime | 否 | 最近重试时间 | +| `next_try_time` | datetime | 否 | 下次重试时间 | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | +| `created_by` | varchar(64) | 否 | 创建人 | +| `updated_by` | varchar(64) | 否 | 更新人 | + +### 主键与唯一约束建议 +- 主键:`id` +- 唯一约束:`sys_request_no` +- 可选唯一约束:`platform_invoice_serial_num` +- 可选业务唯一约束:`seller_tax_no + invoice_code + invoice_no` + +### 索引建议 +- `idx_ns_invoice_order_no` +- `idx_ns_invoice_status` +- `idx_ns_invoice_seller_tax_no` +- `idx_ns_invoice_invoice_time` +- `idx_ns_invoice_next_try_time` + +### 状态字段建议 +#### `request_status` +- `DRAFT` +- `PRECHECK_FAILED` +- `REQUESTED` +- `PROCESSING` +- `SUCCESS` +- `FAILED` + +#### `invoice_status` +- `ISSUING` +- `ISSUED` +- `ISSUE_FAILED` +- `CANCELLED` +- `CANCEL_FAILED` +- `RED_PROCESSED` + +#### `delivery_status` +- `NOT_DELIVERED` +- `DELIVERING` +- `DELIVERED` +- `DELIVERY_FAILED` + +## `ns_invoice_item` 发票明细表 + +### 用途 +保存开票请求与平台返回的发票明细。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `invoice_id` | bigint | 是 | 发票主表 ID | +| `line_no` | int | 是 | 行号 | +| `goods_name` | varchar(255) | 是 | 商品名称 | +| `goods_code` | varchar(64) | 否 | 税收分类编码 | +| `spec` | varchar(128) | 否 | 规格型号 | +| `unit` | varchar(64) | 否 | 单位 | +| `quantity` | decimal(18,6) | 否 | 数量 | +| `unit_price` | decimal(18,6) | 否 | 单价 | +| `amount_with_tax` | decimal(18,2) | 否 | 含税金额 | +| `amount_without_tax` | decimal(18,2) | 否 | 不含税金额 | +| `tax_rate` | decimal(8,4) | 否 | 税率 | +| `tax_amount` | decimal(18,2) | 否 | 税额 | +| `detail_type` | smallint | 否 | 行类型 | +| `favoured_policy_flag` | smallint | 否 | 优惠政策标志 | +| `zero_rate_flag` | smallint | 否 | 零税率标志 | +| `favoured_policy_name` | varchar(128) | 否 | 优惠政策名称 | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | + +### 约束建议 +- 外键:`invoice_id -> ns_invoice.id` +- 唯一约束:`invoice_id + line_no` + +## `ns_invoice_delivery` 发票交付记录表 + +### 用途 +记录首次交付、补发和交付失败结果。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `invoice_id` | bigint | 是 | 发票 ID | +| `delivery_type` | varchar(16) | 是 | `SMS` / `EMAIL` | +| `delivery_target` | varchar(256) | 是 | 发送目标 | +| `cc_target` | varchar(512) | 否 | 抄送目标 | +| `delivery_status` | varchar(32) | 是 | 交付状态 | +| `delivery_message` | varchar(1000) | 否 | 平台返回信息 | +| `delivery_attempt_no` | int | 是 | 第几次交付 | +| `is_retry` | smallint | 是 | 是否补发 | +| `response_code` | varchar(32) | 否 | 平台响应码 | +| `response_body` | text | 否 | 平台响应体 | +| `delivery_time` | datetime | 否 | 交付时间 | +| `created_at` | datetime | 是 | 创建时间 | + +### 索引建议 +- `idx_ns_invoice_delivery_invoice_id` +- `idx_ns_invoice_delivery_status` + +## `ns_invoice_reversal` 发票逆向处理表 + +### 用途 +记录作废、冲红、重开、空白票作废等逆向业务动作。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `invoice_id` | bigint | 是 | 原发票 ID | +| `reversal_type` | varchar(32) | 是 | `CANCEL` / `FAST_RED` / `REOPEN` / `BLANK_CANCEL` | +| `source_invoice_code` | varchar(32) | 否 | 原票代码 | +| `source_invoice_no` | varchar(32) | 否 | 原票号码 | +| `invalid_reason` | varchar(32) | 否 | 作废原因编码 | +| `specific_reason` | varchar(500) | 否 | 具体原因 | +| `request_status` | varchar(32) | 是 | 请求状态 | +| `reversal_status` | varchar(32) | 否 | 逆向状态 | +| `platform_result_code` | varchar(32) | 否 | 平台响应码 | +| `platform_result_msg` | varchar(1000) | 否 | 平台响应信息 | +| `target_invoice_id` | bigint | 否 | 新票 ID | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | + +### 状态建议 +- `INIT` +- `CHECKING` +- `REQUESTED` +- `SUCCESS` +- `FAILED` +- `REJECTED` + +## `ns_red_document` 红字单据主表 + +### 用途 +统一承接红字信息表与红字确认单。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `invoice_id` | bigint | 否 | 关联蓝票 ID | +| `document_type` | varchar(16) | 是 | `RED_INFO` / `RED_CONFIRM` | +| `bill_no` | varchar(64) | 否 | 单据编号 | +| `bill_id` | varchar(64) | 否 | 平台单据 ID | +| `bill_info_no` | varchar(64) | 否 | 信息表编号 | +| `bill_confirm_no` | varchar(64) | 否 | 确认单编号 | +| `bill_uuid` | varchar(64) | 否 | 平台 UUID | +| `blue_invoice_code` | varchar(32) | 否 | 蓝票代码 | +| `blue_invoice_no` | varchar(32) | 否 | 蓝票号码 | +| `blue_invoice_number` | varchar(64) | 否 | 蓝票数电号 | +| `blue_invoice_line` | varchar(16) | 否 | 蓝票票种 | +| `bill_type` | varchar(32) | 否 | 红字业务类型 | +| `bill_status` | varchar(32) | 否 | 单据状态 | +| `bill_status_text` | varchar(255) | 否 | 状态说明 | +| `open_status` | varchar(32) | 否 | 开具状态 | +| `back_type` | varchar(16) | 否 | 回传类型 | +| `apply_source` | varchar(32) | 否 | 申请来源 | +| `red_reason` | varchar(255) | 否 | 红字原因 | +| `apply_remark` | varchar(1000) | 否 | 申请备注 | +| `pdf_url` | varchar(1024) | 否 | PDF 地址 | +| `callback_status` | varchar(32) | 否 | 回调处理状态 | +| `last_sync_time` | datetime | 否 | 最近同步时间 | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | + +### 唯一约束建议 +- `bill_no` +- 可选:`bill_id` + +## `ns_red_document_item` 红字单据明细表 + +### 用途 +承接红字申请与确认单明细。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `red_document_id` | bigint | 是 | 红字单据主表 ID | +| `line_no` | int | 是 | 行号 | +| `goods_name` | varchar(255) | 否 | 商品名称 | +| `model` | varchar(128) | 否 | 型号 | +| `unit` | varchar(64) | 否 | 单位 | +| `quantity` | decimal(18,6) | 否 | 数量 | +| `unit_price` | decimal(18,6) | 否 | 单价 | +| `amount` | decimal(18,2) | 否 | 金额 | +| `tax_rate` | decimal(8,4) | 否 | 税率 | +| `tax_amount` | decimal(18,2) | 否 | 税额 | +| `with_tax_flag` | smallint | 否 | 含税标志 | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | + +## `ns_billing_device` 开票设备表 + +### 用途 +承接设备主数据、运行态状态和设备能力。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `tax_num` | varchar(32) | 是 | 企业税号 | +| `company_id` | varchar(64) | 否 | 平台企业 ID | +| `extension_num` | varchar(32) | 否 | 分机号 | +| `machine_num` | varchar(64) | 否 | 机器编号 | +| `terminal_num` | varchar(64) | 否 | 终端号 | +| `server_type` | varchar(32) | 否 | 设备类型 | +| `invoice_type_list` | varchar(512) | 否 | 支持票种列表 | +| `login_account` | varchar(128) | 否 | 登录账号 | +| `equipment_cabinet_id` | varchar(64) | 否 | 机柜 ID | +| `device_status` | varchar(32) | 是 | 在线状态 | +| `report_tax_status` | varchar(32) | 否 | 抄报状态 | +| `clear_card_status` | varchar(32) | 否 | 清卡状态 | +| `lock_date` | varchar(32) | 否 | 锁死日期 | +| `single_billing_limit` | decimal(18,2) | 否 | 单笔限额 | +| `offline_amount` | decimal(18,2) | 否 | 离线金额 | +| `offline_time` | varchar(64) | 否 | 离线时间 | +| `last_status_sync_time` | datetime | 否 | 最近状态同步时间 | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | + +### 唯一约束建议 +- 保守建议:`tax_num + extension_num + machine_num` + +## `ns_invoice_stock_snapshot` 发票库存快照表 + +### 用途 +记录库存查询、刷新、下载、申领后的快照结果。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `device_id` | bigint | 否 | 设备 ID | +| `seller_tax_no` | varchar(32) | 是 | 销方税号 | +| `extension_num` | varchar(32) | 否 | 分机号 | +| `machine_num` | varchar(64) | 否 | 机器编号 | +| `terminal_num` | varchar(64) | 否 | 终端号 | +| `invoice_line` | varchar(16) | 否 | 票种 | +| `invoice_code` | varchar(32) | 否 | 发票代码 | +| `invoice_num_start` | varchar(32) | 否 | 起始号 | +| `invoice_num_end` | varchar(32) | 否 | 结束号 | +| `remain_num` | int | 否 | 剩余数量 | +| `is_default` | smallint | 否 | 是否默认 | +| `source_type` | varchar(16) | 是 | `QUERY` / `REFRESH` / `DOWNLOAD` / `APPLY` | +| `snapshot_time` | datetime | 是 | 快照时间 | +| `created_at` | datetime | 是 | 创建时间 | + +## `ns_enterprise_billing_config` 企业开票配置表 + +### 用途 +承接企业开票默认信息与认证状态。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `tax_num` | varchar(32) | 是 | 企业税号 | +| `company_id` | varchar(64) | 否 | 平台企业 ID | +| `use_scope` | varchar(32) | 否 | 使用范围 | +| `clerker` | varchar(128) | 否 | 开票员 | +| `seller_address` | varchar(255) | 否 | 销方地址 | +| `seller_tel` | varchar(64) | 否 | 销方电话 | +| `seller_bank` | varchar(255) | 否 | 销方开户行 | +| `seller_account` | varchar(255) | 否 | 销方账号 | +| `payee` | varchar(64) | 否 | 收款人 | +| `checker` | varchar(64) | 否 | 复核人 | +| `project_code` | varchar(64) | 否 | 项目编码 | +| `department_name` | varchar(128) | 否 | 部门名称 | +| `auth_status` | varchar(32) | 否 | 认证状态 | +| `last_auth_time` | datetime | 否 | 最近认证时间 | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | + +### 唯一约束建议 +- `tax_num` + +## `ns_platform_event_log` 平台回调事件表 + +### 用途 +保留平台回调原文和处理结果,实现幂等与可追踪。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `event_type` | varchar(32) | 是 | `INVOICE_CALLBACK` / `RED_CALLBACK` | +| `event_key` | varchar(128) | 是 | 幂等键 | +| `seller_tax_no` | varchar(32) | 否 | 销方税号 | +| `business_key` | varchar(128) | 否 | 业务主键 | +| `payload_json` | longtext | 是 | 回调原文 | +| `process_status` | varchar(32) | 是 | `INIT` / `SUCCESS` / `FAILED` / `IGNORED` | +| `process_message` | varchar(1000) | 否 | 处理说明 | +| `processed_at` | datetime | 否 | 处理时间 | +| `created_at` | datetime | 是 | 创建时间 | + +### 唯一约束建议 +- `event_key` + +## `ns_platform_request_log` 平台请求响应日志表 + +### 用途 +记录所有对诺税通平台的请求与响应,便于联调排障。 + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `request_id` | varchar(64) | 是 | 请求 ID | +| `business_type` | varchar(32) | 否 | 业务类型 | +| `business_id` | varchar(64) | 否 | 业务 ID | +| `method_name` | varchar(128) | 否 | 平台方法名 | +| `request_headers_masked` | text | 否 | 脱敏请求头 | +| `request_body` | longtext | 否 | 请求体 | +| `response_body` | longtext | 否 | 响应体 | +| `response_code` | varchar(32) | 否 | 响应码 | +| `success_flag` | smallint | 否 | 成功标识 | +| `error_message` | varchar(1000) | 否 | 错误信息 | +| `created_at` | datetime | 是 | 创建时间 | + +## `ns_config_dictionary_cache` 配置字典缓存表(可选) + +### 用途 +缓存平台字典项,如: +- `requestSrc` +- `invoiceLine` +- `organize` +- `dept` +- `clerk` +- `invalidSrc` + +### 字段建议 + +| 字段名 | 类型建议 | 非空 | 说明 | +| --- | --- | --- | --- | +| `id` | bigint | 是 | 主键 | +| `dict_type` | varchar(64) | 是 | 字典类型 | +| `dict_key` | varchar(128) | 是 | 字典键 | +| `dict_name` | varchar(255) | 否 | 字典名称 | +| `company_id` | varchar(64) | 否 | 企业 ID | +| `company_name` | varchar(255) | 否 | 企业名称 | +| `extra_json` | text | 否 | 扩展 JSON | +| `last_sync_time` | datetime | 否 | 最近同步时间 | +| `created_at` | datetime | 是 | 创建时间 | +| `updated_at` | datetime | 是 | 更新时间 | + +## 表关系建议 + +```mermaid +erDiagram + ns_invoice ||--o{ ns_invoice_item : contains + ns_invoice ||--o{ ns_invoice_delivery : delivers + ns_invoice ||--o{ ns_invoice_reversal : reverses + ns_invoice ||--o{ ns_red_document : relates + ns_red_document ||--o{ ns_red_document_item : contains + ns_billing_device ||--o{ ns_invoice_stock_snapshot : has + ns_enterprise_billing_config ||--o{ ns_billing_device : configures +``` + +## 幂等与审计建议 + +### 回调幂等 +必须依赖: +- `ns_platform_event_log.event_key` + +建议 `event_key` 构成为: +- 发票回调:`sellerTaxNo + invoiceId + invoiceStatus` +- 红字回调:`backType + billNo + billStatus` + +### 请求幂等 +建议: +- `sys_request_no` 全局唯一 +- 开票请求入库前先校验是否已存在同请求号记录 + +## 首期最小落表建议 + +若先追求最小可用,建议优先落以下 7 张表: +- `ns_invoice` +- `ns_invoice_item` +- `ns_invoice_delivery` +- `ns_invoice_reversal` +- `ns_billing_device` +- `ns_invoice_stock_snapshot` +- `ns_platform_request_log` + +第二批补充: +- `ns_red_document` +- `ns_red_document_item` +- `ns_platform_event_log` +- `ns_enterprise_billing_config` + +## 后续建议 + +本文档完成后,建议继续补充两项内容: +- 按表输出正式 DDL 草案 +- 与 `docs/design/03_Technical_Design/01_Database_Design.md` 对齐,纳入正式专项设计口径 diff --git a/docs/guides/NUOSHUITONG_DDL_DRAFT.md b/docs/guides/NUOSHUITONG_DDL_DRAFT.md new file mode 100644 index 0000000..0675caa --- /dev/null +++ b/docs/guides/NUOSHUITONG_DDL_DRAFT.md @@ -0,0 +1,529 @@ +# 诺税通对接 DDL 草案 + +## 文档信息 + +| 项目 | 内容 | +| --- | --- | +| 项目名称 | 福建水务营收系统 | +| 文档类型 | 外部平台对接 DDL 草案 | +| 对接平台 | 诺税通 saas | +| 适用范围 | 发票、红字单据、设备、库存、企业配置、平台日志 | +| 版本 | v1.0 | +| 日期 | 2026-03-24 | +| 状态 | 草案 | + +## 适用说明 + +本文档在 `docs/guides/NUOSHUITONG_DATABASE_DESIGN.md` 的基础上,进一步给出面向实现的 DDL 草案。当前以 PostgreSQL/MySQL 均可平滑迁移的通用 SQL 风格表达为主,重点用于: +- 明确核心表字段结构 +- 明确主键、唯一约束与索引建议 +- 为后续纳入正式数据库设计主文档提供输入 + +## 使用约定 + +- 主键统一使用 `bigint` +- 金额统一使用 `decimal(18,2)` +- 数量/单价类字段视场景使用 `decimal(18,6)` +- 状态类字段统一使用 `varchar(32)` +- URL 字段统一预留 `varchar(1024)` +- 长报文、原始回调、请求响应体统一使用 `text` / `longtext` + +## DDL 草案 + +## `ns_invoice` 发票主表 + +```sql +CREATE TABLE ns_invoice ( + id BIGINT PRIMARY KEY, + sys_request_no VARCHAR(64) NOT NULL, + order_no VARCHAR(64), + source_business_type VARCHAR(32), + source_business_id VARCHAR(64), + platform_invoice_serial_num VARCHAR(64), + invoice_id VARCHAR(64), + invoice_code VARCHAR(32), + invoice_no VARCHAR(32), + all_electronic_invoice_no VARCHAR(64), + seller_tax_no VARCHAR(32) NOT NULL, + buyer_name VARCHAR(200), + buyer_tax_no VARCHAR(64), + buyer_address VARCHAR(255), + buyer_tel VARCHAR(64), + buyer_account VARCHAR(255), + invoice_type VARCHAR(16), + invoice_line VARCHAR(16), + list_flag SMALLINT, + with_tax_flag SMALLINT, + notify_phone VARCHAR(64), + notify_email VARCHAR(128), + cc_phone VARCHAR(256), + cc_email VARCHAR(256), + total_amount DECIMAL(18,2), + amount_without_tax DECIMAL(18,2), + tax_amount DECIMAL(18,2), + request_status VARCHAR(32) NOT NULL, + invoice_status VARCHAR(32), + invoice_status_text VARCHAR(255), + invalid_state VARCHAR(32), + delivery_status VARCHAR(32), + sync_status VARCHAR(32), + pdf_url VARCHAR(1024), + ofd_url VARCHAR(1024), + image_url VARCHAR(1024), + paper_pdf_url VARCHAR(1024), + invoice_time DATETIME, + request_time DATETIME, + invalid_time DATETIME, + last_sync_time DATETIME, + ori_invoice_code VARCHAR(32), + ori_invoice_no VARCHAR(32), + old_electronic_invoice_no VARCHAR(64), + remark VARCHAR(1000), + specific_factor_json TEXT, + latest_result VARCHAR(1000), + latest_error VARCHAR(1000), + try_count INT, + last_try_time DATETIME, + next_try_time DATETIME, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL, + created_by VARCHAR(64), + updated_by VARCHAR(64) +); +``` + +### 约束与索引建议 + +```sql +ALTER TABLE ns_invoice + ADD CONSTRAINT uk_ns_invoice_sys_request_no UNIQUE (sys_request_no); + +CREATE UNIQUE INDEX uk_ns_invoice_platform_serial_num + ON ns_invoice (platform_invoice_serial_num); + +CREATE INDEX idx_ns_invoice_order_no + ON ns_invoice (order_no); + +CREATE INDEX idx_ns_invoice_status + ON ns_invoice (request_status, invoice_status, delivery_status); + +CREATE INDEX idx_ns_invoice_seller_tax_no + ON ns_invoice (seller_tax_no); + +CREATE INDEX idx_ns_invoice_invoice_time + ON ns_invoice (invoice_time); + +CREATE INDEX idx_ns_invoice_next_try_time + ON ns_invoice (next_try_time); +``` + +## `ns_invoice_item` 发票明细表 + +```sql +CREATE TABLE ns_invoice_item ( + id BIGINT PRIMARY KEY, + invoice_id BIGINT NOT NULL, + line_no INT NOT NULL, + goods_name VARCHAR(255) NOT NULL, + goods_code VARCHAR(64), + spec VARCHAR(128), + unit VARCHAR(64), + quantity DECIMAL(18,6), + unit_price DECIMAL(18,6), + amount_with_tax DECIMAL(18,2), + amount_without_tax DECIMAL(18,2), + tax_rate DECIMAL(8,4), + tax_amount DECIMAL(18,2), + detail_type SMALLINT, + favoured_policy_flag SMALLINT, + zero_rate_flag SMALLINT, + favoured_policy_name VARCHAR(128), + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +ALTER TABLE ns_invoice_item + ADD CONSTRAINT fk_ns_invoice_item_invoice + FOREIGN KEY (invoice_id) REFERENCES ns_invoice(id); + +CREATE UNIQUE INDEX uk_ns_invoice_item_invoice_line + ON ns_invoice_item (invoice_id, line_no); + +CREATE INDEX idx_ns_invoice_item_invoice_id + ON ns_invoice_item (invoice_id); +``` + +## `ns_invoice_delivery` 发票交付记录表 + +```sql +CREATE TABLE ns_invoice_delivery ( + id BIGINT PRIMARY KEY, + invoice_id BIGINT NOT NULL, + delivery_type VARCHAR(16) NOT NULL, + delivery_target VARCHAR(256) NOT NULL, + cc_target VARCHAR(512), + delivery_status VARCHAR(32) NOT NULL, + delivery_message VARCHAR(1000), + delivery_attempt_no INT NOT NULL, + is_retry SMALLINT NOT NULL, + response_code VARCHAR(32), + response_body TEXT, + delivery_time DATETIME, + created_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +ALTER TABLE ns_invoice_delivery + ADD CONSTRAINT fk_ns_invoice_delivery_invoice + FOREIGN KEY (invoice_id) REFERENCES ns_invoice(id); + +CREATE INDEX idx_ns_invoice_delivery_invoice_id + ON ns_invoice_delivery (invoice_id); + +CREATE INDEX idx_ns_invoice_delivery_status + ON ns_invoice_delivery (delivery_status, delivery_time); +``` + +## `ns_invoice_reversal` 发票逆向处理表 + +```sql +CREATE TABLE ns_invoice_reversal ( + id BIGINT PRIMARY KEY, + invoice_id BIGINT NOT NULL, + reversal_type VARCHAR(32) NOT NULL, + source_invoice_code VARCHAR(32), + source_invoice_no VARCHAR(32), + invalid_reason VARCHAR(32), + specific_reason VARCHAR(500), + request_status VARCHAR(32) NOT NULL, + reversal_status VARCHAR(32), + platform_result_code VARCHAR(32), + platform_result_msg VARCHAR(1000), + target_invoice_id BIGINT, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +ALTER TABLE ns_invoice_reversal + ADD CONSTRAINT fk_ns_invoice_reversal_invoice + FOREIGN KEY (invoice_id) REFERENCES ns_invoice(id); + +CREATE INDEX idx_ns_invoice_reversal_invoice_id + ON ns_invoice_reversal (invoice_id); + +CREATE INDEX idx_ns_invoice_reversal_status + ON ns_invoice_reversal (request_status, reversal_status); +``` + +## `ns_red_document` 红字单据主表 + +```sql +CREATE TABLE ns_red_document ( + id BIGINT PRIMARY KEY, + invoice_id BIGINT, + document_type VARCHAR(16) NOT NULL, + bill_no VARCHAR(64), + bill_id VARCHAR(64), + bill_info_no VARCHAR(64), + bill_confirm_no VARCHAR(64), + bill_uuid VARCHAR(64), + blue_invoice_code VARCHAR(32), + blue_invoice_no VARCHAR(32), + blue_invoice_number VARCHAR(64), + blue_invoice_line VARCHAR(16), + bill_type VARCHAR(32), + bill_status VARCHAR(32), + bill_status_text VARCHAR(255), + open_status VARCHAR(32), + back_type VARCHAR(16), + apply_source VARCHAR(32), + red_reason VARCHAR(255), + apply_remark VARCHAR(1000), + pdf_url VARCHAR(1024), + callback_status VARCHAR(32), + last_sync_time DATETIME, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +ALTER TABLE ns_red_document + ADD CONSTRAINT fk_ns_red_document_invoice + FOREIGN KEY (invoice_id) REFERENCES ns_invoice(id); + +CREATE UNIQUE INDEX uk_ns_red_document_bill_no + ON ns_red_document (bill_no); + +CREATE UNIQUE INDEX uk_ns_red_document_bill_id + ON ns_red_document (bill_id); + +CREATE INDEX idx_ns_red_document_invoice_id + ON ns_red_document (invoice_id); + +CREATE INDEX idx_ns_red_document_status + ON ns_red_document (document_type, bill_status, open_status); +``` + +## `ns_red_document_item` 红字单据明细表 + +```sql +CREATE TABLE ns_red_document_item ( + id BIGINT PRIMARY KEY, + red_document_id BIGINT NOT NULL, + line_no INT NOT NULL, + goods_name VARCHAR(255), + model VARCHAR(128), + unit VARCHAR(64), + quantity DECIMAL(18,6), + unit_price DECIMAL(18,6), + amount DECIMAL(18,2), + tax_rate DECIMAL(8,4), + tax_amount DECIMAL(18,2), + with_tax_flag SMALLINT, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +ALTER TABLE ns_red_document_item + ADD CONSTRAINT fk_ns_red_document_item_main + FOREIGN KEY (red_document_id) REFERENCES ns_red_document(id); + +CREATE UNIQUE INDEX uk_ns_red_document_item_line + ON ns_red_document_item (red_document_id, line_no); +``` + +## `ns_billing_device` 开票设备表 + +```sql +CREATE TABLE ns_billing_device ( + id BIGINT PRIMARY KEY, + tax_num VARCHAR(32) NOT NULL, + company_id VARCHAR(64), + extension_num VARCHAR(32), + machine_num VARCHAR(64), + terminal_num VARCHAR(64), + server_type VARCHAR(32), + invoice_type_list VARCHAR(512), + login_account VARCHAR(128), + equipment_cabinet_id VARCHAR(64), + device_status VARCHAR(32) NOT NULL, + report_tax_status VARCHAR(32), + clear_card_status VARCHAR(32), + lock_date VARCHAR(32), + single_billing_limit DECIMAL(18,2), + offline_amount DECIMAL(18,2), + offline_time VARCHAR(64), + last_status_sync_time DATETIME, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +CREATE UNIQUE INDEX uk_ns_billing_device_tax_ext_machine + ON ns_billing_device (tax_num, extension_num, machine_num); + +CREATE INDEX idx_ns_billing_device_tax_num + ON ns_billing_device (tax_num); + +CREATE INDEX idx_ns_billing_device_status + ON ns_billing_device (device_status, report_tax_status, clear_card_status); +``` + +## `ns_invoice_stock_snapshot` 发票库存快照表 + +```sql +CREATE TABLE ns_invoice_stock_snapshot ( + id BIGINT PRIMARY KEY, + device_id BIGINT, + seller_tax_no VARCHAR(32) NOT NULL, + extension_num VARCHAR(32), + machine_num VARCHAR(64), + terminal_num VARCHAR(64), + invoice_line VARCHAR(16), + invoice_code VARCHAR(32), + invoice_num_start VARCHAR(32), + invoice_num_end VARCHAR(32), + remain_num INT, + is_default SMALLINT, + source_type VARCHAR(16) NOT NULL, + snapshot_time DATETIME NOT NULL, + created_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +ALTER TABLE ns_invoice_stock_snapshot + ADD CONSTRAINT fk_ns_invoice_stock_device + FOREIGN KEY (device_id) REFERENCES ns_billing_device(id); + +CREATE INDEX idx_ns_stock_device_time + ON ns_invoice_stock_snapshot (device_id, snapshot_time); + +CREATE INDEX idx_ns_stock_tax_line_time + ON ns_invoice_stock_snapshot (seller_tax_no, invoice_line, snapshot_time); +``` + +## `ns_enterprise_billing_config` 企业开票配置表 + +```sql +CREATE TABLE ns_enterprise_billing_config ( + id BIGINT PRIMARY KEY, + tax_num VARCHAR(32) NOT NULL, + company_id VARCHAR(64), + use_scope VARCHAR(32), + clerker VARCHAR(128), + seller_address VARCHAR(255), + seller_tel VARCHAR(64), + seller_bank VARCHAR(255), + seller_account VARCHAR(255), + payee VARCHAR(64), + checker VARCHAR(64), + project_code VARCHAR(64), + department_name VARCHAR(128), + auth_status VARCHAR(32), + last_auth_time DATETIME, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +CREATE UNIQUE INDEX uk_ns_enterprise_billing_config_tax_num + ON ns_enterprise_billing_config (tax_num); +``` + +## `ns_platform_event_log` 平台回调事件表 + +```sql +CREATE TABLE ns_platform_event_log ( + id BIGINT PRIMARY KEY, + event_type VARCHAR(32) NOT NULL, + event_key VARCHAR(128) NOT NULL, + seller_tax_no VARCHAR(32), + business_key VARCHAR(128), + payload_json TEXT NOT NULL, + process_status VARCHAR(32) NOT NULL, + process_message VARCHAR(1000), + processed_at DATETIME, + created_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +CREATE UNIQUE INDEX uk_ns_platform_event_log_event_key + ON ns_platform_event_log (event_key); + +CREATE INDEX idx_ns_platform_event_log_type_status + ON ns_platform_event_log (event_type, process_status); +``` + +## `ns_platform_request_log` 平台请求响应日志表 + +```sql +CREATE TABLE ns_platform_request_log ( + id BIGINT PRIMARY KEY, + request_id VARCHAR(64) NOT NULL, + business_type VARCHAR(32), + business_id VARCHAR(64), + method_name VARCHAR(128), + request_headers_masked TEXT, + request_body TEXT, + response_body TEXT, + response_code VARCHAR(32), + success_flag SMALLINT, + error_message VARCHAR(1000), + created_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +CREATE UNIQUE INDEX uk_ns_platform_request_log_request_id + ON ns_platform_request_log (request_id); + +CREATE INDEX idx_ns_platform_request_log_business + ON ns_platform_request_log (business_type, business_id); + +CREATE INDEX idx_ns_platform_request_log_method_name + ON ns_platform_request_log (method_name); +``` + +## `ns_config_dictionary_cache` 配置字典缓存表(可选) + +```sql +CREATE TABLE ns_config_dictionary_cache ( + id BIGINT PRIMARY KEY, + dict_type VARCHAR(64) NOT NULL, + dict_key VARCHAR(128) NOT NULL, + dict_name VARCHAR(255), + company_id VARCHAR(64), + company_name VARCHAR(255), + extra_json TEXT, + last_sync_time DATETIME, + created_at DATETIME NOT NULL, + updated_at DATETIME NOT NULL +); +``` + +### 约束与索引建议 + +```sql +CREATE UNIQUE INDEX uk_ns_config_dictionary_cache_type_key + ON ns_config_dictionary_cache (dict_type, dict_key); + +CREATE INDEX idx_ns_config_dictionary_cache_type + ON ns_config_dictionary_cache (dict_type); +``` + +## 首期最小实施 DDL 建议 + +若以“最小可用”为目标,建议优先建以下 7 张表: +- `ns_invoice` +- `ns_invoice_item` +- `ns_invoice_delivery` +- `ns_invoice_reversal` +- `ns_billing_device` +- `ns_invoice_stock_snapshot` +- `ns_platform_request_log` + +第二批补充: +- `ns_red_document` +- `ns_red_document_item` +- `ns_platform_event_log` +- `ns_enterprise_billing_config` + +## 后续建议 + +建议在此基础上继续完成: +- 字段注释 SQL 草案 +- 状态码 / 枚举字典与字段注释联动 +- PostgreSQL 16 / openGauss 方言适配版本 +- 与 `docs/design/03_Technical_Design/01_Database_Design.md` 的正式章节对齐 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/01_概述与接入约定.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/01_概述与接入约定.md new file mode 100644 index 0000000..dca12a8 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/01_概述与接入约定.md @@ -0,0 +1,53 @@ +--- +title: 概述与接入约定 +aliases: + - 概述与接入约定 + - 诺税通概述与接入约定 + - 概述与接入约定索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 概述与接入约定 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[02_开票主链路]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [源文档封面与概述](01_概述与接入约定.md#源文档封面与概述) +- [交互说明](01_概述与接入约定.md#交互说明) + +## 使用说明 + +- 本分组保留为概览页,适合作为首次阅读入口。 +- 详细接口请从其他分组或总索引进入。 + +--- + +## 源文档封面与概述 + +# 概述 + +本文档定义了诺税通-销项服务面向第三方系统的数据协议接口,主要包括:开票请求接口、开票结果查询接口、开票结果回传等接口。 + +# 技术规范 + +## 交互说明 + + +本文档提供的接口均为post请求方式的HTTP接口,参数均以在消息主体body中以application/json方式提交,即请求头中Content-Type需配置为“application/json;charset=utf-8”。 + +说明:限定的最大长度为字符个数(一个汉字或全角符号算两个字符),最大长度中的带小数点(.)的,表示该字段只支持数值以不带千位分隔符的十进制浮点数表示,限定总长度和最大小数位,如16.2表示为-9999999999999.99到9999999999999.99的数。 + +# 接口列表 + diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/02_开票主链路.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/02_开票主链路.md new file mode 100644 index 0000000..df179d8 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/02_开票主链路.md @@ -0,0 +1,37 @@ +--- +title: 开票主链路 +aliases: + - 开票主链路 + - 诺税通开票主链路 + - 开票主链路索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 开票主链路 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/开票请求接口|开票请求接口]] +- [[interfaces/开票结果查询接口|开票结果查询接口]] +- [[interfaces/开票结果回传|开票结果回传]] +- [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]] +- [[interfaces/发票列表查询接口|发票列表查询接口]] +- [[interfaces/发票交付|发票交付]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/03_作废重开与冲红.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/03_作废重开与冲红.md new file mode 100644 index 0000000..1d4e487 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/03_作废重开与冲红.md @@ -0,0 +1,37 @@ +--- +title: 作废重开与冲红 +aliases: + - 作废重开与冲红 + - 诺税通作废重开与冲红 + - 作废重开与冲红索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 作废重开与冲红 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[04_红字信息表]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/发票作废申请接口|发票作废申请接口]] +- [[interfaces/发票重开接口|发票重开接口]] +- [[interfaces/快捷冲红接口|快捷冲红接口]] +- [[interfaces/空白发票作废申请|空白发票作废申请]] +- [[interfaces/蓝字发票剩余可冲红的金额_税额查询接口|蓝字发票剩余可冲红的金额、税额查询接口]] +- [[interfaces/获取关联发票接口|获取关联发票接口]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/04_红字信息表.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/04_红字信息表.md new file mode 100644 index 0000000..d49daba --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/04_红字信息表.md @@ -0,0 +1,37 @@ +--- +title: 红字信息表 +aliases: + - 红字信息表 + - 诺税通红字信息表 + - 红字信息表索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字信息表 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[03_作废重开与冲红]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/红字信息表申请接口_不支持拆分_不推荐使用|红字信息表申请接口(不支持拆分,不推荐使用)]] +- [[interfaces/红字信息表申请接口_支持拆分|红字信息表申请接口(支持拆分)]] +- [[interfaces/红字信息表下载接口|红字信息表下载接口]] +- [[interfaces/红字信息表查询接口|红字信息表查询接口]] +- [[interfaces/红字信息表撤销接口|红字信息表撤销接口]] +- [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/05_红字确认单.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/05_红字确认单.md new file mode 100644 index 0000000..a03e6ae --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/05_红字确认单.md @@ -0,0 +1,36 @@ +--- +title: 红字确认单 +aliases: + - 红字确认单 + - 诺税通红字确认单 + - 红字确认单索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字确认单 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/红字确认单申请接口|红字确认单申请接口]] +- [[interfaces/红字确认单下载接口|红字确认单下载接口]] +- [[interfaces/红字确认单查询接口|红字确认单查询接口]] +- [[interfaces/红字确认单确认接口|红字确认单确认接口]] +- [[interfaces/红字确认单撤销接口|红字确认单撤销接口]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/06_库存票源与打印.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/06_库存票源与打印.md new file mode 100644 index 0000000..eac0251 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/06_库存票源与打印.md @@ -0,0 +1,42 @@ +--- +title: 库存票源与打印 +aliases: + - 库存票源与打印 + - 诺税通库存票源与打印 + - 库存票源与打印索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 库存票源与打印 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[05_红字确认单]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/获取纸票打印编号接口|获取纸票打印编号接口]] +- [[interfaces/获取指定票种当前代码号码|获取指定票种当前代码号码]] +- [[interfaces/获取下一张发票号码代码接口_A9机柜|获取下一张发票号码代码接口(A9+机柜)]] +- [[interfaces/发票库存余量查询接口|发票库存余量查询接口]] +- [[interfaces/刷新获取开票设备实时发票库存接口|刷新获取开票设备实时发票库存接口]] +- [[interfaces/票源下载接口|票源下载接口]] +- [[interfaces/查询可下载发票库存列表接口|查询可下载发票库存列表接口]] +- [[interfaces/自定义票源下载接口|自定义票源下载接口]] +- [[interfaces/刷新可下载发票库存接口|刷新可下载发票库存接口]] +- [[interfaces/乐企查询数电库存接口|乐企查询数电库存接口]] +- [[interfaces/乐企数电发票库存申领接口|乐企数电发票库存申领接口]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/07_设备企业与配置.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/07_设备企业与配置.md new file mode 100644 index 0000000..f60f38e --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/07_设备企业与配置.md @@ -0,0 +1,41 @@ +--- +title: 设备企业与配置 +aliases: + - 设备企业与配置 + - 诺税通设备企业与配置 + - 设备企业与配置索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 设备企业与配置 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[08_车辆辅助与回传]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/企业设备状态查询接口|企业设备状态查询接口]] +- [[interfaces/企业设备查询接口|企业设备查询接口]] +- [[interfaces/创建开票设备接口|创建开票设备接口]] +- [[interfaces/新增_修改企业开票信息|新增/修改企业开票信息]] +- [[interfaces/录入自定义字段|录入自定义字段]] +- [[interfaces/批量获取信息转换配置接口|批量获取信息转换配置接口]] +- [[interfaces/批量获取备注配置信息接口|批量获取备注配置信息接口]] +- [[interfaces/根据业务标识查询对应值列表接口|根据业务标识查询对应值列表接口]] +- [[interfaces/获取查询数电登录认证_开票实名认证二维码|获取查询数电登录认证、开票实名认证二维码]] +- [[interfaces/登录扫码认证确认接口|登录扫码认证确认接口]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/08_车辆辅助与回传.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/08_车辆辅助与回传.md new file mode 100644 index 0000000..8d9e671 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/08_车辆辅助与回传.md @@ -0,0 +1,40 @@ +--- +title: 车辆辅助与回传 +aliases: + - 车辆辅助与回传 + - 诺税通车辆辅助与回传 + - 车辆辅助与回传索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 车辆辅助与回传 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[09_专项能力]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/收票入库接口_本地提取发票|收票入库接口(本地提取发票)]] +- [[interfaces/创建_查询企业车架号_合格证状态接口|创建/查询企业车架号、合格证状态接口]] +- [[interfaces/企业车架号等信息查询结果回传接口|企业车架号等信息查询结果回传接口]] +- [[interfaces/查询获取车架号是否可开票结果接口|查询获取车架号是否可开票结果接口]] +- [[interfaces/获取DAT加密包文件流接口|获取DAT加密包文件流接口]] +- [[interfaces/更新发票票据关联状态接口|更新发票票据关联状态接口]] +- [[interfaces/删除发票信息接口|删除发票信息接口]] +- [[interfaces/审核开票删除回传接口|审核开票删除回传接口]] +- [[interfaces/批量查询发票xmlUrl接口|批量查询发票xmlUrl接口]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/09_专项能力.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/09_专项能力.md new file mode 100644 index 0000000..4289c9b --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/09_专项能力.md @@ -0,0 +1,40 @@ +--- +title: 专项能力 +aliases: + - 专项能力 + - 诺税通专项能力 + - 专项能力索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 专项能力 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[10_附录_通用状态码]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [[interfaces/查询成品油库存列表接口|查询成品油库存列表接口]] +- [[interfaces/成品油库存下载接口|成品油库存下载接口]] +- [[interfaces/刷新获取税盘实时成品油库存接口|刷新获取税盘实时成品油库存接口]] +- [[interfaces/抄报清卡|抄报清卡]] +- [[interfaces/授信额度刷新接口|授信额度刷新接口]] +- [[interfaces/查询授信额度数据|查询授信额度数据]] +- [[interfaces/乐企授信额度下载_退回接口|乐企授信额度下载/退回接口]] +- [[interfaces/乐企授信额度更新有效期接口|乐企授信额度更新有效期接口]] +- [[interfaces/获取发票勾选入账状态接口|获取发票勾选入账状态接口]] + +## 使用说明 + +- 点击上方单接口页进入正文。 +- 适合在 Obsidian 中作为专题 MOC 使用。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/10_附录_通用状态码.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/10_附录_通用状态码.md new file mode 100644 index 0000000..4f10918 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/10_附录_通用状态码.md @@ -0,0 +1,41 @@ +--- +title: 附录:通用状态码 +aliases: + - 附录:通用状态码 + - 诺税通附录:通用状态码 + - 附录:通用状态码索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 附录:通用状态码 + +> [!info] 导航 +> 总索引:[[README]] +> 同级分组:[[01_概述与接入约定]] · [[02_开票主链路]] · [[03_作废重开与冲红]] · [[04_红字信息表]] · [[05_红字确认单]] · [[06_库存票源与打印]] · [[07_设备企业与配置]] · [[08_车辆辅助与回传]] · [[09_专项能力]] + +> [!abstract] 说明 +> 本页作为 Obsidian MOC,仅保留分组导航与接口入口;接口正文已下沉为单接口一页。 + +## 接口入口 + +- [通用状态码说明](10_附录_通用状态码.md#通用状态码说明) + +## 使用说明 + +- 本分组保留附录全文,便于各接口页统一回查状态码。 + +## 通用状态码说明 + +| | | +|:----------:|:--------------------:| +| **状态码** | **描述** | +| 200 | 成功 | +| 501 | 请求异常或服务器异常 | + +更多错误码描述可见message字段。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/11_枚举清单.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/11_枚举清单.md new file mode 100644 index 0000000..fba9fa9 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/11_枚举清单.md @@ -0,0 +1,147 @@ +--- +title: 诺税通接口枚举清单 +aliases: + - 诺税通枚举清单 + - 诺税通参数枚举索引 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - enum-index +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: extracted-summary +--- + +# 诺税通接口枚举清单 + +> [!abstract] 说明 +> 本文从诺税通销项服务接口规范中提取各接口内出现的参数枚举、状态枚举与布尔/标志位语义,便于实施时统一核对。 +> 原始接口正文请进入 `interfaces/` 下的单接口页查看。 + +## 开票主链路 + +### [[interfaces/开票请求接口|开票请求接口]] + +- `invoiceType`:1:蓝票;2:红票 | 2 +- `invoiceLine`:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) | 2 +- `remark`:j:机动车发票时,备注需注明:“一车一票”否则接口会自动添加该文案 | 备注,(注意:不同开票服务器类型支持的备注长度不同,请在提交前做好确认) | 数电电票:200(中文计算一位) 其他发票:230(中文计算两位) +- `notifyType`:-1:不推送;0:邮箱;1:手机(默认);2:邮箱、手机 | 2 +- `listFlag`:0:非清单;1:清单,纸票超过8行自动转成清单,电票无清单概念,默认都传0 | 2 +- `substituteFlag`:0:非代开;1:代开 +- `withTaxFlag`:0:不含税,1:含税 | 2 +- `favouredPolicyFlag`:0:不使用;1:使用 数电发票时为空,仅传入优惠政策编码即可 | 2 +- `zeroRateFlag`:1:免税;2:不征税;3:普通零税率;favouredPolicyFlag:0 zeroRateFlag:3 favouredPolicyName: 免税时,对应传值: favouredPolicyFlag:1 zeroRateFlag:1 favouredPolicyName:“免税” 不征税,对应传值: favouredPolicyFlag:1 zeroRateFlag:2 favouredPolicyName:“不征税” | 2 + +### [[interfaces/开票结果查询接口|开票结果查询接口]] + +- `status`:0:开票中1:开票完成2:开票失败3:发票生成 | 2 +- `invoiceLine`:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) | 2 +- `productOilFlag`:0:非成品油;1:成品油 | 2 +- `vehicleFlag`:0:非机动车;1:机动车 | 2 +- `listFlag`:0:非清单,1:清单 | 2 +- `invalidReason`:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) | 1 +- `withTaxFlag`:0:不含税;1:含税 | 2 +- `detailType`:0:正常行;1:折扣行;2:被折扣行 | 2 +- `favouredPolicyFlag`:0:不使用;1:使用 | 2 +- `zeroRateFlag`:1:免税;2:不征税;3:普通零税率 | 2 + +### [[interfaces/开票结果回传|开票结果回传]] + +- `successFlag`:True:开票成功;false:开票失败 | 1 +- `vehicleFlag`:0:非机动车;1:机动车 | 2 +- `invoiceStatus`:1:开票成功、 2:开票失败、3:作废成功、4:作废失败;5:开票失败删除成功 +- `invoiceLine`:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) 仅开票成功会返回 | 2 +- `relatedState`:0:未关联 1:关联中 2:关联成功 3:部分关联 4:关联失败) | +- `invalidReason`:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) | 1 + +### [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]] + +- `invoiceLine`:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) | 1 +- `productOilFlag`:0:非成品油;1:成品油 +- `vehicleFlag`:0:非机动车;1:机动车 | 2 +- `listFlag`:0:非清单;1:清单 +- `invoiceStatus`:1:开票成功、 2:开票失败、3:作废成功、4:作废失败;5:开票失败删除成功 +- `relatedState`:0:未关联 1:关联中 2:关联成功 3:部分关联 4:关联失败) | +- `invalidReason`:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) | 1 +- `withTaxFlag`:1:含税;0:不含税 +- `detailType`:0:正常行;1:折扣行;2:被扣行 +- `zeroRateFlag`:1:免税;2:不征税;3:普通零税率 +- `favouredPolicyFlag`:0:不使用;1:使用 + +### [[interfaces/发票列表查询接口|发票列表查询接口]] + +- `status`:0:开票中1:开票完成2:开票失败3:发票生成 | 2 +- `invoiceLine`:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) | 2 +- `productOilFlag`:0:非成品油;1:成品油 | 2 +- `vehicleFlag`:0:非机动车;1:机动车 | 2 +- `listFlag`:0:非清单,1:清单 | 2 +- `invalidReason`:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) | 1 +- `withTaxFlag`:0:不含税;1:含税 | 2 +- `detailType`:0:正常行;1:折扣行;2:被折扣行 | 2 +- `favouredPolicyFlag`:0:不使用;1:使用 | 2 +- `zeroRateFlag`:1:免税;2:不征税;3:普通零税率 | 2 + +## 作废重开与冲红 + +### [[interfaces/快捷冲红接口|快捷冲红接口]] + +- `fastRedType`:1:数电发票快捷冲红(数电发票必传1) | 1 +- `fastRedType`:1:数电快捷冲红(数电发票必传1) | 1 + +## 红字信息表 + +### [[interfaces/红字信息表申请接口_不支持拆分_不推荐使用|红字信息表申请接口(不支持拆分,不推荐使用)]] + +- `billType`:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回),4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) 默认为:0正常 注:信息表类型为2:退货时,信息表展示蓝票所有明细行,每次提交信息表开具时,不允许超过8行,且不转换成固定一行明细(详见正数发票及清单) 若根据蓝票代码号码匹配不到对应的蓝票机动车标识,billType需必填 + +### [[interfaces/红字信息表申请接口_支持拆分|红字信息表申请接口(支持拆分)]] + +- `billType`:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回),4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) 默认为:0正常 注:信息表类型为2:退货时,信息表展示蓝票所有明细行,每次提交信息表开具时,不允许超过8行,且不转换成固定一行明细(详见正数发票及清单) 若根据蓝票代码号码匹配不到对应的蓝票机动车标识,billType需必填 + +### [[interfaces/红字信息表查询接口|红字信息表查询接口]] + +- `billType`:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回 4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) | 1 +- `taxRate`:0:一票一税率 1:一票多税率) | 1 +- `billStatus`:-1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销) | 2 + +### [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]] + +- `backType`:1: 红字信息表 2:红字确认单 | 2 +- `billType`:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回 4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) | 1 +- `billStatus`:-1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销 -2:删除成功) | 2 +- `backType`:1: 红字信息表 2:红字确认单 | 2 +- `openStatus`:0:未开具 1:已开具 | 2 +- `blueInvoiceLine`:bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 | 5 + +## 红字确认单 + +### [[interfaces/红字确认单申请接口|红字确认单申请接口]] + +- `blueInvoiceLine`:bs:数电专票(电子), pc:数电普票(电子), es:数电专票(纸质);ec:数电普票(纸质), p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 | 5 +- `withTaxFlag`:0:不含税,1:含税 | 1 +- `zeroRateFlag`:1:免税;2:不征税;3:普通零税率 | 2 + +### [[interfaces/红字确认单下载接口|红字确认单下载接口]] + +- `billStatus`:1:我是购买方时,必填 确认单状态,0.待确认 1.已确认 2.已过期 3.销方否认 4.已撤销 | 4 + +### [[interfaces/红字确认单查询接口|红字确认单查询接口]] + +- `openStatus`:0:未开具 1:已开具 | 2 +- `blueInvoiceLine`:bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 | 5 + +## 设备企业与配置 + +### [[interfaces/创建开票设备接口|创建开票设备接口]] + +- `serverType`:1:C48, 11:诺诺开票, 14:A9, 15:四川税局代开, 17:诺诺机柜, 18:税控服务器, 20:单机版, 22:数电发票开票模式(通用版), 24:数电发票开票模式(单机版), 25:数电发票开票模式(机柜版) 数电单机版和机柜版暂只支持半本地环境 | 4 +- `invoiceTypelist`:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) | - + +## 车辆辅助与回传 + +### [[interfaces/收票入库接口_本地提取发票|收票入库接口(本地提取发票)]] + +- `invoiceType`:1:蓝票;2:红票 +- `withTaxFlag`:0:不含税,1:含税 + diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/12_标准枚举字典.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/12_标准枚举字典.md new file mode 100644 index 0000000..8e0faeb --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/12_标准枚举字典.md @@ -0,0 +1,341 @@ +--- +title: 诺税通标准枚举字典 +aliases: + - 诺税通枚举字典 + - 诺税通字段级枚举表 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - enum-dictionary +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: normalized-from-enum-index +--- + +# 诺税通标准枚举字典 + +> [!abstract] 说明 +> 本文对 `11_枚举清单.md` 中跨接口重复出现的枚举字段进行字段级归并,便于实施时统一理解与复用。 +> 若同一字段在不同接口中存在补充说明或口径差异,均在“来源接口”中保留。 + +## 快速导航 + +- [[#`invoiceLine`|`invoiceLine`]] +- [[#`invoiceType`|`invoiceType`]] +- [[#`status`|`status`]] +- [[#`invoiceStatus`|`invoiceStatus`]] +- [[#`billStatus`|`billStatus`]] +- [[#`billType`|`billType`]] +- [[#`withTaxFlag`|`withTaxFlag`]] +- [[#`listFlag`|`listFlag`]] +- [[#`detailType`|`detailType`]] +- [[#`invalidReason`|`invalidReason`]] +- [[#`notifyType`|`notifyType`]] +- [[#`vehicleFlag`|`vehicleFlag`]] +- [[#`productOilFlag`|`productOilFlag`]] +- [[#`zeroRateFlag`|`zeroRateFlag`]] +- [[#`favouredPolicyFlag`|`favouredPolicyFlag`]] +- [[#`backType`|`backType`]] +- [[#`openStatus`|`openStatus`]] +- [[#`serverType`|`serverType`]] +- [[#`fastRedType`|`fastRedType`]] +- [[#`taxRate`|`taxRate`]] +- [[#`relatedState`|`relatedState`]] +- [[#`successFlag`|`successFlag`]] +- [[#`substituteFlag`|`substituteFlag`]] +- [[#`blueInvoiceLine`|`blueInvoiceLine`]] +- [[#`invoiceTypelist`|`invoiceTypelist`]] +- [[#`remark`|`remark`]] + +## `invoiceLine` + +> [!summary] 标准口径 +> - p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) +> - p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) +> - p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) 仅开票成功会返回 +> - p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) +- **开票主链路 / [[interfaces/开票结果回传|开票结果回传]]**:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) 仅开票成功会返回 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) + +## `invoiceType` + +> [!summary] 标准口径 +> - 1:蓝票;2:红票 +> - 1:蓝票;2:红票 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:1:蓝票;2:红票 +- **车辆辅助与回传 / [[interfaces/收票入库接口_本地提取发票|收票入库接口(本地提取发票)]]**:1:蓝票;2:红票 + +## `status` + +> [!summary] 标准口径 +> - 0:开票中1:开票完成2:开票失败3:发票生成 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:0:开票中1:开票完成2:开票失败3:发票生成 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:0:开票中1:开票完成2:开票失败3:发票生成 + +## `invoiceStatus` + +> [!summary] 标准口径 +> - 1:开票成功、 2:开票失败、3:作废成功、4:作废失败;5:开票失败删除成功 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果回传|开票结果回传]]**:1:开票成功、 2:开票失败、3:作废成功、4:作废失败;5:开票失败删除成功 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:1:开票成功、 2:开票失败、3:作废成功、4:作废失败;5:开票失败删除成功 + +## `billStatus` + +> [!summary] 标准口径 +> - -1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销) +> - -1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销 -2:删除成功) +> - 1:我是购买方时,必填 确认单状态,0.待确认 1.已确认 2.已过期 3.销方否认 4.已撤销 + +### 来源接口 + +- **红字信息表 / [[interfaces/红字信息表查询接口|红字信息表查询接口]]**:-1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销) +- **红字信息表 / [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]]**:-1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销 -2:删除成功) +- **红字确认单 / [[interfaces/红字确认单下载接口|红字确认单下载接口]]**:1:我是购买方时,必填 确认单状态,0.待确认 1.已确认 2.已过期 3.销方否认 4.已撤销 + +## `billType` + +> [!summary] 标准口径 +> - 0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回),4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) 默认为:0正常 注:信息表类型为2:退货时,信息表展示蓝票所有明细行,每次提交信息表开具时,不允许超过8行,且不转换成固定一行明细(详见正数发票及清单) 若根据蓝票代码号码匹配不到对应的蓝票机动车标识,billType需必填 +> - 0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回 4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) + +### 来源接口 + +- **红字信息表 / [[interfaces/红字信息表申请接口_不支持拆分_不推荐使用|红字信息表申请接口(不支持拆分,不推荐使用)]]**:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回),4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) 默认为:0正常 注:信息表类型为2:退货时,信息表展示蓝票所有明细行,每次提交信息表开具时,不允许超过8行,且不转换成固定一行明细(详见正数发票及清单) 若根据蓝票代码号码匹配不到对应的蓝票机动车标识,billType需必填 +- **红字信息表 / [[interfaces/红字信息表申请接口_支持拆分|红字信息表申请接口(支持拆分)]]**:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回),4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) 默认为:0正常 注:信息表类型为2:退货时,信息表展示蓝票所有明细行,每次提交信息表开具时,不允许超过8行,且不转换成固定一行明细(详见正数发票及清单) 若根据蓝票代码号码匹配不到对应的蓝票机动车标识,billType需必填 +- **红字信息表 / [[interfaces/红字信息表查询接口|红字信息表查询接口]]**:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回 4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) +- **红字信息表 / [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]]**:0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回 4、矿产品类专用信息表(涉及销售数量和金额变更) 5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动) + +## `withTaxFlag` + +> [!summary] 标准口径 +> - 0:不含税,1:含税 +> - 0:不含税;1:含税 +> - 1:含税;0:不含税 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:0:不含税,1:含税 +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:0:不含税;1:含税 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:1:含税;0:不含税 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:0:不含税;1:含税 +- **红字确认单 / [[interfaces/红字确认单申请接口|红字确认单申请接口]]**:0:不含税,1:含税 +- **车辆辅助与回传 / [[interfaces/收票入库接口_本地提取发票|收票入库接口(本地提取发票)]]**:0:不含税,1:含税 + +## `listFlag` + +> [!summary] 标准口径 +> - 0:非清单;1:清单,纸票超过8行自动转成清单,电票无清单概念,默认都传0 +> - 0:非清单,1:清单 +> - 0:非清单;1:清单 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:0:非清单;1:清单,纸票超过8行自动转成清单,电票无清单概念,默认都传0 +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:0:非清单,1:清单 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:0:非清单;1:清单 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:0:非清单,1:清单 + +## `detailType` + +> [!summary] 标准口径 +> - 0:正常行;1:折扣行;2:被折扣行 +> - 0:正常行;1:折扣行;2:被扣行 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:0:正常行;1:折扣行;2:被折扣行 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:0:正常行;1:折扣行;2:被扣行 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:0:正常行;1:折扣行;2:被折扣行 + +## `invalidReason` + +> [!summary] 标准口径 +> - 1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) +- **开票主链路 / [[interfaces/开票结果回传|开票结果回传]]**:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回) + +## `notifyType` + +> [!summary] 标准口径 +> - -1:不推送;0:邮箱;1:手机(默认);2:邮箱、手机 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:-1:不推送;0:邮箱;1:手机(默认);2:邮箱、手机 + +## `vehicleFlag` + +> [!summary] 标准口径 +> - 0:非机动车;1:机动车 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:0:非机动车;1:机动车 +- **开票主链路 / [[interfaces/开票结果回传|开票结果回传]]**:0:非机动车;1:机动车 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:0:非机动车;1:机动车 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:0:非机动车;1:机动车 + +## `productOilFlag` + +> [!summary] 标准口径 +> - 0:非成品油;1:成品油 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:0:非成品油;1:成品油 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:0:非成品油;1:成品油 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:0:非成品油;1:成品油 + +## `zeroRateFlag` + +> [!summary] 标准口径 +> - 1:免税;2:不征税;3:普通零税率;favouredPolicyFlag:0 zeroRateFlag:3 favouredPolicyName: 免税时,对应传值: favouredPolicyFlag:1 zeroRateFlag:1 favouredPolicyName:“免税” 不征税,对应传值: favouredPolicyFlag:1 zeroRateFlag:2 favouredPolicyName:“不征税” +> - 1:免税;2:不征税;3:普通零税率 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:1:免税;2:不征税;3:普通零税率;favouredPolicyFlag:0 zeroRateFlag:3 favouredPolicyName: 免税时,对应传值: favouredPolicyFlag:1 zeroRateFlag:1 favouredPolicyName:“免税” 不征税,对应传值: favouredPolicyFlag:1 zeroRateFlag:2 favouredPolicyName:“不征税” +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:1:免税;2:不征税;3:普通零税率 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:1:免税;2:不征税;3:普通零税率 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:1:免税;2:不征税;3:普通零税率 +- **红字确认单 / [[interfaces/红字确认单申请接口|红字确认单申请接口]]**:1:免税;2:不征税;3:普通零税率 + +## `favouredPolicyFlag` + +> [!summary] 标准口径 +> - 0:不使用;1:使用 数电发票时为空,仅传入优惠政策编码即可 +> - 0:不使用;1:使用 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:0:不使用;1:使用 数电发票时为空,仅传入优惠政策编码即可 +- **开票主链路 / [[interfaces/开票结果查询接口|开票结果查询接口]]**:0:不使用;1:使用 +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:0:不使用;1:使用 +- **开票主链路 / [[interfaces/发票列表查询接口|发票列表查询接口]]**:0:不使用;1:使用 + +## `backType` + +> [!summary] 标准口径 +> - 1: 红字信息表 2:红字确认单 + +### 来源接口 + +- **红字信息表 / [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]]**:1: 红字信息表 2:红字确认单 + +## `openStatus` + +> [!summary] 标准口径 +> - 0:未开具 1:已开具 + +### 来源接口 + +- **红字信息表 / [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]]**:0:未开具 1:已开具 +- **红字确认单 / [[interfaces/红字确认单查询接口|红字确认单查询接口]]**:0:未开具 1:已开具 + +## `serverType` + +> [!summary] 标准口径 +> - 1:C48, 11:诺诺开票, 14:A9, 15:四川税局代开, 17:诺诺机柜, 18:税控服务器, 20:单机版, 22:数电发票开票模式(通用版), 24:数电发票开票模式(单机版), 25:数电发票开票模式(机柜版) 数电单机版和机柜版暂只支持半本地环境 + +### 来源接口 + +- **设备企业与配置 / [[interfaces/创建开票设备接口|创建开票设备接口]]**:1:C48, 11:诺诺开票, 14:A9, 15:四川税局代开, 17:诺诺机柜, 18:税控服务器, 20:单机版, 22:数电发票开票模式(通用版), 24:数电发票开票模式(单机版), 25:数电发票开票模式(机柜版) 数电单机版和机柜版暂只支持半本地环境 + +## `fastRedType` + +> [!summary] 标准口径 +> - 1:数电发票快捷冲红(数电发票必传1) +> - 1:数电快捷冲红(数电发票必传1) + +### 来源接口 + +- **作废重开与冲红 / [[interfaces/快捷冲红接口|快捷冲红接口]]**:1:数电快捷冲红(数电发票必传1) + +## `taxRate` + +> [!summary] 标准口径 +> - 0:一票一税率 1:一票多税率) + +### 来源接口 + +- **红字信息表 / [[interfaces/红字信息表查询接口|红字信息表查询接口]]**:0:一票一税率 1:一票多税率) + +## `relatedState` + +> [!summary] 标准口径 +> - 0:未关联 1:关联中 2:关联成功 3:部分关联 4:关联失败) | + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果回传|开票结果回传]]**:0:未关联 1:关联中 2:关联成功 3:部分关联 4:关联失败) | +- **开票主链路 / [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]]**:0:未关联 1:关联中 2:关联成功 3:部分关联 4:关联失败) | + +## `successFlag` + +> [!summary] 标准口径 +> - True:开票成功;false:开票失败 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票结果回传|开票结果回传]]**:True:开票成功;false:开票失败 + +## `substituteFlag` + +> [!summary] 标准口径 +> - 0:非代开;1:代开 + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:0:非代开;1:代开 + +## `blueInvoiceLine` + +> [!summary] 标准口径 +> - bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 +> - bs:数电专票(电子), pc:数电普票(电子), es:数电专票(纸质);ec:数电普票(纸质), p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 + +### 来源接口 + +- **红字信息表 / [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]]**:bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 +- **红字确认单 / [[interfaces/红字确认单申请接口|红字确认单申请接口]]**:bs:数电专票(电子), pc:数电普票(电子), es:数电专票(纸质);ec:数电普票(纸质), p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 +- **红字确认单 / [[interfaces/红字确认单查询接口|红字确认单查询接口]]**:bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) p:电子增值税普通发票, c:增值税普通发票(纸票), s:增值税专用发票, b:增值税电子专用发票 + +## `invoiceTypelist` + +> [!summary] 标准口径 +> - p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) + +### 来源接口 + +- **设备企业与配置 / [[interfaces/创建开票设备接口|创建开票设备接口]]**:p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) + +## `remark` + +> [!summary] 标准口径 +> - j:机动车发票时,备注需注明:“一车一票”否则接口会自动添加该文案 | 备注,(注意:不同开票服务器类型支持的备注长度不同,请在提交前做好确认) | 数电电票:200(中文计算一位) 其他发票:230(中文计算两位) + +### 来源接口 + +- **开票主链路 / [[interfaces/开票请求接口|开票请求接口]]**:j:机动车发票时,备注需注明:“一车一票”否则接口会自动添加该文案 | 备注,(注意:不同开票服务器类型支持的备注长度不同,请在提交前做好确认) | 数电电票:200(中文计算一位) 其他发票:230(中文计算两位) + diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/README.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/README.md new file mode 100644 index 0000000..f069341 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/README.md @@ -0,0 +1,130 @@ +--- +title: 诺税通销项服务接口规范索引 +aliases: + - 诺税通销项接口规范 + - 诺税通销项服务接口目录 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - moc +source_docx: ../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 诺税通销项服务接口规范索引 + +> [!abstract] 文档说明 +> 本目录为 `诺诺网-诺税通销项服务对外接口规范v1.3.18.docx` 的 Markdown 转换结果,已进一步拆分为“单接口一页”。 +> 适用于 Obsidian 检索、双链浏览与专题整理。 +> 原始来源:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 配套实施清单:[NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md](../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +## 分组导航 + +- [[01_概述与接入约定]] +- [[02_开票主链路]] +- [[03_作废重开与冲红]] +- [[04_红字信息表]] +- [[05_红字确认单]] +- [[06_库存票源与打印]] +- [[07_设备企业与配置]] +- [[08_车辆辅助与回传]] +- [[09_专项能力]] +- [[10_附录_通用状态码]] +- [[11_枚举清单]] +- [[12_标准枚举字典]] + +## 单接口索引 + +### 开票主链路 + +- [[interfaces/开票请求接口|开票请求接口]] +- [[interfaces/开票结果查询接口|开票结果查询接口]] +- [[interfaces/开票结果回传|开票结果回传]] +- [[interfaces/开票结果回传_含明细|开票结果回传(含明细)]] +- [[interfaces/发票列表查询接口|发票列表查询接口]] +- [[interfaces/发票交付|发票交付]] + +### 作废重开与冲红 + +- [[interfaces/发票作废申请接口|发票作废申请接口]] +- [[interfaces/发票重开接口|发票重开接口]] +- [[interfaces/获取关联发票接口|获取关联发票接口]] +- [[interfaces/快捷冲红接口|快捷冲红接口]] +- [[interfaces/空白发票作废申请|空白发票作废申请]] +- [[interfaces/蓝字发票剩余可冲红的金额_税额查询接口|蓝字发票剩余可冲红的金额、税额查询接口]] + +### 红字信息表 + +- [[interfaces/红字信息表申请接口_不支持拆分_不推荐使用|红字信息表申请接口(不支持拆分,不推荐使用)]] +- [[interfaces/红字信息表申请接口_支持拆分|红字信息表申请接口(支持拆分)]] +- [[interfaces/红字信息表下载接口|红字信息表下载接口]] +- [[interfaces/红字信息表查询接口|红字信息表查询接口]] +- [[interfaces/红字信息表撤销接口|红字信息表撤销接口]] +- [[interfaces/红字信息表_红字确认单回传|红字信息表/红字确认单回传]] + +### 红字确认单 + +- [[interfaces/红字确认单申请接口|红字确认单申请接口]] +- [[interfaces/红字确认单下载接口|红字确认单下载接口]] +- [[interfaces/红字确认单查询接口|红字确认单查询接口]] +- [[interfaces/红字确认单确认接口|红字确认单确认接口]] +- [[interfaces/红字确认单撤销接口|红字确认单撤销接口]] + +### 库存票源与打印 + +- [[interfaces/获取纸票打印编号接口|获取纸票打印编号接口]] +- [[interfaces/获取指定票种当前代码号码|获取指定票种当前代码号码]] +- [[interfaces/发票库存余量查询接口|发票库存余量查询接口]] +- [[interfaces/刷新获取开票设备实时发票库存接口|刷新获取开票设备实时发票库存接口]] +- [[interfaces/获取下一张发票号码代码接口_A9机柜|获取下一张发票号码代码接口(A9+机柜)]] +- [[interfaces/票源下载接口|票源下载接口]] +- [[interfaces/查询可下载发票库存列表接口|查询可下载发票库存列表接口]] +- [[interfaces/自定义票源下载接口|自定义票源下载接口]] +- [[interfaces/刷新可下载发票库存接口|刷新可下载发票库存接口]] +- [[interfaces/乐企查询数电库存接口|乐企查询数电库存接口]] +- [[interfaces/乐企数电发票库存申领接口|乐企数电发票库存申领接口]] + +### 设备企业与配置 + +- [[interfaces/企业设备状态查询接口|企业设备状态查询接口]] +- [[interfaces/新增_修改企业开票信息|新增/修改企业开票信息]] +- [[interfaces/批量获取信息转换配置接口|批量获取信息转换配置接口]] +- [[interfaces/批量获取备注配置信息接口|批量获取备注配置信息接口]] +- [[interfaces/根据业务标识查询对应值列表接口|根据业务标识查询对应值列表接口]] +- [[interfaces/企业设备查询接口|企业设备查询接口]] +- [[interfaces/创建开票设备接口|创建开票设备接口]] +- [[interfaces/录入自定义字段|录入自定义字段]] +- [[interfaces/获取查询数电登录认证_开票实名认证二维码|获取查询数电登录认证、开票实名认证二维码]] +- [[interfaces/登录扫码认证确认接口|登录扫码认证确认接口]] + +### 车辆辅助与回传 + +- [[interfaces/收票入库接口_本地提取发票|收票入库接口(本地提取发票)]] +- [[interfaces/创建_查询企业车架号_合格证状态接口|创建/查询企业车架号、合格证状态接口]] +- [[interfaces/企业车架号等信息查询结果回传接口|企业车架号等信息查询结果回传接口]] +- [[interfaces/获取DAT加密包文件流接口|获取DAT加密包文件流接口]] +- [[interfaces/更新发票票据关联状态接口|更新发票票据关联状态接口]] +- [[interfaces/查询获取车架号是否可开票结果接口|查询获取车架号是否可开票结果接口]] +- [[interfaces/删除发票信息接口|删除发票信息接口]] +- [[interfaces/审核开票删除回传接口|审核开票删除回传接口]] +- [[interfaces/批量查询发票xmlUrl接口|批量查询发票xmlUrl接口]] + +### 专项能力 + +- [[interfaces/查询成品油库存列表接口|查询成品油库存列表接口]] +- [[interfaces/成品油库存下载接口|成品油库存下载接口]] +- [[interfaces/刷新获取税盘实时成品油库存接口|刷新获取税盘实时成品油库存接口]] +- [[interfaces/抄报清卡|抄报清卡]] +- [[interfaces/授信额度刷新接口|授信额度刷新接口]] +- [[interfaces/查询授信额度数据|查询授信额度数据]] +- [[interfaces/乐企授信额度下载_退回接口|乐企授信额度下载/退回接口]] +- [[interfaces/乐企授信额度更新有效期接口|乐企授信额度更新有效期接口]] +- [[interfaces/获取发票勾选入账状态接口|获取发票勾选入账状态接口]] + +## 使用建议 + +- 先阅读 [[01_概述与接入约定]] 了解整体交互方式。 +- 再按业务主题进入分组 MOC,最终跳转到 `interfaces/` 下的单接口笔记。 +- 若需实施口径,请同步参照 `NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md`。 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度下载_退回接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度下载_退回接口.md new file mode 100644 index 0000000..9e6701a --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度下载_退回接口.md @@ -0,0 +1,106 @@ +--- +title: 乐企授信额度下载/退回接口 +aliases: + - 乐企授信额度下载/退回接口 + - 诺税通乐企授信额度下载/退回接口 + - 专项能力-乐企授信额度下载/退回接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 乐企授信额度下载/退回接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/creditQuota/downloadOrReturn.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 乐企授信额度下载/退回接口 + +### 接口说明 + +乐企模式授信额度下载\退回接口,调用该接口时,需保证对应企业税号查询过授信额度。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/creditQuota/downloadOrReturn.do | + +### 请求参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **说明** | **描述** | **长度** | +| taxNum | String | 是 | 需要查询的企业税号 | 企业税号 | 20 | +| amount | BigDecimal | 是 | 需要下载\退回的金额,只能为正数数字 | 处理额度 | (12,2) | +| type | Integer | 是 | 0:下载 1:退回 | 请求类型 | 1 | + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"amount": 100,

+

"type": 1

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | 是 | | 查询对象 | | +| vestPeriodBegin | Date | 是 | 2023-03-01 00:00:00 | 授信额度使用区间起 | \- | +| vestPeriodEnd | Date | 是 | 2023-03-31 00:00:00 | 授信额度使用区间止 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"vestPeriodBegin": "2023-03-01 00:00:00",

+

"vestPeriodEnd": "2023-03-31 00:00:00"

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度更新有效期接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度更新有效期接口.md new file mode 100644 index 0000000..d509d2d --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企授信额度更新有效期接口.md @@ -0,0 +1,104 @@ +--- +title: 乐企授信额度更新有效期接口 +aliases: + - 乐企授信额度更新有效期接口 + - 诺税通乐企授信额度更新有效期接口 + - 专项能力-乐企授信额度更新有效期接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 乐企授信额度更新有效期接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/creditQuota/updateVestPeriod.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 乐企授信额度更新有效期接口 + +### 接口说明 + +乐企模式授信额度更新有效期接口,调用该接口时,需保证对应企业税号查询过授信额度。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/creditQuota/updateVestPeriod.do | + +### 请求参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:------------------:|:--------:|:--------:| +| **名称** | **类型** | **必填** | **说明** | **描述** | **长度** | +| taxNum | String | 是 | 需要查询的企业税号 | 企业税号 | 20 | + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | 是 | | 查询对象 | | +| vestPeriodBegin | Date | 是 | 2023-03-01 00:00:00 | 授信额度使用区间起 | \- | +| vestPeriodEnd | Date | 是 | 2023-03-31 00:00:00 | 授信额度使用区间止 | \- | +| vestPeriod | String | 是 | 202303 | 授信额度属期 格式:yyyyMM | 6 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"vestPeriodBegin": "2023-03-01 00:00:00",

+

"vestPeriodEnd": "2023-03-31 00:00:00",

+

"vestPeriod": "202303"

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企数电发票库存申领接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企数电发票库存申领接口.md new file mode 100644 index 0000000..d59d639 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企数电发票库存申领接口.md @@ -0,0 +1,170 @@ +--- +title: 乐企数电发票库存申领接口 +aliases: + - 乐企数电发票库存申领接口 + - 诺税通乐企数电发票库存申领接口 + - 库存票源与打印-乐企数电发票库存申领接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 乐企数电发票库存申领接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/fullStock/applyStock.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 乐企数电发票库存申领接口 + +### 接口说明 + +向纳税人提供批量预赋码功能,用于企业给数字化电子发票自动赋发票号码。每次最多申请5000份数字化电子发票。 + +### 接口地址 + +| | +|:------------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/fullStock/applyStock.do | + +### 请求参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **说明** | **描述** | **长度** | +| taxNum | String | 是 | 企业税号 | 申领发票的纳税人识别号或统一社会信用代码 | 20 | +| applyNum | Integer | 是 | 申领数量 | 申领数量最大值:5000 | 10 | + +### 请求示例 + + +++ + + + + + +

{

+

"applyNum": 2,

+

"taxNum": "339901999999199"

+

}

+ +### 返回参数 + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填示例值描述长度
codeInteger200状态,200-成功,非200-失败6
messageString成功详细信息1024
dataObject查询对象
数据信息
applyNumInteger2领用数量10
invoiceNumStartString23446000000000000042
+

发票起始号码

+
20
invoiceNumEndString23446000000000000043发票终止号码20
+ +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"applyNum": 2,

+

"invoiceNumStart": "23446000000000000042",

+

"invoiceNumEnd": "23446000000000000043"

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企查询数电库存接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企查询数电库存接口.md new file mode 100644 index 0000000..3fa817b --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/乐企查询数电库存接口.md @@ -0,0 +1,105 @@ +--- +title: 乐企查询数电库存接口 +aliases: + - 乐企查询数电库存接口 + - 诺税通乐企查询数电库存接口 + - 库存票源与打印-乐企查询数电库存接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 乐企查询数电库存接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/fullStock/queryFullStock.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 乐企查询数电库存接口 + +### 接口说明 + +用于查询数电发票库存 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/fullStock/queryFullStock.do | + +### 请求参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:------------------:|:--------:|:--------:| +| **名称** | **类型** | **必填** | **说明** | **描述** | **长度** | +| taxNum | String | 是 | 需要查询的企业税号 | 企业税号 | 20 | + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | 是 | | 查询对象 | | +| **数据信息** | | | | | | +| availableNum | Integer | 是 | 1 | 可用库存数量 | \- | +| lockNum | Integer | 是 | 1 | 锁定库存数量 | \- | +| applyTime | String | 是 | 2023-03-01 10:00:00 | 最后领用时间 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"availableNum": 1,

+

"lockNum": 1,

+

"applyTime": "2023-03-01 10:00:00"

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备查询接口.md new file mode 100644 index 0000000..efe8a95 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备查询接口.md @@ -0,0 +1,137 @@ +--- +title: 企业设备查询接口 +aliases: + - 企业设备查询接口 + - 诺税通企业设备查询接口 + - 设备企业与配置-企业设备查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 企业设备查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`|` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 企业设备查询接口 + +### 接口说明 + +与3.19相比返回增加了包括开票员id在内的全量设备信息,以票种+设备唯一返回 + +### 接口地址 + +| | | +|:---|----| +| http\[s\]://\\[:\\]/salescore/extensioninfo/queryExtensionList.do | | + +### 请求参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **描述** | **最大长度** | +| companyId | Long | 否 | 10162 | 公司id | | +| taxnum | String | 是 | 150301199811285326 | 税号 | 20 | +| extensionNum | String | 否 | 0 | 分机号 | 12 | +| machineNum | String | 否 | 661565671900 | 机器号 | 12 | +| invoiceLine | String | 否 | c | 发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) | | +| clerkId | String | 否 | 1 | 开票员id | | + +### 请求示例 + + +++ + + + + + +

{

+

    "companyId" :"10162",

+

    "taxnum" : "150301199811285326",

+

    "clerkId" : "1",

+

    "invoiceLine" : "c",

+

    "machineNum" : "661565671900",

+

    "extensionNum" : "0"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | Integer | 是 | 200 | | 状态,200-成功,非200-失败 | 6 | +| message | String | | 成功 | | 详细信息 | 1024 | +| data | Object | | | | 数据对象 | | +| 数据信息 | | | | | | | +| extensionId | Long | | 1373 | | extension设备表的主键 | | +| InvoiceType | String | | c | | 发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) | | +| extensionNum | Integer | | 0 | | 分机号 | 12 | +| machineNum | String | | 661565671900 | | 机器编码 | 12 | +| terminalNum | Integer | | 1 | | 终端号 | 10 | +| serverType | Integer | | 14 | | 开票服务器类型 | | +| reportTaxStatus | Integer | | 1 | | 报税状态 -1:未知 0:未抄报 1:已抄报 | | +| clearCardStatus | Integer | | 1 | | 清卡状态 -1:未知 0:未清卡 1:已清卡 | | +| lockDate | String | | 2022-06-15 | | 锁死日期 | | +| singleBillingLimit | BigDecimal | | 999999.99 | | 单张开票限额 | | +| offlineAmount | BigDecimal | | 9999999991.00 | | 离线剩余金额 | | +| offlineTime | BigDecimal | | 720.00 | | 离线时限(h) | | +| updateTime | String | | 2022-05-25 07:37:02 | | 更新时间 | | +| clerkIds | String | | 1 | | 开票员id,多个用逗号隔开 | | +| loginAccount | String | | | | 数电账号 | | + +### 返回示例 + + +++ + + + + + +

{

+

    "code": 200,

+

    "message": "成功",

+

    "data": [

+

        {

+

            "invoiceType": "c",

+

            "extensionNum": 0,

+

            "machineNum": "661565671900",

+

            "terminalNum": 1,

+

            "serverType": 14,

+

            "reportTaxStatus": 1,

+

            "clearCardStatus": 1,

+

            "lockDate": "2022-06-15",

+

            "singleBillingLimit": "999999.99",

+

            "offlineAmount": "9999999991.00",

+

            "offlineTime": "720.00",

+

            "updateTime": "2022-05-25 07:37:02",

+

            "clerkIds": "1"

+

        }

+

    ]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备状态查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备状态查询接口.md new file mode 100644 index 0000000..a854dd2 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业设备状态查询接口.md @@ -0,0 +1,178 @@ +--- +title: 企业设备状态查询接口 +aliases: + - 企业设备状态查询接口 + - 诺税通企业设备状态查询接口 + - 设备企业与配置-企业设备状态查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 企业设备状态查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/extensioninfo/queryEquipmentStatusList.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:是 +> - 推荐优先级:P1(开票前保障) + + + +## 企业设备状态查询接口 + +### 接口说明 + +企业设备状态查询接口。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/extensioninfo/queryEquipmentStatusList.do | + +### 请求参数(用json格式接收) + +| | | | | | +|:-------------:|:--------:|:--------:|:--------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| extensionNum | String | 选填 | 分机号 | 5 | +| machineNumber | String | 选填 | 机器编号 | 12 | +| sellerTaxnum | String | 是 | 销方税号 | 20 | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum": "0",

+

"machineNumber": "123",

+

"sellerTaxnum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | List | | 查询成功则返回企业设备状态信息 | | +| 企业设备状态 | | | | | +| invoiceLine | String | 是 | 发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票 | | +| reportTaxStatus | Integer | | 报税状态 -1:未知 0:未抄报 1:已抄报 | | +| clearCardStatus | Integer | | 清卡状态 -1:未知 0:未清卡 1:已清卡 | | +| lockDate | Date | | 锁死日期 | | +| singleBillingLimit | BigDecimal | | 单张开票限额 | | +| offlineAmount | BigDecimal | | 离线剩余金额 | | +| offlineTime | BigDecimal | | 离线时限(h) | | +| updateTime | Date | | 更新时间 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

    "code":200,

+

    "message":"成功",

+

    "data":[

+

        {

+

            "invoiceLine":"s",

+

            "lockDate":"2020-07-01",

+

            "reportTaxStatus":1,

+

            "clearCardStatus":-1,

+

            "offlineAmount":"111111111080.99",

+

            "offlineTime":"999.00",

+

            "singleBillingLimit":"100000000.00",

+

            "updateTime":"2020-11-25 01:00:01"

+

        },

+

        {

+

            "invoiceLine":"c",

+

            "lockDate":"2020-07-01",

+

            "reportTaxStatus":1,

+

            "clearCardStatus":-1,

+

            "offlineAmount":"111111111019.60",

+

            "offlineTime":"999.00",

+

            "singleBillingLimit":"100000000.00",

+

            "updateTime":"2020-11-25 01:00:01"

+

        },

+

        {

+

            "invoiceLine":"p",

+

            "lockDate":"2020-06-15",

+

            "reportTaxStatus":1,

+

            "clearCardStatus":-1,

+

            "offlineAmount":"320122.95",

+

            "offlineTime":"999.00",

+

            "singleBillingLimit":"9999.99",

+

            "updateTime":"2021-02-02 11:32:01"

+

        },

+

        {

+

            "invoiceLine":"j",

+

            "lockDate":"2020-06-15",

+

            "reportTaxStatus":1,

+

            "clearCardStatus":-1,

+

            "offlineAmount":"999999999.00",

+

            "offlineTime":"999.00",

+

            "singleBillingLimit":"10000000.00",

+

            "updateTime":"2020-11-25 01:00:02"

+

        },

+

        {

+

            "invoiceLine":"r",

+

            "lockDate":"2020-06-15",

+

            "reportTaxStatus":1,

+

            "clearCardStatus":-1,

+

            "offlineAmount":"1111111.11",

+

            "offlineTime":"999.00",

+

            "singleBillingLimit":"10000000.00",

+

            "updateTime":"2020-11-25 01:00:02"

+

        }

+

    ]

+

}

+ +失败示例: + + +++ + + + + + +

{

+

    "code":900,

+

    "message":"不存在该设备抄报税信息",

+

    "data":null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业车架号等信息查询结果回传接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业车架号等信息查询结果回传接口.md new file mode 100644 index 0000000..7332c40 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/企业车架号等信息查询结果回传接口.md @@ -0,0 +1,192 @@ +--- +title: 企业车架号等信息查询结果回传接口 +aliases: + - 企业车架号等信息查询结果回传接口 + - 诺税通企业车架号等信息查询结果回传接口 + - 车辆辅助与回传-企业车架号等信息查询结果回传接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 企业车架号等信息查询结果回传接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`用户通过查询企业车架号、合格证状态接口中的callbackUrl字段提供回调地址。` +> - 请求方式:`POST` +> - 是否回调:是 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 企业车架号等信息查询结果回传接口 + +### 接口说明 + +企业车架号等信息查询结果回传接口。 + +### 接口地址 + +用户通过查询企业车架号、合格证状态接口中的callbackUrl字段提供回调地址。 + +### 请求参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | +| vehicleCode | String | 是 | 5656565 | 支持数字、字母、星号 | 车架号 | +| sellerTaxnum | String | 是 | 338801999999001 | 必填 | 车架号所属企业税号,进项归集则需传购方企业税号 | +| status | String | 是 | 1 | 必填 | 查询状态 1:查询成功,2:查询失败 | +| certificate | String | 否 | 125999915630 | 非必填 | 合格证号 | +| extensionNumber | integer | 否 | 123 | 非必填 | 分机号 | +| machineCode | String | 否 | 123456789012 | 非必填 | 机器编号 | +| terminalNum | String | 否 | 0 | 非必填 | 终端号 | +| importCertifyNum | String | 否 | 343455555 | 非必填 | 进口证明书号(进口车才有) | +| describe | String | 否 | | 非必填 | 描述信息 | +| brandModel | String | 否 | | 非必填 | 厂牌型号 | +| engineNum | String | 否 | | 非必填 | 发动机号码 | +| vehicleType | String | 否 | | 非必填 | 车辆类型 | +| inspectionOddNum | String | 否 | \- | 非必填 | 商检单号 | +| productOrigin | String | 否 | 上海 | 非必填 | 产地 | +| requestSrc | String | 是 | 3 | 必填 | 请求来源(0:未知;1-页面添加;2-页面导入;3-api进项调用;4-api用户调用;) | +| vehicleStatus | String | 是 | 1 | 必填 | 车架号状态:1-可开票;3-未知;4-不可开票 | + +### 请求示例 + +查询成功回调(表示该车架号可开票): + + +++ + + + + + +

{

+

"vehicleCode": "5656565",

+

"sellerTaxnum": "338801999999001",

+

"certificate": "125999915630",

+

"status": "1",

+

"extensionNumber": "123",

+

"machineCode": "123456789012",

+

"importCertifyNum": "343455555",

+

"describe": "机动车合格证号可用",

+

"brandModel": "",

+

"engineNum": "",

+

"vehicleType": "",

+

"inspectionOddNum": "",

+

"productOrigin": "",

+

"requestSrc": "4",

+

"vehicleStatus": "1"

+

}

+ +查询失败回调(表示该车架号不可开票): + + +++ + + + + + +

{

+

"vehicleCode": "5656565",

+

"sellerTaxnum": "338801999999001",

+

"certificate": "125999915630",

+

"status": "2",

+

"describe": "合格证存在,不属于本企业",

+

"requestSrc": "4",

+

"vehicleStatus": "4"

+

}

+ +【describe】字段文案包含: + +1、合格证已被使用 + +2、查询到合格证信息已使用,不允许开具发票 + +3、未查询到合格证信息,不允许开具发票 + + +4、合格证存在,不属于本企业! + +### 返回参数 + + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必须示例值更多限制描述最大长度
codeInteger0000

状态,0000-成功,

+

非0000-失败

6
messageString成功详细信息1024
+ +### 返回示例 + +示例: + + +++ + + + + + +

{

+

"code": 0000,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建_查询企业车架号_合格证状态接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建_查询企业车架号_合格证状态接口.md new file mode 100644 index 0000000..0866696 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建_查询企业车架号_合格证状态接口.md @@ -0,0 +1,132 @@ +--- +title: 创建/查询企业车架号、合格证状态接口 +aliases: + - 创建/查询企业车架号、合格证状态接口 + - 诺税通创建/查询企业车架号、合格证状态接口 + - 车辆辅助与回传-创建/查询企业车架号、合格证状态接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 创建/查询企业车架号、合格证状态接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/query/vehicleCodeIsInvoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 创建/查询企业车架号、合格证状态接口 + +### 接口说明 + +仅用于请求车架号在税局的是否可开票状态,改接口返回成功仅说明提交查询请求成功,因需和税局交互,故需异步通过查询或回调获取查询结果。请求成功的数据可至诺税通-库存管理-车辆库存中查看。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/query/vehicleCodeIsInvoice.do | + +### 请求参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| vehicleCode | String | 是 | 5656565 | 支持数字、字母、星号 | 车架号 | 23 | +| sellerTaxnum | String | 是 | 338801999999001 | 必填 | 车架号所属企业税号,进项归集则需传购方企业税号 | 20 | +| certificate | String | 否 | 125999915630 | 非必填 | 合格证号 | 50 | +| vehicle Type | String | 否 | 辉腾 | 非必填 | 车辆类型 | 40 | +| brandModel | String | 否 | 大众 | 非必填 | 厂牌型号 | 60 | +| warehouse | String | 否 | 上海 | 非必填 | 所在仓库 | 50 | +| extensionNum | String | 否 | 0 | 非必填 | 分机号 | 5 | +| machineNumber | String | 否 | 1234565654 | 非必填 | 机器编号 | 12 | +| terminalNum | String | 否 | 0 | 非必填 | 终端号 | 12 | +| engineNum | String | 否 | 21166621 | 非必填 | 发动机号码 | 50 | +| importCertifyNum | String | 否 | 343455555 | 非必填 | 进口证明书号 | 36 | +| inspectionOddNum | String | 否 | \- | 非必填 | 商检单号 | 32 | +| productOrigin | String | 否 | \- | 非必填 | 产地 | 32 | +| displacement | String | 否 | | 非必填 | 排量 | 50 | +| callbackUrl | String | 否 | http://127.0.0.1:8080/ | 当请求来源不是3时,必填 | 回调地址 | 255 | +| requestSrc | String | 否 | 4 | 非必填 | 请求来源(0:未知;1-页面添加;2-页面导入;3-api进项调用;4-api用户调用;)默认为4 | 1 | +| refreshFlag | String | 否 | 1 | 非必填 | 刷新标记。(0:不需要调用电票进行刷新;1-需要调用)默认为1 | 1 | + +### 请求示例 + + +++ + + + + + +

{

+

"vehicleCode": "5656565",

+

"sellerTaxnum": "338801999999001",

+

"certificate": "125999915630",

+

"callbackUrl": "http://127.0.0.1:8080/",

+

"brandModel": "品牌型号",

+

"warehouse": "上海"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | Integer | 是 | 200 | | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 提交成功 | | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "提交成功"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 3001,

+

"message": "结果查询中,请稍候重试"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建开票设备接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建开票设备接口.md new file mode 100644 index 0000000..447d6de --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/创建开票设备接口.md @@ -0,0 +1,230 @@ +--- +title: 创建开票设备接口 +aliases: + - 创建开票设备接口 + - 诺税通创建开票设备接口 + - 设备企业与配置-创建开票设备接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 创建开票设备接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/extensioninfo/insertExtension.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 创建开票设备接口 + +### 接口说明 + +新增开票设备接口,开票设备唯一性规则:当开票员存在时 同一个开票员+开票设备+票种唯一,当不存在开票员时,针对数电设备分机号或登录账号不可重复,针对其他设备,机器编号不可重复。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/extensioninfo/insertExtension.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
taxNumString企业税号20
extensionNumInteger分机号 0--65535数字-
terminalNumInteger终端号2
machineNumString机器编号 非数电设备必填32
serverTypeInteger

开票服务器类型 传对应的数字枚举

+

1:C48,

+

11:诺诺开票,

+

14:A9,

+

15:四川税局代开,

+

17:诺诺机柜,

+

18:税控服务器,

+

20:单机版,

+

22:数电发票开票模式(通用版),

+

24:数电发票开票模式(单机版),

+

25:数电发票开票模式(机柜版)

+

数电单机版和机柜版暂只支持半本地环境

4
loginAccountString数电开票账号 开票服务器类型为数电时必传20
elePasswordString数电开票密码,使用aes加密 开票服务器类型为数电时必传加密前1-20位
equipmentCabinetIdString机柜序列号 当服务器类型为诺诺机柜时必传30
taxMachinePwdString设备证书口令 当服务器类型为诺诺机柜时必传35
taxPlatPwdString设备口令 当服务器类型为诺诺机柜时必传100
serverAddressString服务器地址 当开票服务为A9或C48时必传100
invoiceTypelistString

当前设备可开发票种类,使用,隔开

+

p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质)

-
clerkListList<Long>开票员userId集合 当设备需要绑定开票员时必传-
projectListList<String>项目编码集合 当设备需要绑定设备信息时必传-
+ +### 请求示例 + + +++ + + + + + +

{

+

"taxnum": "150301199811285326",

+

"projectList": ["BJ01-002","20221008"],

+

"serverType": 14,

+

"extensionNum": "5",

+

"machineNum": "123456987456",

+

"terminalNum": "5",

+

"serverAddress": "123456",

+

"clerkList": [8,7],

+

"companName": "移动测试盘326",

+

"invoiceTypelist": "b,s,p,c"

+

}

+ +### 返回参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | String | 是 | 123456789 | 当前新增设备的唯一标识 | 20 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message": "成功",

+

"data": "123456789"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/删除发票信息接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/删除发票信息接口.md new file mode 100644 index 0000000..f1b8948 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/删除发票信息接口.md @@ -0,0 +1,117 @@ +--- +title: 删除发票信息接口 +aliases: + - 删除发票信息接口 + - 诺税通删除发票信息接口 + - 车辆辅助与回传-删除发票信息接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 删除发票信息接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/invoiceList/delete.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 删除发票信息接口 + +### 接口说明 + +支持开票失败状态发票删除以及开票中状态发票撤回,传入订单编号删除时支持删除审核开票记录。 + +### 接口地址 + +| | +|-----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/invoiceList/delete.do | + +### 请求参数(用json格式接收) + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| valueType | Integer | 是 | 值类型:0:发票流水号,1:订单编号 | \- | +| value | String | 是 | 若值类型为0,value为发票流水号的值;若值类型为1,value为订单编号的值 | \- | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"value": "21051310255001000228",

+

"valueType": 0

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

    "code":200,

+

    "message":"成功",

+

    "data":  null

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 900,

+

"message": "非开票失败、开票中状态的发票信息不允许删除",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新可下载发票库存接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新可下载发票库存接口.md new file mode 100644 index 0000000..335bfa9 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新可下载发票库存接口.md @@ -0,0 +1,118 @@ +--- +title: 刷新可下载发票库存接口 +aliases: + - 刷新可下载发票库存接口 + - 诺税通刷新可下载发票库存接口 + - 库存票源与打印-刷新可下载发票库存接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 刷新可下载发票库存接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/stock/flushDownloadableStock.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 刷新可下载发票库存接口 + +### 接口说明 + +从税局获取局端可下载发票的信息,仅支持开票服务器类型为诺诺机柜和诺诺开票。控制一分钟之内只能操作一次,请勿频繁操作。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/stock/flushDownloadableStock.do | + +### 请求参数 + +| | | | | | +|:-------------:|:--------:|:--------:|:------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| extensionNum | Integer | 是 | 分机号,纯数字 | \- | +| machineNumber | String | 是 | 机器编号,12位数字 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum": 0,

+

"machineNumber": "661565671900",

+

"sellerTaxnum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 900,

+

"message": "一分钟之内只能操作一次,请勿频繁操作",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取开票设备实时发票库存接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取开票设备实时发票库存接口.md new file mode 100644 index 0000000..c704360 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取开票设备实时发票库存接口.md @@ -0,0 +1,118 @@ +--- +title: 刷新获取开票设备实时发票库存接口 +aliases: + - 刷新获取开票设备实时发票库存接口 + - 诺税通刷新获取开票设备实时发票库存接口 + - 库存票源与打印-刷新获取开票设备实时发票库存接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 刷新获取开票设备实时发票库存接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/stock/refreshLocalStock.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 刷新获取开票设备实时发票库存接口 + +### 接口说明 + +触发刷新获取税盘实时库存接口,仅下发查询指令,需配合库存余量查询接口获取刷新后的实时库存。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/stock/refreshLocalStock.do | + +### 请求参数 + +| | | | | | +|:-------------:|:--------:|:--------:|:------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| extensionNum | Integer | 否 | 分机号,纯数字 | \- | +| machineNumber | String | 否 | 机器编号,12位数字 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum": 0,

+

"machineNumber": "661565671900",

+

"sellerTaxnum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 900,

+

"message": "未找到设备!",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取税盘实时成品油库存接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取税盘实时成品油库存接口.md new file mode 100644 index 0000000..71a1749 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/刷新获取税盘实时成品油库存接口.md @@ -0,0 +1,118 @@ +--- +title: 刷新获取税盘实时成品油库存接口 +aliases: + - 刷新获取税盘实时成品油库存接口 + - 诺税通刷新获取税盘实时成品油库存接口 + - 专项能力-刷新获取税盘实时成品油库存接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 刷新获取税盘实时成品油库存接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/oilStock/refreshProductOil.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 刷新获取税盘实时成品油库存接口 + +### 接口说明 + +刷新成品油库存接口 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/oilStock/refreshProductOil.do | + +### 请求参数 + +| | | | | | +|:-------------:|:--------:|:--------:|:------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| extensionNum | Integer | 是 | 分机号,纯数字 | \- | +| machineNumber | String | 否 | 机器编号,12位数字 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum": 0,

+

"machineNumber": "661565671900",

+

"sellerTaxnum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 913,

+

"message": "不支持的开票服务器类型!",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票交付.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票交付.md new file mode 100644 index 0000000..9321e1f --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票交付.md @@ -0,0 +1,181 @@ +--- +title: 发票交付 +aliases: + - 发票交付 + - 诺税通发票交付 + - 开票主链路-发票交付 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 发票交付 + +> [!info] 导航 +> 上级索引:[[README]] · [[02_开票主链路]] +> 文档链接:[总索引](../README.md) · [分组页](../02_开票主链路.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[02_开票主链路]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/invoice/delivery.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:是 +> - 推荐优先级:P1 + + + +## 发票交付 + +### 接口说明 + +发票交付接口,用于提供给企业对诺税通中开具的发票进行交付,具体的短信、邮件发送通道根据不同企业配置决定。 + +### 接口地址 + +| | +|:--------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/invoice/delivery.do | + +### 请求参数 + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必须示例值描述最大长度
sellerTaxnumString150301199811285326销方税号;销方税号和销方组织编码其一必填
sellerCompanyCodeString10162销方组织编码;销方税号和销方组织编码其一必填
invoiceCodeString050001901011发票代码12或10位12
invoiceNumberString93693692

发票号码

+

8或20位

20
notifyPhoneString交付手机号码;交付电话号码和交付邮箱至少有一个不为空,仅支持一个
notifyEmailString交付邮箱地址;交付电话号码和交付邮箱至少有一个不为空,仅支持一个
ccPhoneString抄送手机号,当推送手机notifyPhone有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个100
ccEmailString抄送邮箱,当推送邮箱notifyEmail有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个250
+ +### 请求实例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"sellerCompanyCode": "",

+

"invoiceCode": "",

+

"invoiceNumber": "93693692",

+

"notifyPhone": "15669968255",

+

"notifyEmail": "zhuyihui@nnuo.com"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | + +### 返回示例 + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票作废申请接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票作废申请接口.md new file mode 100644 index 0000000..e634888 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票作废申请接口.md @@ -0,0 +1,146 @@ +--- +title: 发票作废申请接口 +aliases: + - 发票作废申请接口 + - 诺税通发票作废申请接口 + - 作废重开与冲红-发票作废申请接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 发票作废申请接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[03_作废重开与冲红]] +> 文档链接:[总索引](../README.md) · [分组页](../03_作废重开与冲红.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[03_作废重开与冲红]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/invalid-oneInvoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:是 +> - 推荐优先级:P1 + + + +## 发票作废申请接口 + +### 接口说明 + +申请发票作废。 + +### 接口地址 + +| | +|:----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/invalid-oneInvoice.do | + +### 请求参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| invoiceId | String | 是 | 18081620564001000232 | 必填 | 发票请求流水号 | 20 | +| sellerTaxnum | String | 否 | 339901999999610 | 企业税号和组织编码必填其一 | 发票对应的销方企业税号 | 20 | +| companyCode | String | 否 | | 企业税号和组织编码必填其一 | 组织编码 | 20 | +| invoiceCode | String | 是 | 125999915630 | 必填 | 对应发票代码 | 12 | +| invoiceNumber | String | 是 | 00130865 | 必填 | 对应发票号码 | 8 | +| invalidReason | Integer | 否 | | 数电纸票时需要传(1:销货退回;2:开票有误;3:服务中止;4:其他),默认 2 | 作废原因 | 1 | +| specificReason | String | 否 | | 数电纸票且作废原因选择4-其他时需要传 | 其他作废原因详情 | 255 | +| columnFirst | String | 否 | 退货单号123 | 否 | 自定义列1 | | +| columnSecond | String | 否 | 退货单号123 | 否 | 自定义列2 | | +| columnThree | String | 否 | 退货单号123 | 否 | 自定义列3 | | +| invalidUserCode | String | 否 | 123 | 否 | 作废操作人用户编码,优先使用操作人id | 20 | +| invalidUserId | Long | 否 | 1 | 否 | 作废操作人ID | 11 | + +### 请求示例 + + +++ + + + + + +

{

+

"invoiceId": "18081620564001000232",

+

"sellerTaxnum": "339901999999610",

+

"invoiceCode": "125999915630",

+

"invoiceNumber": "00130865"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | Integer | 是 | 200 | | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 作废成功 | | 详细信息 | 1024 | +| data | String | 是 | 18081620564001000232 | | 提交成功则返回发票请求流水号 | 32 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "作废成功",

+

"data": "18081620564001000232"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 9151,

+

"message": "非当月纸票不能作废"

+

}

+ +### 状态码说明 + +| | | +|:----------:|:---------------------------------------------------------:| +| **状态码** | **描述** | +| 2733 | 发票不存在 | +| 2739 | 开票未完成,不可进行作废 | +| 2740 | 电票暂不支持作废 | +| 2741 | 发票被冲红不支持作废 | +| 2743 | 非当月发票不支持作废 | +| 2744 | 不支持重复作废 | +| 2749 | 发票已经作废 | +| 2751 | 企业税号不能为空 | +| 2755 | 入参invoiceId不能为空 | +| 2756 | 入参invoiceCode不能为空 | +| 2757 | 入参invoiceNumber不能为空 | +| 2758 | 入参invoiceId查询的发票记录中发票代码和入参发票代码不匹配 | +| 2759 | 入参invoiceId查询的发票记录中发票号码和入参发票号码不匹配 | diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票列表查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票列表查询接口.md new file mode 100644 index 0000000..82bc6b2 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票列表查询接口.md @@ -0,0 +1,2057 @@ +--- +title: 发票列表查询接口 +aliases: + - 发票列表查询接口 + - 诺税通发票列表查询接口 + - 开票主链路-发票列表查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 发票列表查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[02_开票主链路]] +> 文档链接:[总索引](../README.md) · [分组页](../02_开票主链路.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[02_开票主链路]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/queryInvoiceList.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:是 +> - 推荐优先级:P0 + + + +## 发票列表查询接口 + +### 接口说明 + +通过时间、自定义字段分页查询企业发票列表。 + +### 接口地址 + +| | +|:--------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/queryInvoiceList.do | + +### 请求参数 + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填示例值更多限制描述
sellerTaxnumString150301199811285326销方税号和销方组织编码二选一必填销方税号
companyCodeString销方税号和销方组织编码二选一必填销方组织编码
requestTypeInteger0默认为0请求类型,默认是0;0为按照订单添加时间查询,1为按照开票时间查询
startDateString2021-07-01格式:yyyy-MM-dd,开始时间和结束时间跨度不能超过365天开始时间
endDateString2021-07-21格式:yyyy-MM-dd,开始时间和结束时间跨度不能超过365天结束时间
columnFirstString1
columnSecondString2
columnThreeString3
isDetailInt0默认为0

是否包含明细

+

0不包含 1包含

pageNumint1默认为1当前页
pageSizeint15默认为15,分页条数最大支持50条分页条数
+ +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"requestType":1,

+

"startDate":"2021-07-01",

+

"endDate":"2021-07-21",

+

"columnFirst":"1",

+

"columnSecond":"2",

+

"columnThree":"3",

+

"isDetail":1,

+

"pageNum":1,

+

"pageSize":15

+

}

+ +### 返回参数 + + ++++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填示例值更多限制描述最大长度
codeInteger200状态,200-成功,非200-失败6
messageString查询成功详细信息1024
dataObject18081620564001000232查询成功则返回数据信息
数据信息
pageNumint1当前页数
pageSizeint15每页条数
pagesint1总页数
totalint2数据总数
listList查询成功则返回发票信息
发票信息
orderNoString20170104120207971529订单号64
invoiceIdString20092114394901000002流水号20
statusInteger2开票状态(0:开票中1:开票完成2:开票失败3:发票生成2
invalidStateInteger0发票作废状态: 0 未提交 , 1 作废成功 , 2 作废失败 , 3 已提交(作废中)。默认值02
invalidTimeString1604576878000发票作废时间
requestSrcInteger开票方式,0:api接口 1:手工开票 2:批量导入 5:本地提取1
errorMessageString[9999]HX1000 4003-发票数据写盘失败[TCD_769_25,离线发票累计金额超限!],发票代码或号码为空开票异常信息128
pdfUrlStringhttps://inv.jss.com.cn/group1/M00/A6/4C/wKgHPll_IU-AVELfAACNq5bmzFM769.pdf发票pdf地址255
paperPdfUrlStringPDF含底图255
imageUrlString发票jpg地址,清单票发票主信息与清单信息以”,”隔开255
ofdUrlString发票ofd地址255
invoiceTimeString1604576878000开票日期19
invoiceCodeString125999915630发票代码12
invoiceNumberString00130865发票号码8
allElectronicInvoiceNumberString数电发票号码20
taxFreeAmountTotalBigDecimal不含税金额15.2
taxTotalBigDecimal税额15.2
taxAmountTotalBigDecimal含税金额15.2
buyerNameString浙江爱信诺购方名称100
buyerTaxnumString339901999999103购方税号20
buyerAddressString浙江省杭州市万塘路购方地址100
buyerPhoneString15858585858购方电话50
buyerBankString购方开户行购方开户行100
buyerAccountString购方银行账号购方银行账号30
invoiceLineString1发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质)2
checkCodeString校验码20
qrCodeString二维码3000
machineNumberString机器编号12
invoiceCipherString发票密文300
clerkerString张三开票人20
payeeString李四收款人20
checkerString王五复核人20
sellerNameString浙江爱信诺销方名称100
sellerTaxnumString330100555190356销方税号20
sellerAddressString杭州市西湖区万塘路销方地址100
sellerPhoneString0571-81029365销方电话20
sellerBankString开户行销方开户行100
sellerAccountString开户行账号销方开户行账号30
remarkString备注信息备注

数电电票:200(中文计算一位)

+

其他发票:230(中文计算两位)

productOilFlagInteger0

成品油标志,

+

0:非成品油;

+

1:成品油

2
vehicleFlagInteger0默认00:非机动车。1:机动车2
extensionNumInteger开票请求分机号,范围为0-655355
terminalNumInteger开票请求终端号5
notifyPhoneString推送手机20
notifyEmailStringtest@xx.com推送邮箱50
deptIdString9F7E9439CA8B4C60A2FFF3EA3290B088部门门店id(诺诺系统中的id)32
clerkIdString3F7EA439CA8B4C60A2FFF3EA3290B084开票员id(诺诺系统中的id)32
oriInvoiceCodeString125999915630原发票代码12
oriInvoiceNumberString00130865原发票号码8
oldEleInvoiceNumberString原数电发票号码20
listFlagInteger0

清单标志,

+

0:非清单,1:清单

2
listGoodsNameString详见销货清单注意:税局要求清单项目名称为(详见销货清单)90
orderDateString2022-05-12年-月-日订单日期10
deliverDateString2022-05-12年-月-日发货日期
columnFirstString业务调用方自定义字段一业务调用方自定义字段一255
columnSecondString业务调用方自定义字段二业务调用方自定义字段二255
columnThreeString业务调用方自定义字段三业务调用方自定义字段三255
projectCodeString项目编码64
projectNameString项目名称300
mailNoString快递单号
businessTypeString枚举值来源为基础字典配置业务类型
ccPhoneString抄送手机,多个以英文逗号分隔100
ccEmailString抄送邮箱,多个以英文逗号分隔250
invalidReasonInteger数电纸票作废原因 1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回)1
specificReasonString其他作废原因详情(作废原因为4 且回传其他信息时返回)255
specificFactorString特定要素:0普通发票 01成品油 03建筑服务 04货物运输发票 05不动产销售发票 06不动产租赁发票 09旅客运输发票 14机动车 16农产品收购 33二手车反向开具 35矿产品发票50
subjectAccountCodeStringT123核算主体编码维护在诺税通的“核算主体编码”200
subjectAccountString核算主体名称核算主体名称核算主体名称200
redReasonInteger11:销售退回2:开票有误3:服务终止4:销售折让冲红原因1
naturalPersonFlagInteger0购买方自然人标志:0-否(默认)、1-是2
invoiceGoodsTransportsList货物运输发票时必填货物运输明细最大长度2000
realPropertyRentObject开具不动产租赁发票时必填不动产租赁发票信息
invoiceBuildingInfoObject建筑服务发票时必填建筑服务信息
货物运输明细
goodsNameString煤炭运输货物名称80
originString北京市市辖区东城区起运地80
destinationString北京市市辖区丰台区到达地80
transportTool1运输工具种类:1铁路运输、2公路运输、3.水路运输、4.航空运输、5.管道运输1
transportToolNumString车牌号DD运输工具牌号80
detailList发票明细信息
发票明细
detailIndexInteger0明细行序号5
goodsNameString商品名称90
taxrateString0.16税率10
withTaxFlagInteger

单价含税标志:

+

0:不含税;

+

1:含税

2
taxFreePriceBigDecimal不含税单价32.16
goodsPriceBigDecimal含税单价32.16
goodsNumBigDecimal数量32.16
taxAmountBigDecimal含税金额15.2
taxFreeAmountBigDecimal不含税金额15.2
taxBigDecimal税额15.2
goodsUnitString单位22
specTypeString规格型号40
commodityCodeString商品编码64
goodsCodeString税收分类编码19
goodsCodeAbbString税收分类编码简称200
detailTypeInteger

明细行性质:

+

0:正常行;

+

1:折扣行;

+

2:被折扣行

2
favouredPolicyFlagInteger

优惠政策标识:

+

0:不使用;

+

1:使用

2
favouredPolicyNameString优惠政策内容,如:即征即退、免税、简易征收 等50
zeroRateFlagInteger

零税率标识:

+

空:非零税率;

+

1:免税;

+

2:不征税;

+

3:普通零税率

2
selfCodeString自行编码20
deductionBigDecimal扣除额15.2
columnFirstString自定义字段1255
columnSecondString自定义字段2255
columnThreeString自定义字段3255
columnFourString自定义字段4255
columnFiveString自定义字段5255
favouredPolicyCodeString01:简易征收 02:稀土产品 03:免税 04:不征税 05:先征后退 06:100%先征后退 07:50%先征后退 08:按3%简易征收 09:按5%简易征收 10:按5%简易征收减按1.5%计征 11:即征即退30% 12:即征即退50% 13:即征即退70% 14:即征即退100% 15:超税负3%即征即退 16:超税负8%即征即退 17:超税负12%即征即退 18:超税负6%即征即退

优惠政策编码

+

数电发票特有字段

机动车(j)/二手车(u)发票明细
vehicleTypeString车辆类型40
brandModelString厂牌型号60
productOriginString产地32
certificateString合格证号50
importCertifyNumString进口证明书号50
inspectionOddNumString商检单号50
engineNumString发动机号码50
vehicleCodeString车辆识别代号/车架号码50
taxOfficeCodeString主营税务机关及代码100
intactCertificateNumString完税凭证号码50
measureUnitsString吨位20
maxCapacityString限乘人数10
produceCompanyNameString生产企业名称50
organizationCodeString339901999999103其他证件号码30
organizeTypeString发票种类为二手车发票返回开票方类型:1.经营单位2.拍卖单位3.二手车市场(二手车专用)2
licenseNumberString发票种类为二手车发票返回车牌号码(二手车专用)20
registerCertNoString发票种类为二手车发票返回登记证号(二手车专用)20
vehicleManagementNameString发票种类为二手车发票返回转入地车辆管理所名称(二手车专用)80
salerNameString发票种类为二手车发票返回卖方单位/个人名称(二手车专用)80
salerNumString发票种类为二手车发票返回卖方单位代码/身份证号码(二手车专用)20
salerAddressString卖方单位/个人地址(二手车专用)80
salerPhoneString卖方电话(二手车专用)20
不动产租赁发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
rentStartDateString2023-02-17yyyy-MM-dd格式租赁期起期10
rentEndDateString2023-02-18yyyy-MM-dd格式租赁期止期10
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位1
建筑服务发票信息
buildingAddressString浙江省杭州市西湖区严格按照省市区/县层级传入建筑服务发生地-
detailedAddressStringXXXX街道XXX号建筑服务发生地+详细地址最大长度120详细地址120
landVatItemNoString1234556土地增值税项目编号16
itemNameString1234556项目名称80
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertySellObject不动产销售发票时必填不动产销售发票信息
不动产销售发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位10
realPropertyContractNumberString不动产单元代码/网签合同备案编号28
incrementTaxNumberString土地增值税项目编号18
priceString核定计税价格20
taxAmountString核定计税价格有值时,实际成交含税金额必填实际成交含税金额20
invoiceTravellerTransportInfoListList开旅客运输发票时传入出行人信息出行人信息
出行人信息
travellerString出行人20
travelDateString年-月-日格式出行日期 年-月-日10
travellerCardTypeString

101-组织机构代码证

+

102-营业执照

+

103-税务登记证

+

199-其他单位证件

+

201-居民身份证

+

202-军官证

+

203-武警警官证

+

204-士兵证

+

205-军队离退休干部证

+

206-残疾人证

+

207-残疾军人证(1-8级)

+

208-外国护照

+

210-港澳居民来往内地通行证

+

212-中华人民共和国往来港澳通行证

+

213-台湾居民来往大陆通行证

+

214-大陆居民往来台湾通行证

+

215-外国人居留证

+

216-外交官证

+

217-使(领事)馆证

+

218-海员证

+

219-香港永久性居民身份证

+

220-台湾身份证

+

221-澳门特别行政区永久性居民身份证

+

222-外国人身份证件

+

224-就业失业登记证

+

225-退休证

+

226-离休证

+

227-中国护照

+

228-城镇退役士兵自谋职业证

+

229-随军家属身份证明

+

230-中国人民解放军军官转业证书

+

231-中国人民解放军义务兵退出现役证

+

232-中国人民解放军士官退出现役证

+

233-外国人永久居留身份证(外国人永久居留证)

+

234-就业创业证

+

235-香港特别行政区护照

+

236-澳门特别行政区护照

+

237-中华人民共和国港澳居民居住证

+

238-中华人民共和国台湾居民居住证

+

239-《中华人民共和国外国人工作许可证》(A类)

+

240-《中华人民共和国外国人工作许可证》(B类)

+

241-《中华人民共和国外国人工作许可证》(C类)

+

291-出生医学证明

+

299-其他个人证件

出行人证件类型5
travellerCardNoString出行人证件号码20
travelPlaceString出行地80
arrivePlaceString到达地80
vehicleTypeInteger
    +
  1. 飞机

  2. +
  3. 火车

  4. +
  5. 长途汽车

  6. +
  7. 公共交通

  8. +
  9. 出租车

  10. +
  11. 汽车

  12. +
  13. 船舶

    +

    9-其他

  14. +
交通工具类型2
vehicleLevelString

当交通工具类型是火车、飞机、船舶时必填选择,其他交通工具时可选填

+

当交通工具类型是火车时,必填,下拉框选择,可选项是 一等座、二等座、软席(软座、软卧)、硬卧(硬座、硬卧)

+

当交通工具类型是飞机时,必填,下拉框选择,可选项是 公务舱、头等舱、经济舱

+

当交通工具类型是船舶事,必填,下拉框选择,可选项是 一等舱、二等舱、三等舱

+

当交通工具类型是其他时,选填

交通工具等级20
+ +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"data": {

+

"pageNum": 1,

+

"pageSize": 15,

+

"pages": 1,

+

"total": 2,

+

"list": [

+

{

+

"buyerAccount": "123456789012345678901234567890",

+

"buyerAddress": "浙江金华婺城区",

+

"buyerBank": "工商银行",

+

"buyerName": "浙江师范大学",

+

"buyerPhone": "0579-88888887",

+

"buyerTaxnum": "339901999999142",

+

"checkCode": "44247972354050973155",

+

"checker": "ying",

+

"clerkId": "",

+

"clerker": "自动开票",

+

"columnFirst": "1",

+

"columnSecond": "2",

+

"columnThree": "3",

+

"deptId": "",

+

"extensionNum": 0,

+

"imageUrl": "https://invtest.nntest.cn/fp/aUl7efywBqGm-WqwuBHyR-TuSTdyr1vDp6vV4xUQ-Ms51qY2OEO1t8aughx4NPG82l_jECyLMEzBoXrlwxJuig.jpg",

+

"invalidState": 0,

+

"invoiceCipher": "-&lt;3359597+2969&gt;-08&lt;7+8*03&lt;3/-4845-+4&gt;450658*517/659574+&gt;530&lt;/14444313-4/&gt;21+&lt;3++9232-&gt;9-*4*-80-/*2418/7014&lt;1",

+

"invoiceCode": "150010020011",

+

"invoiceId": "21062515355501000053",

+

"invoiceLine": "p",

+

"invoiceNumber": "13458270",

+

"invoiceTime": 1624606697000,

+

"invalidTime":"1604576878000",

+

"requestSrc":"1",

+

"listFlag": 0,

+

"listGoodsName": "",

+

"machineNumber": "661565671900",

+

"notifyEmail": "",

+

"notifyPhone": "",

+

"ofdUrl": "",

+

"orderNo": "d66d077f01484315b6d44dca86295d16",

+

"oriInvoiceCode": "150010020011",

+

"oriInvoiceNumber": "13458270",

+

"payee": "zhangsan",

+

"pdfUrl": "https://invtest.nntest.cn/fp/aUl7efywBqGm-WqwuBHyR7VgIQHxTpPvSxy-wAnGgAitSwrfyaeVMyJhHWPtA3NNDC3H8IVGaK4gfceqZubnfg.pdf",

+

"productOilFlag": 0,

+

"qrCode": "01,10,150010020011,13458270,1.00,20210625,44247972354050973155,F829,",

+

"remark": "222",

+

"sellerAccount": "66998877665544332211",

+

"sellerAddress": "金色西溪",

+

"sellerBank": "中国银行",

+

"sellerName": "移动测试盘",

+

"sellerPhone": "41312",

+

"sellerTaxnum": "150301199811285326",

+

"status": 1,

+

"taxAmountTotal": 1.03,

+

"taxFreeAmountTotal": 1,

+

"taxTotal": 0.03,

+

"terminalNum": 1,

+

"vehicleFlag": 0,

+

"projectCode": "项目名称",

+

"projectName": "项目编码",

+

"detail":[

+

{

+

"detailIndex":0,

+

"detailType":0,

+

"goodsName":"苹果",

+

"withTaxFlag":0,

+

"goodsPrice":"1.09",

+

"taxFreePrice":"1",

+

"goodsNum":"1",

+

"taxrate":"0.09",

+

"specType":"20个",

+

"goodsUnit":"箱",

+

"goodsCode":"1010115010100000000",

+

"goodsCodeAbb":"水果",

+

"favouredPolicyFlag":0,

+

"zeroRateFlag":"",

+

"favouredPolicyName":"",

+

"selfCode":null,

+

"deduction":null,

+

"taxAmount":"1.09",

+

"taxFreeAmount":"1.00",

+

"tax":"0.09",

+

"vehicleType":"三轮运输车",

+

"brandModel":"厂牌型号",

+

"productOrigin":"产地",

+

"certificate":"合格证号",

+

"importCertifyNum":"进出口证明书号",

+

"inspectionOddNum":"商检单号",

+

"engineNum":"发动机号",

+

"vehicleCode":"车辆识别代号",

+

"measureUnits":"吨",

+

"maxCapacity":"10",

+

"organizationCode":"组织机构代码",

+

"produceCompanyName":"生产企业名称",

+

"columnFirst":"自定义字段1",

+

"columnSecond":"自定义字段2",

+

"columnThree":"自定义字段3",

+

"columnFour":"自定义字段4",

+

"columnFive":"自定义字段5"

+

}

+

]

+

},

+

{

+

"buyerAccount": "123456789012345678901234567890",

+

"buyerAddress": "浙江金华婺城区",

+

"buyerBank": "工商银行",

+

"buyerName": "浙江师范大学",

+

"buyerPhone": "0579-88888887",

+

"buyerTaxnum": "339901999999142",

+

"checkCode": "51425603410203243765",

+

"checker": "ying",

+

"clerkId": "",

+

"clerker": "自动开票",

+

"columnFirst": "1",

+

"columnSecond": "2",

+

"columnThree": "3",

+

"deptId": "",

+

"extensionNum": 0,

+

"imageUrl": "https://invtest.nntest.cn/fp/yGRZLqKEdmrazWrzrjyAPXvOrBm2E5eX9CDq6WYWwEn21ct8SLwlfbXKcy6UdWC_E-Tl9W-xZzVPzVC3q7bviA.jpg",

+

"invalidState": 0,

+

"invoiceCipher": "2/32-21/5979-&lt;1/*380-&gt;-1864&lt;8&lt;4&lt;015&lt;5*--+17/+/8945/6+248--9//0+&gt;00126-9+14/184-/&lt;38+**+10&lt;917+1529857*8*&lt;001",

+

"invoiceCode": "150010020012",

+

"invoiceId": "21062811273101175660",

+

"invoiceLine": "p",

+

"invoiceNumber": "35424243",

+

"invoiceTime": 1624850993000,

+

"listFlag": 0,

+

"listGoodsName": "",

+

"machineNumber": "661565671900",

+

"notifyEmail": "",

+

"notifyPhone": "",

+

"ofdUrl": "",

+

"orderNo": "f74cfabe58204444b441e41b9ec2ec06",

+

"oriInvoiceCode": "150010020012",

+

"oriInvoiceNumber": "35424243",

+

"payee": "zhangsan",

+

"pdfUrl": "https://invtest.nntest.cn/fp/yGRZLqKEdmrazWrzrjyAPXMQKkuNfD09X5SFPQgz6v6H9YJPp9QXzJa9qgiWf2hfW5gEdDPUwwzLmuYXHLvBHQ.pdf",

+

"productOilFlag": 0,

+

"qrCode": "01,10,150010020012,35424243,1.00,20210628,51425603410203243765,4319,",

+

"remark": "222",

+

"sellerAccount": "66998877665544332211",

+

"sellerAddress": "金色西溪",

+

"sellerBank": "中国银行",

+

"sellerName": "移动测试盘",

+

"sellerPhone": "41312",

+

"sellerTaxnum": "150301199811285326",

+

"status": 1,

+

"taxAmountTotal": 1.03,

+

"taxFreeAmountTotal": 1,

+

"taxTotal": 0.03,

+

"terminalNum": 1,

+

"vehicleFlag": 0,

+

"projectCode": "项目名称",

+

"projectName": "项目编码",

+

"detail":[

+

{

+

"detailIndex":0,

+

"detailType":0,

+

"goodsName":"苹果",

+

"withTaxFlag":0,

+

"goodsPrice":"1.09",

+

"taxFreePrice":"1",

+

"goodsNum":"1",

+

"taxrate":"0.09",

+

"specType":"20个",

+

"goodsUnit":"箱",

+

"goodsCode":"1010115010100000000",

+

"goodsCodeAbb":"水果",

+

"favouredPolicyFlag":0,

+

"zeroRateFlag":"",

+

"favouredPolicyName":"",

+

"selfCode":null,

+

"deduction":null,

+

"taxAmount":"1.09",

+

"taxFreeAmount":"1.00",

+

"tax":"0.09",

+

"vehicleType":"三轮运输车",

+

"brandModel":"厂牌型号",

+

"productOrigin":"产地",

+

"certificate":"合格证号",

+

"importCertifyNum":"进出口证明书号",

+

"inspectionOddNum":"商检单号",

+

"engineNum":"发动机号",

+

"vehicleCode":"车辆识别代号",

+

"measureUnits":"吨",

+

"maxCapacity":"10",

+

"organizationCode":"组织机构代码",

+

"produceCompanyName":"生产企业名称",

+

"columnFirst":"自定义字段1",

+

"columnSecond":"自定义字段2",

+

"columnThree":"自定义字段3",

+

"columnFour":"自定义字段4",

+

"columnFive":"自定义字段5"

+

}

+

]

+

}

+

]

+

},

+

"message": "成功"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code":2649,

+

"message":"销方税号不能为空"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票库存余量查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票库存余量查询接口.md new file mode 100644 index 0000000..de0ec67 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票库存余量查询接口.md @@ -0,0 +1,146 @@ +--- +title: 发票库存余量查询接口 +aliases: + - 发票库存余量查询接口 + - 诺税通发票库存余量查询接口 + - 库存票源与打印-发票库存余量查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 发票库存余量查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/queryStockInfoList.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:是 +> - 推荐优先级:P1(开票前保障) + + + +## 发票库存余量查询接口 + +### 接口说明 + +查询开票设备的发票库存余量。 + +### 接口地址 + +| | +|:----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/queryStockInfoList.do | + +### 请求参数(用json格式接收) + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **其他说明** | **描述** | **长度** | +| extensionNum | String | 否 | | 分机号 | 5 | +| machineNumber | String | 否 | | 机器编号 | 12 | +| sellerTaxnum | String | 否 | 销方税号、销方公司编码、销方公司名字三个必填其一 | 销方税号 | 20 | +| sellerCompanyCode | String | 否 | 销方税号、销方公司编码、销方公司名字三个必填其一 | 销方公司编码 | 20 | +| sellerCompanyName | String | 否 | 销方税号、销方公司编码、销方公司名字三个必填其一 | 销方公司名字 | 100 | +| searchRange | Integer | 否 | | 查询范围,0:全部,1:仅在诺税通开票设备中维护的设备余量信息;默认0 | 1 | + +### 请求示例 + + +++ + + + + + +

{

+

  "extensionNum": "0",

+

  "machineNumber": "661565671900",

+

  "sellerTaxnum": "150301199811285326",

+

  "sellerCompanyName":"移动测试盘326",

+

  "sellerCompanyCode" : "1100"

+

}

+ +### 返回参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | List | | 查询成功则返回红字申请信息 | | +| 库存信息 | | | | | +| sellerTaxnum | String | | 销方税号 | | +| extensionNum | Integer | | 分机号 | | +| machineNumber | String | | 机器编号 | | +| stocks | List | | 库存信息列表 | | +| 库存明细 | | | | | +| terminalNum | Integer | | 终端号 | | +| invoiceLine | String | | 发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票 | | +| invoiceCode | String | | 发票代码 | | +| invoiceNumStart | String | | 起始号码 | | +| inoviceNumEnd | String | | 终止号码 | | +| remainNum | Integer | | 剩余分数 | | +| isDefault | Integer | | 是否默认卷:1-是 0-否(默认) | | +| createTime | Date | | 更新时间 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

{

+

"sellerTaxnum": "150301199811285326",

+

"extensionNum": 0,

+

"machineNumber": null,

+

"stocks": [

+

{

+

"terminalNum": 0,

+

"invoiceLine": "s",

+

"invoiceCode": "5000201530",

+

"invoiceNumStart": "71895758",

+

"invoiceNumEnd": "0",

+

"remainNum": 0,

+

"createTime": "2021-06-04 17:20:24"

+

},

+

{

+

"terminalNum": 0,

+

"invoiceLine": "s",

+

"invoiceCode": "5000201530",

+

"invoiceNumStart": "85199644",

+

"invoiceNumEnd": "0",

+

"remainNum": 0,

+

"createTime": "2021-06-04 17:20:24"

+

}

+

]

+

}

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票重开接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票重开接口.md new file mode 100644 index 0000000..92543b9 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/发票重开接口.md @@ -0,0 +1,186 @@ +--- +title: 发票重开接口 +aliases: + - 发票重开接口 + - 诺税通发票重开接口 + - 作废重开与冲红-发票重开接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 发票重开接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[03_作废重开与冲红]] +> 文档链接:[总索引](../README.md) · [分组页](../03_作废重开与冲红.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[03_作废重开与冲红]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/reInvoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 发票重开接口 + +### 接口说明 + +当请求诺税通开具的发票返回开票失败时,可通过调用该接口触发开票失败的发票数据重新发起开票。 + +### 接口地址 + +| | +|--------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/reInvoice.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
sellerTaxNumString

销方税号

+

企业税号和组织编码必填其一

20
companyCodeString

组织编码

+

企业税号和组织编码必填其一

20
invoiceIdString发票流水号(invoiceId和orderNo任一必填)32
orderNoString订单号(invoiceId和orderNo任一必填)32
nextInvoiceCodeString

下一张发票代码

+

支持票种:c普通发票(纸质)f收购发票(纸质)

+

指定发票卷重开时必传

12
nextInvoiceNumString

下一张发票号码

+

支持票种:c普通发票(纸质)f收购发票(纸质)

+

当【下一张发票代码】有值时,【下一张发票号码】和【发票终止号码】二选一必填

invoiceNumEndString

发票终止号码

+

支持票种:c普通发票(纸质)f收购发票(纸质)

+

当【下一张发票代码】有值时,【下一张发票号码】和【发票终止号码】二选一必填

+ +### 请求示例 + + +++ + + + + + +

{

+

"invoiceId": "21031114572601000143",

+

"orderNo": "21031114572601000143",

+

"sellerTaxnum": "150301199811285326",

+

"nextInvoiceNum": "1234456",

+

"nextInvoiceCode": "123456"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 2733,

+

"message": "该发票不存在"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/审核开票删除回传接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/审核开票删除回传接口.md new file mode 100644 index 0000000..6009344 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/审核开票删除回传接口.md @@ -0,0 +1,140 @@ +--- +title: 审核开票删除回传接口 +aliases: + - 审核开票删除回传接口 + - 诺税通审核开票删除回传接口 + - 车辆辅助与回传-审核开票删除回传接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 审核开票删除回传接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`用户通过开票请求中的bizCallbackUrl字段提供回调地址。` +> - 请求方式:`POST` +> - 是否回调:是 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 审核开票删除回传接口 + +### 接口说明 + +返回审核开票删除信息的订单编号和税号等信息 + +注意:请按照文档要求提供接口。 + +### 接口地址 + +用户通过开票请求中的bizCallbackUrl字段提供回调地址。 + +### 请求参数(用json格式接收) + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **描述** | **最大长度** | +| orderNo | String | 是 | 20220426094552511469 | 订单编号 | 64 | +| sellerTaxnum | String | 是 | 150301199811285326 | 销方税号 | 20 | +| invoiceStatus | Integer | 是 | 6 | 发票处理结果: 6:审核开票删除 | 1 | +| formId | String | 否 | CB00696BD1094735849897E66029AB45 | 流程审批单id,回传给oa时必须 | 50 | +| formType | int | 否 | 2 | 流程类型(1:用印申请,2:蓝票开具申请,3:红票开具申请,4:发票作废申请),回传给oa时必须 | | +| deleteDate | String | 是 | 2022-04-26 14:45:30 | 删除时间yyyy-MM-dd HH:mm:ss格式 | | +| deleteUserId | long | 是 | 1 | 删除操作人id | | +| deleteUserName | String | 是 | 张三 | 删除操作人名称 | | + +### 请求示例 + + +++ + + + + + +

{

+

"deleteDate":"2022-04-29 15:51:39",

+

"deleteUserId":1,

+

"deleteUserName":"张三",

+

"formId":"7BCB5E90EAF64B9C903D920BF82591E4",

+

"formType":2,

+

"orderNo":"20220425091325328406",

+

"sellerTaxnum":"150301199811285326"

+

}

+ +### 返回参数 + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必须示例值描述最大长度
codeInteger200

状态,0000或200-成功,

+

非0000,非200-失败

6
messageString成功详细信息1024
+ +### 返回示例 + +示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传.md new file mode 100644 index 0000000..2cbb6df --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传.md @@ -0,0 +1,620 @@ +--- +title: 开票结果回传 +aliases: + - 开票结果回传 + - 诺税通开票结果回传 + - 开票主链路-开票结果回传 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 开票结果回传 + +> [!info] 导航 +> 上级索引:[[README]] · [[02_开票主链路]] +> 文档链接:[总索引](../README.md) · [分组页](../02_开票主链路.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[02_开票主链路]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`用户通过开票请求中的bizCallbackUrl字段提供回调地址。` +> - 请求方式:`POST` +> - 是否回调:是 +> - 是否主链路:是 +> - 推荐优先级:P0(如采用回调模式) + + + +## 开票结果回传 + +### 接口说明 + +返回开票申请结果。 + +注意:请按照文档要求提供接口。 + +### 接口地址 + +用户通过开票请求中的bizCallbackUrl字段提供回调地址。 + +### 请求参数(用json格式接收) + + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必须示例值更多限制描述最大长度
orderNoString订单编号64
sellerTaxnumString339901999999610销方税号20
invoiceIdString20011617430401068182发票流水号32
successFlagbooleantrueTrue:开票成功;false:开票失败1
vehicleFlagInteger0可不填,默认00:非机动车。1:机动车2
productOilFlagInteger0可不填,默认0成品油标志:0非成品油,1成品油,默认为02
invoiceStatusInteger

发票处理结果: 1:开票成功、 2:开票失败、3:作废成功、4:作废失败;5:开票失败删除成功。

+

结果处于开票成功、 开票失败、作废成功、作废失败,开票失败删除成功触发回传

1
errorMessageString[9999]HX1000 4003-发票数据写盘失败[TCD_769_25,离线发票累计金额超限!],发票代码或号码为空开票异常信息128
pdfUrlStringhttps://inv.jss.com.cn/group1/M00/A6/4C/wKgHPll_IU-AVELfAACNq5bmzFM769.pdf发票pdf地址,仅开票成功且版式文件为pdf时返回255
paperPdfUrlString纸票pdf地址(含底图)256
imageUrlString发票jpg地址,清单票发票主信息与清单信息以”,”隔开,仅开票成功会返回255
ofdUrlString发票ofd地址,仅开票成功且版式文件为ofd时返回255
orderDateString2022-05-12年-月-日订单日期10
deliverDateString2022-05-12年-月-日发货日期10
invoiceTimeDate1604576878000开票日期,仅开票成功会返回13
invalidTimeDate1615985882000作废日期,仅作废成功后返回13
invoiceCodeString125999915630发票代码,仅开票成功会返回12
invoiceNumberString00130865发票号码,仅开票成功会返回20
allElectronicInvoiceNumberString数电发票号码,仅数电发票(电票+纸票)开票成功会返回20
oriInvoiceCodeString红票对应的蓝票发票代码12
oriInvoiceNumberString红票对应的蓝票发票号码20
oldEleInvoiceNumberString红票对应的蓝票数电发票号码20
billNoString红字申请流水号,仅红字专票返回24
billInfoNoString红字申请表编号,仅红字专票返回24
taxFreeAmountTotalBigDecimal不含税金额,仅开票成功会返回15.2
taxTotalBigDecimal税额,仅开票成功会返回15.2
taxAmountTotalBigDecimal含税金额,仅开票成功会返回15.2
buyerNameString浙江爱信诺购方名称,仅开票成功会返回100
buyerTaxnumString339901999999103购方税号,仅开票成功会返回20
sellerNameString浙江爱信诺销方名称,仅开票成功会返回100
invoiceLineString1发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质) 仅开票成功会返回2
columnFirstString有值就回传企业开票时传入自定义字段1
columnSecondString有值就回传企业开票时传入自定义字段2
columnThreeString有值就回传企业开票时传入自定义字段3
requestSrcInteger开票方式,0:api接口 1:手工开票 2:批量导入 5:本地提取1
mailNoString快递单号
businessTypeString枚举值来源为基础字典配置业务类型
relatedStateInteger有值就回传关联状态(0:未关联 1:关联中 2:关联成功 3:部分关联 4:关联失败)
buyerManagerNameString购买方经办人姓名,数电特有字段16
managerCardTypeString101-组织机构代码证,102-营业执照,103-税务登记证, 199-其他单位证件, 201-居民身份证, 202-军官证, 203-武警警官证, 204-士兵证, 205-军队离退休干部证, 206-残疾人证, 207-残疾军人证(1-8级), 208-外国护照, 210-港澳居民来往内地通行证, 212-中华人民共和国往来港澳通行证, 213-台湾居民来往大陆通行证, 214-大陆居民往来台湾通行证, 215-外国人居留证, 216-外交官证 299-其他个人证件经办人证件类型数电特有字段40
managerCardNoString经办人证件号码数电特有字段,证件类型有值时必填20
billIdString仅数电红票回传红字确认单流水号32
billConfirmNoString仅数电红票回传红字确认单编号32
billUuidString仅数电红票回传红字确认单UUID32
specificFactorString

特定要素:0普通发票 01成品油 03建筑服务 04货物运输发票 05不动产销售发票 06不动产租赁发票 09旅客运输发票 14机动车 16农产品收购 33二手车反向开具

+

35 矿产品发票

2
invalidReasonInteger数电纸票作废原因 1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回)1
specificReasonString其他作废原因详情(作废原因为4 且回传其他信息时返回)255
subjectAccountCodeStringT123核算主体编码维护在诺税通的“核算主体编码”200
subjectAccountString核算主体名称核算主体名称核算主体名称200
redReasonInteger11:销售退回2:开票有误3:服务终止4:销售折让冲红原因1
naturalPersonFlagInteger0购买方自然人标志:0-否(默认)、1-是2
customerCodeString客户编码64
+ +### 请求示例 + + +++ + + + + + +

{

+

"buyerName":"个人",

+

"buyerTaxnum":"339901999999142",

+

"imageUrl":"",

+

"invoiceCode":"131880930610",

+

"invoiceId":"20111014474101989690",

+

"invoiceLine":"p",

+

"invoiceNumber":"61001098",

+

"invoiceTime":1604994991000,

+

"orderNo":"20170104120207971529",

+

"pdfUrl":"https://invtest.nntest.cn/fp/tKhNlLpWjoP84chMYndBjLxrATHP7jJAEK71fHqOJVpzR7q39iU4mBTNBtjfHAANtFoj04OLAjWzfbYJIJhzhA.pdf",

+

"sellerName":"演示公司",

+

"successFlag":true,

+

"taxAmountTotal":1.09,

+

"taxFreeAmountTotal":0.09,

+

"sellerTaxnum":"339901999999610",

+

"taxTotal":0.01,

+

"taxOfficeCode":"税务机关代码",

+

"intactCertificateNum":"税务机关名称",

+

"organizationCode":"完整凭证号码",

+

"mailNo":"SF67263555514",

+

"relatedState":2,

+

"customerCode":"263555514"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | String | 是 | 0000 | | 状态码,字符串”0000”表示成功,非”0000”的字符串表示失败 | 6 | +| message | String | 是 | 同步成功 | | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": "0000",

+

"message": "业务方接收同步成功"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": "9999",

+

"message": "同步失败的异常信息"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传_含明细.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传_含明细.md new file mode 100644 index 0000000..c48b62f --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果回传_含明细.md @@ -0,0 +1,1825 @@ +--- +title: 开票结果回传(含明细) +aliases: + - 开票结果回传(含明细) + - 诺税通开票结果回传(含明细) + - 开票主链路-开票结果回传(含明细) +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 开票结果回传(含明细) + +> [!info] 导航 +> 上级索引:[[README]] · [[02_开票主链路]] +> 文档链接:[总索引](../README.md) · [分组页](../02_开票主链路.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[02_开票主链路]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`用户通过开票请求中的bizCallbackUrl字段提供回调地址,或读取诺税通手工配置的回调地址进行回调。` +> - 请求方式:`POST` +> - 是否回调:是 +> - 是否主链路:是 +> - 推荐优先级:P0(如采用回调模式) + + + +## 开票结果回传(含明细) + +### 接口说明 + +返回开票申请结果。 + +注意:请按照文档要求提供接口。 + +### 接口地址 + +用户通过开票请求中的bizCallbackUrl字段提供回调地址,或读取诺税通手工配置的回调地址进行回调。 + +### 请求参数(用json格式接收) + + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必须示例值更多限制描述最大长度
orderNoString订单编号64
invoiceIdString发票流水号20
createTimeDate1615985882000创建日期13
invoiceTimeDate1615985882000开票日期13
updateTimeDate1615985882000更新时间13
orderDateString2022-05-12年-月-日订单日期10
deliverDateString2022-05-12年-月-日发货日期10
invalidTimeDate1615985882000仅作废成功后返回作废日期13
requestSrcInteger开票方式,0:api接口 1:手工开票 2:批量导入 5:本地提取1
invoiceCodeString仅开票成功后返回发票代码12
invoiceNumberString仅开票成功后返回发票号码20
allElectronicInvoiceNumberString数电发票号码,仅数电发票(电票+纸票)开票成功会返回20
invoiceTypeInteger发票类型:红字发票、蓝字发票2
oriInvoiceCodeString红票对应的蓝票发票代码12
oriInvoiceNumberString红票对应的蓝票发票号码20
oldEleInvoiceNumberString红票对应的蓝票数电发票号码20
billNoString红字申请流水号,仅红字专票返回24
billInfoNoString红字申请表编号,仅红字专票返回24
taxTotalBigDecimal价税税额(保留小数点后2位)30
taxFreeAmountTotalBigDecimal不含税金额(保留小数点后2位)30
taxAmountTotalBigDecimal价税合计 (保留小数点后2位)30
pdfUrlString发票pdf地址256
ofdUrlString发票ofd地址256
notifyEmailString交付邮箱50
notifyPhoneString交付手机20
buyerTaxnumString购方税号20
buyerNameString购方名称100
customerCodeString123456蓝票 购方名称和客户编码二选一必填客户编码,如果未传入客户名称,则使用客户编码查询补充购方信息64
buyerPhoneString购方电话50
buyerAddressString购方地址100
buyerBankString购方银行开户行100
buyerAccountString购方银行账号30
checkCodeString校验码35
qrCodeString二维码30
invoiceCipherString发票密文300
invoiceLineString发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质)1
sellerTaxnumString销方税号20
sellerNameString销方名称200
sellerPhoneString销方电话20
sellerAddressString销方地址80
sellerBankString销方开户银行100
sellerAccountString销方银行账号30
clerkerString开票员20
payeeString收款人20
checkerString复核人20
remarkString备注

数电电票:200(中文计算一位)

+

其他发票:230(中文计算两位)

productOilFlagInteger

成品油标志:

+

0:非成品油;

+

1:成品油;

1
vehicleFlagInteger0默认00:非机动车。1:机动车2
listFlagInteger

清单标志:

+

0:非清单;

+

1:清单;

1
listGoodsNameString清单项目名称90
extensionNumInteger分机号5
machineNumberString税控设备号(机器编码)12
terminalNumInteger终端号10
imageUrlString发票jpg图片地址(清单票发票主信息与清单信息以”,”隔开)256
paperPdfUrlString纸票pdf地址(含底图)256
departmentIdLong部门id50
userIdLong开票员id50
invoiceStatusInteger

发票处理结果: 1:开票成功、 2:开票失败、3:作废成功、4:作废失败;5:开票失败删除成功。

+

结果处于开票成功、 开票失败、作废成功、作废失败,开票失败删除成功触发回传

1
errorMessageString开票异常信息:包括开票失败原因300
columnFirstString有值就回传企业开票时传入自定义字段1
columnSecondString有值就回传企业开票时传入自定义字段2
columnThreeString有值就回传企业开票时传入自定义字段3
mailNoString快递单号
businessTypeString枚举值来源为基础字典配置业务类型
relatedStateInteger有值就回传关联状态(0:未关联 1:关联中 2:关联成功 3:部分关联 4:关联失败)
specificFactorString

特定要素:0普通发票 01成品油 03建筑服务 04货物运输发票 05不动产销售发票 06不动产租赁发票 09旅客运输发票 14机动车 16农产品收购 33二手车反向开具

+

35 矿产品发票

2
detailList发票明细信息(非必须,根据企业资质配置)
buyerManagerNameString购买方经办人姓名,数电特有字段16
managerCardNoString经办人证件号码数电特有字段,证件类型有值时必填20
managerCardTypeString101-组织机构代码证,102-营业执照,103-税务登记证, 199-其他单位证件, 201-居民身份证, 202-军官证, 203-武警警官证, 204-士兵证, 205-军队离退休干部证, 206-残疾人证, 207-残疾军人证(1-8级), 208-外国护照, 210-港澳居民来往内地通行证, 212-中华人民共和国往来港澳通行证, 213-台湾居民来往大陆通行证, 214-大陆居民往来台湾通行证, 215-外国人居留证, 216-外交官证 299-其他个人证件经办人证件类型数电特有字段40
billIdString仅数电红票回传红字确认单流水号32
billConfirmNoString仅数电红票回传红字确认单编号32
billUuidString仅数电红票回传红字确认单UUID32
invalidReasonInteger数电纸票作废原因 1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回)1
specificReasonString其他作废原因详情(作废原因为4 且回传其他信息时返回)255
subjectAccountCodeStringT123核算主体编码维护在诺税通的“核算主体编码”200
subjectAccountString核算主体名称核算主体名称核算主体名称200
redReasonInteger11:销售退回2:开票有误3:服务终止4:销售折让冲红原因1
naturalPersonFlagInteger0购买方自然人标志:0-否(默认)、1-是2
invoiceGoodsTransportsList货物运输发票时必填货物运输明细最大长度2000
realPropertyRentObject开具不动产租赁发票时必填不动产租赁发票信息
invoiceBuildingInfoObject建筑服务发票时必填建筑服务信息
商品明细
detailIndexInteger明细序号5
commodityCodeString商品编码64
goodsNameString商品名称90
goodsCodeAbbString商品简称200
goodsUnitString单位22
goodsPriceBigDecimal根据含税标志决定是含税单价还是不含税单价含税单价32,16
taxFreePriceBigDecimal根据含税标志决定是含税单价还是不含税单价不含税单价32,16
taxrateString税率10
goodsNumBigDecimal数量32,16
taxAmountBigDecimal含税金额16.2
taxFreeAmountBigDecimal不含税金额16.2
taxBigDecimal税额16.2
specTypeString规格型号40
goodsCodeString税收分类编码19
selfCodeString自行编码20
withTaxFlagInteger

含税标识:

+

1:含税;

+

0:不含税;

detailTypeInteger

发票行性质:

+

0:正常行;

+

1:折扣行;

+

2:被扣行;

1
zeroRateFlagString

零税率标识:

+

空:非零税率;

+

1:免税;

+

2:不征税;

+

3:普通零税率;

1
favouredPolicyNameString优惠政策名称(增值税特殊管理)50
favouredPolicyFlagInteger

优惠政策标识:

+

0:不使用;

+

1:使用;

1
deductionBigDecimal扣除额(保留两位小数)
columnFirstString有值就回传自定义字段1
columnSecondString有值就回传自定义字段2
columnThreeString有值就回传自定义字段3
columnFourString有值就回传自定义字段4
columnFiveString有值就回传自定义字段5
favouredPolicyCodeString01:简易征收 02:稀土产品 03:免税 04:不征税 05:先征后退 06:100%先征后退 07:50%先征后退 08:按3%简易征收 09:按5%简易征收 10:按5%简易征收减按1.5%计征 11:即征即退30% 12:即征即退50% 13:即征即退70% 14:即征即退100% 15:超税负3%即征即退 16:超税负8%即征即退 17:超税负12%即征即退 18:超税负6%即征即退

优惠政策编码

+

数电发票特有字段,如使用优惠政策时,该字段必填。

机动车(j)/二手车(u)明细
vehicleTypeString发票种类为u,j时必填车辆类型40
brandModelString发票种类为u,j时必填厂牌型号60
productOriginString发票种类为j时必填产地32
importCertifyNumString进口证明书号50
certificateString合格证号36
inspectionOddNumString商检单号32
engineNumString发动机号码50
vehicleCodeString发票种类为u,j时必填车辆识别单号23
intactCertificateNumString完税凭证号码
measureUnitsString吨位8
maxCapacityString限乘人数12
produceCompanyNameString厂家信息200
organizationCodeString其他证件号30
taxOfficeCodeString税务机关代码100
+ + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
organizeTypeString发票种类为u时必填开票方类型:1.经营单位2.拍卖单位3.二手车市场(二手车专用)2
licenseNumberString发票种类为u时必填车牌号码(二手车专用)20
registerCertNoString发票种类为u时必填登记证号(二手车专用)20
vehicleManagementNameString发票种类为u时必填转入地车辆管理所名称(二手车专用)80
salerNameString发票种类为u时必填卖方单位/个人名称(二手车专用)80
salerNumString发票种类为u时必填卖方单位代码/身份证号码(二手车专用)20
salerAddressString卖方单位/个人地址(二手车专用)80
salerPhoneString卖方电话(二手车专用)20
货物运输明细
goodsNameString煤炭运输货物名称80
originString北京市市辖区东城区起运地80
destinationString北京市市辖区丰台区到达地80
transportTool1运输工具种类:1铁路运输、2公路运输、3.水路运输、4.航空运输、5.管道运输1
transportToolNumString车牌号DD运输工具牌号80
不动产租赁发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
rentStartDateString2023-02-17yyyy-MM-dd格式租赁期起期10
rentEndDateString2023-02-18yyyy-MM-dd格式租赁期止期10
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位1
建筑服务发票信息
buildingAddressString浙江省杭州市西湖区严格按照省市区/县层级传入建筑服务发生地-
detailedAddressStringXXXX街道XXX号建筑服务发生地+详细地址最大长度120详细地址120
landVatItemNoString1234556土地增值税项目编号16
itemNameString1234556项目名称80
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertySellObject不动产销售发票时必填不动产销售发票信息
不动产销售发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位10
realPropertyContractNumberString不动产单元代码/网签合同备案编号28
incrementTaxNumberString土地增值税项目编号18
priceString核定计税价格20
taxAmountString核定计税价格有值时,实际成交含税金额必填实际成交含税金额20
invoiceTravellerTransportInfoListList开旅客运输发票时传入出行人信息出行人信息
出行人信息
travellerString出行人20
travelDateString年-月-日格式出行日期 年-月-日10
travellerCardTypeString

101-组织机构代码证

+

102-营业执照

+

103-税务登记证

+

199-其他单位证件

+

201-居民身份证

+

202-军官证

+

203-武警警官证

+

204-士兵证

+

205-军队离退休干部证

+

206-残疾人证

+

207-残疾军人证(1-8级)

+

208-外国护照

+

210-港澳居民来往内地通行证

+

212-中华人民共和国往来港澳通行证

+

213-台湾居民来往大陆通行证

+

214-大陆居民往来台湾通行证

+

215-外国人居留证

+

216-外交官证

+

217-使(领事)馆证

+

218-海员证

+

219-香港永久性居民身份证

+

220-台湾身份证

+

221-澳门特别行政区永久性居民身份证

+

222-外国人身份证件

+

224-就业失业登记证

+

225-退休证

+

226-离休证

+

227-中国护照

+

228-城镇退役士兵自谋职业证

+

229-随军家属身份证明

+

230-中国人民解放军军官转业证书

+

231-中国人民解放军义务兵退出现役证

+

232-中国人民解放军士官退出现役证

+

233-外国人永久居留身份证(外国人永久居留证)

+

234-就业创业证

+

235-香港特别行政区护照

+

236-澳门特别行政区护照

+

237-中华人民共和国港澳居民居住证

+

238-中华人民共和国台湾居民居住证

+

239-《中华人民共和国外国人工作许可证》(A类)

+

240-《中华人民共和国外国人工作许可证》(B类)

+

241-《中华人民共和国外国人工作许可证》(C类)

+

291-出生医学证明

+

299-其他个人证件

出行人证件类型5
travellerCardNoString出行人证件号码20
travelPlaceString出行地80
arrivePlaceString到达地80
vehicleTypeInteger
    +
  1. 飞机

  2. +
  3. 火车

  4. +
  5. 长途汽车

  6. +
  7. 公共交通

  8. +
  9. 出租车

  10. +
  11. 汽车

  12. +
  13. 船舶

    +

    9-其他

  14. +
交通工具类型2
vehicleLevelString

当交通工具类型是火车、飞机、船舶时必填选择,其他交通工具时可选填

+

当交通工具类型是火车时,必填,下拉框选择,可选项是 一等座、二等座、软席(软座、软卧)、硬卧(硬座、硬卧)

+

当交通工具类型是飞机时,必填,下拉框选择,可选项是 公务舱、头等舱、经济舱

+

当交通工具类型是船舶事,必填,下拉框选择,可选项是 一等舱、二等舱、三等舱

+

当交通工具类型是其他时,选填

交通工具等级20
+ +### 请求示例 + + +++ + + + + + +

{

+

    "businessType": "0",

+

    "buyerAccount": "111111",

+

    "buyerAddress": "杭州市",

+

    "buyerBank": "中国工商银行  ",

+

    "buyerName": "冲红原因测试用蓝票",

+

    "buyerPhone": "",

+

    "buyerTaxnum": "91610132MA6W2MHJ1E",

+

    "checker": "",

+

    "clerker": "张三",

+

    "columnFirst": "主表自定义标识1",

+

    "columnSecond": "主表自定义标识2",

+

    "columnThree": "主表自定义标识3",

+

    "companyCode": "1100",

+

    "companyId": 10162,

+

    "createTime": 1643340360000,

+

    "deliverDate": "Tue Apr 19 15:48:57 CST 2022",

+

    "detail": [

+

        {

+

            "columnFirst": "详情表自定义1",

+

            "columnFive": "详情表自定义5",

+

            "columnFour": "详情表自定义4",

+

            "columnSecond": "详情表自定义2",

+

            "columnThree": "详情表自定义3",

+

            "detailIndex": 0,

+

            "detailType": 0,

+

            "favouredPolicyFlag": 0,

+

            "favouredPolicyName": "",

+

            "goodsCode": "1070101010100000000",

+

            "goodsCodeAbb": "汽油",

+

            "goodsName": "电脑",

+

            "goodsNum": -1.0000000000000000,

+

            "goodsPrice": 11.3000000000000000,

+

            "goodsUnit": "升",

+

            "selfCode": "10701010101",

+

            "specType": "Y460",

+

            "tax": -1.30,

+

            "taxAmount": -11.30,

+

            "taxFreeAmount": -10.00,

+

            "taxFreePrice": 10.0000000000000000,

+

            "taxrate": "0.13",

+

            "withTaxFlag": 0,

+

            "zeroRateFlag": ""

+

        }

+

    ],

+

    "invoiceCode": "033002000911",

+

    "invoiceLine": "p",

+

    "invoiceNumber": "36831764",

+

    "invoiceType": 2,

+

    "listFlag": 0,

+

    "listGoodsName": "详见销货清单",

+

    "orderNo": "20220223134754150666",

+

    "payee": "",

+

    "productOilFlag": 1,

+

    "remark": "对应正数发票代码:033002000911号码:36831764",

+

    "requestSrc": 6,

+

    "sellerAccount": "123",

+

    "sellerAddress": "123",

+

    "sellerBank": "213",

+

    "sellerName": "移动测试盘326",

+

    "sellerPhone": "123",

+

    "sellerTaxnum": "150301199811285326",

+

    "substituteFlag": 0,

+

    "userId": 1,

+

    "invoiceTime": "2021-03-12T14:59:25.715",

+

    "taxAmountTotal": "12.01",

+

"taxFreeAmountTotal": "12.01",

+

"taxTotal": "12.01",

+

    "mailNo": "SF67263555514",

+

"relatedState":2,

+

"customerCode":"263555514"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | String | 是 | 0000 | | 状态码,字符串”0000”表示成功,非”0000”的字符串表示失败 | 6 | +| message | String | 是 | 同步成功 | | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": "0000",

+

"message": "业务方接收同步成功"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": "9999",

+

"message": "同步失败的异常信息"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果查询接口.md new file mode 100644 index 0000000..b521b8f --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票结果查询接口.md @@ -0,0 +1,1995 @@ +--- +title: 开票结果查询接口 +aliases: + - 开票结果查询接口 + - 诺税通开票结果查询接口 + - 开票主链路-开票结果查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 开票结果查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[02_开票主链路]] +> 文档链接:[总索引](../README.md) · [分组页](../02_开票主链路.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[02_开票主链路]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/query-invoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:是 +> - 推荐优先级:P0 + + + +## 开票结果查询接口 + +### 接口说明 + +通过该接口提交流水号或订单号信息,查询开票结果。 + +### 接口地址 + +| | +|:-----------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/query-invoice.do | + +### 请求参数 + + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填示例值更多限制描述最大长度
invoiceIdString[]20092114394901000002流水号列表与订单号列表、发票号码列表、数电号码四选一,单次最多支持查询50个流水号。流水号列表单个参数最大长度20
orderNoString[]20170104120207971529

流水号列表与订单号列表、发票号码列表、数电号码四选一,单次最多支持

+

查询50个订单号。

订单号列表单个参数最大长度64
invoiceNumberString[]["93667697", "93667694"]

流水号列表与订单号列表、发票号码列表、数电号码四选一,单次最多支持

+

查询50个发票号码

发票号码列表
invoiceCodeString5000201530使用发票号码列表查询时必传,数电电票该字段为空,传入发票号码,未传入发票代码默认为查询数电电票发票代码
fuzzyFlagBooleanfalse默认为false订单号是否模糊查询,当orderNo列表元素个数为1且本字段为true时,可以模糊查询订单号对应的发票记录1
sellerTaxnumString7010412020797152企业税号和组织编码必填其一企业税号20
companyCodeString企业税号和组织编码必填其一组织编码20
returnInvoiceDetailFlagBooleantrue默认为true返回发票明细标识1
allElectronicInvoiceNumberString[]

支持

+

查询50个数电发票发票号码,流水号列表与订单号列表、发票号码列表、数电号码四选一

数电发票号码(数电电票、数电纸票都支持)单个参数最大20
+ +### 请求示例 + + +++ + + + + + +

{

+

"invoiceId": ["20111014474101989690", "20111014550501989882"],

+

"sellerTaxnum": "339901999999610",

+

"returnInvoiceDetailFlag": true

+

}

+ +### 返回参数: + + +++++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填示例值更多限制描述最大长度
codeInteger200状态,200-成功,非200-失败6
messageString查询成功详细信息1024
dataList18081620564001000232查询成功则返回发票信息
发票信息
orderNoString20170104120207971529订单号64
invoiceIdString20092114394901000002流水号20
statusInteger2开票状态(0:开票中1:开票完成2:开票失败3:发票生成2
invalidStateInteger0发票作废状态: 0 未提交 , 1 作废成功 , 2 作废失败 , 3 已提交(作废中)。默认值02
invalidTimeString1604576878000发票作废时间
orderDateString2022-05-12年-月-日订单日期10
deliverDateString2022-05-12年-月-日发货日期10
errorMessageString[9999]HX1000 4003-发票数据写盘失败[TCD_769_25,离线发票累计金额超限!],发票代码或号码为空开票异常信息128
pdfUrlStringhttps://inv.jss.com.cn/group1/M00/A6/4C/wKgHPll_IU-AVELfAACNq5bmzFM769.pdf发票pdf地址255
paperPdfUrlStringPDF含底图255
imageUrlString发票jpg地址,清单票发票主信息与清单信息以”,”隔开255
ofdUrlString发票ofd地址255
invoiceTimeString1604576878000开票日期19
invoiceCodeString125999915630发票代码12
invoiceNumberString00130865发票号码20
allElectronicInvoiceNumberString数电发票号码20
taxFreeAmountTotalBigDecimal不含税金额15.2
taxTotalBigDecimal税额15.2
taxAmountTotalBigDecimal含税金额15.2
buyerNameString浙江爱信诺购方名称100
buyerTaxnumString339901999999103购方税号20
buyerAddressString浙江省杭州市万塘路购方地址100
buyerPhoneString15858585858购方电话50
buyerBankString购方开户行购方开户行100
buyerAccountString购方银行账号购方银行账号30
invoiceLineString1发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质)2
checkCodeString校验码20
qrCodeString二维码3000
machineNumberString机器编号12
invoiceCipherString发票密文300
clerkerString张三开票人20
payeeString李四收款人20
checkerString王五复核人20
sellerNameString浙江爱信诺销方名称100
sellerTaxnumString330100555190356销方税号20
sellerAddressString杭州市西湖区万塘路销方地址100
sellerPhoneString0571-81029365销方电话20
sellerBankString开户行销方开户行100
sellerAccountString开户行账号销方开户行账号30
remarkString备注信息备注

数电电票:200(中文计算一位)

+

其他发票:230(中文计算两位)

productOilFlagInteger0

成品油标志,

+

0:非成品油;

+

1:成品油

2
vehicleFlagInteger0默认00:非机动车。1:机动车2
extensionNumInteger开票请求分机号,范围为0-655355
terminalNumInteger开票请求终端号5
notifyPhoneString推送手机20
notifyEmailStringtest@xx.com推送邮箱50
deptIdString9F7E9439CA8B4C60A2FFF3EA3290B088部门门店id(诺诺系统中的id)32
clerkIdString3F7EA439CA8B4C60A2FFF3EA3290B084开票员id(诺诺系统中的id)32
oriInvoiceCodeString125999915630原发票代码12
oriInvoiceNumberString00130865原发票号码8
oldEleInvoiceNumberString红票对应的蓝票数电发票号码20
listFlagInteger0

清单标志,

+

0:非清单,1:清单

2
listGoodsNameString详见销货清单注意:税局要求清单项目名称为(详见销货清单)90
columnFirstString业务调用方自定义字段一业务调用方自定义字段一255
columnSecondString业务调用方自定义字段二业务调用方自定义字段二255
columnThreeString业务调用方自定义字段三业务调用方自定义字段三255
projectCodeString项目编码64
projectNameString项目名称300
mailNoString快递单号
businessTypeString1枚举值来源为基础字典配置业务类型
buyerManagerNameString购买方经办人姓名,数电特有字段16
managerCardTypeString101-组织机构代码证,102-营业执照,103-税务登记证, 199-其他单位证件, 201-居民身份证, 202-军官证, 203-武警警官证, 204-士兵证, 205-军队离退休干部证, 206-残疾人证, 207-残疾军人证(1-8级), 208-外国护照, 210-港澳居民来往内地通行证, 212-中华人民共和国往来港澳通行证, 213-台湾居民来往大陆通行证, 214-大陆居民往来台湾通行证, 215-外国人居留证, 216-外交官证 299-其他个人证件经办人证件类型数电特有字段40
managerCardNoString经办人证件号码数电特有字段,证件类型有值时必填20
ccPhoneString抄送手机,多个以英文逗号分隔100
ccEmailString抄送邮箱,多个以英文逗号分隔250
specificFactorString

特定要素:0普通发票 01成品油 03建筑服务 04货物运输发票 05不动产销售发票 06不动产租赁发票 09旅客运输发票 14机动车 16农产品收购 33二手车反向开具

+

35 矿产品发票

2
invalidReasonInteger数电纸票作废原因 1:销货退回;2:开票有误;3:服务中止;4:其他(已作废状态下的发票,且票为数电纸票且回传其他信息时返回)1
specificReasonString其他作废原因详情(作废原因为4 且回传其他信息时返回)255
naturalPersonFlagInteger0购买方自然人标志:0-否(默认)、1-是2
redReasonInteger11:销售退回2:开票有误3:服务终止4:销售折让冲红原因1
subjectAccountCodeStringT123核算主体编码维护在诺税通的“核算主体编码”200
subjectAccountString核算主体名称核算主体名称核算主体名称200
customerCodeString客户编码64
invoiceGoodsTransportsList货物运输发票时必填货物运输明细最大长度2000
发票明细
detailIndexInteger0明细行序号5
goodsNameString商品名称90
taxrateString0.16税率10
withTaxFlagInteger

单价含税标志:

+

0:不含税;

+

1:含税

2
taxFreePriceBigDecimal不含税单价32.16
goodsPriceBigDecimal含税单价32.16
goodsNumBigDecimal数量32.16
taxAmountBigDecimal含税金额15.2
taxFreeAmountBigDecimal不含税金额15.2
taxBigDecimal税额15.2
goodsUnitString单位22
specTypeString规格型号40
commodityCodeString商品编码64
goodsCodeString税收分类编码19
goodsCodeAbbString税收分类编码简称200
detailTypeInteger

明细行性质:

+

0:正常行;

+

1:折扣行;

+

2:被折扣行

2
favouredPolicyFlagInteger

优惠政策标识:

+

0:不使用;

+

1:使用

2
favouredPolicyNameString优惠政策内容,如:即征即退、免税、简易征收 等50
zeroRateFlagInteger

零税率标识:

+

空:非零税率;

+

1:免税;

+

2:不征税;

+

3:普通零税率

2
selfCodeString自行编码20
deductionBigDecimal扣除额15.2
columnFirstString自定义字段1255
columnSecondString自定义字段2255
columnThreeString自定义字段3255
columnFourString自定义字段4255
columnFiveString自定义字段5255
favouredPolicyCodeString01:简易征收 02:稀土产品 03:免税 04:不征税 05:先征后退 06:100%先征后退 07:50%先征后退 08:按3%简易征收 09:按5%简易征收 10:按5%简易征收减按1.5%计征 11:即征即退30% 12:即征即退50% 13:即征即退70% 14:即征即退100% 15:超税负3%即征即退 16:超税负8%即征即退 17:超税负12%即征即退 18:超税负6%即征即退

优惠政策编码

+

数电发票特有字段

机动车(j)/二手车(u)发票明细
vehicleTypeString车辆类型40
brandModelString厂牌型号60
productOriginString产地32
certificateString合格证号50
importCertifyNumString进口证明书号50
inspectionOddNumString商检单号50
engineNumString发动机号码50
vehicleCodeString车辆识别代号/车架号码50
taxOfficeCodeString主营税务机关及代码100
intactCertificateNumString完税凭证号码50
measureUnitsString吨位20
maxCapacityString限乘人数10
produceCompanyNameString生产企业名称50
organizationCodeString339901999999103其他证件号码30
organizeTypeString发票种类为二手车发票返回开票方类型:1.经营单位2.拍卖单位3.二手车市场(二手车专用)2
licenseNumberString发票种类为二手车发票返回车牌号码(二手车专用)20
registerCertNoString发票种类为二手车发票返回登记证号(二手车专用)20
vehicleManagementNameString发票种类为二手车发票返回转入地车辆管理所名称(二手车专用)80
salerNameString发票种类为二手车发票返回卖方单位/个人名称(二手车专用)80
salerNumString发票种类为二手车发票返回卖方单位代码/身份证号码(二手车专用)20
salerAddressString卖方单位/个人地址(二手车专用)80
salerPhoneString卖方电话(二手车专用)20
货物运输明细
goodsNameString煤炭运输货物名称80
originString北京市市辖区东城区起运地80
destinationString北京市市辖区丰台区到达地80
transportTool1运输工具种类:1铁路运输、2公路运输、3.水路运输、4.航空运输、5.管道运输1
transportToolNumString车牌号DD运输工具牌号80
不动产租赁发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
rentStartDateString2023-02-17yyyy-MM-dd格式租赁期起期10
rentEndDateString2023-02-18yyyy-MM-dd格式租赁期止期10
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位1
建筑服务发票信息
buildingAddressString浙江省杭州市西湖区严格按照省市区/县层级传入建筑服务发生地-
detailedAddressStringXXXX街道XXX号建筑服务发生地+详细地址最大长度120详细地址120
landVatItemNoString1234556土地增值税项目编号16
itemNameString1234556项目名称80
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertySellObject不动产销售发票时必填不动产销售发票信息
不动产销售发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位10
realPropertyContractNumberString不动产单元代码/网签合同备案编号28
incrementTaxNumberString土地增值税项目编号18
priceString核定计税价格20
taxAmountString核定计税价格有值时,实际成交含税金额必填实际成交含税金额20
invoiceTravellerTransportInfoListList开旅客运输发票时传入出行人信息出行人信息
出行人信息
travellerString出行人20
travelDateString年-月-日格式出行日期 年-月-日10
travellerCardTypeString

101-组织机构代码证

+

102-营业执照

+

103-税务登记证

+

199-其他单位证件

+

201-居民身份证

+

202-军官证

+

203-武警警官证

+

204-士兵证

+

205-军队离退休干部证

+

206-残疾人证

+

207-残疾军人证(1-8级)

+

208-外国护照

+

210-港澳居民来往内地通行证

+

212-中华人民共和国往来港澳通行证

+

213-台湾居民来往大陆通行证

+

214-大陆居民往来台湾通行证

+

215-外国人居留证

+

216-外交官证

+

217-使(领事)馆证

+

218-海员证

+

219-香港永久性居民身份证

+

220-台湾身份证

+

221-澳门特别行政区永久性居民身份证

+

222-外国人身份证件

+

224-就业失业登记证

+

225-退休证

+

226-离休证

+

227-中国护照

+

228-城镇退役士兵自谋职业证

+

229-随军家属身份证明

+

230-中国人民解放军军官转业证书

+

231-中国人民解放军义务兵退出现役证

+

232-中国人民解放军士官退出现役证

+

233-外国人永久居留身份证(外国人永久居留证)

+

234-就业创业证

+

235-香港特别行政区护照

+

236-澳门特别行政区护照

+

237-中华人民共和国港澳居民居住证

+

238-中华人民共和国台湾居民居住证

+

239-《中华人民共和国外国人工作许可证》(A类)

+

240-《中华人民共和国外国人工作许可证》(B类)

+

241-《中华人民共和国外国人工作许可证》(C类)

+

291-出生医学证明

+

299-其他个人证件

出行人证件类型5
travellerCardNoString出行人证件号码20
travelPlaceString出行地80
arrivePlaceString到达地80
vehicleTypeInteger
    +
  1. 飞机

  2. +
  3. 火车

  4. +
  5. 长途汽车

  6. +
  7. 公共交通

  8. +
  9. 出租车

  10. +
  11. 汽车

  12. +
  13. 船舶

    +

    9-其他

  14. +
交通工具类型2
vehicleLevelString

当交通工具类型是火车、飞机、船舶时必填选择,其他交通工具时可选填

+

当交通工具类型是火车时,必填,下拉框选择,可选项是 一等座、二等座、软席(软座、软卧)、硬卧(硬座、硬卧)

+

当交通工具类型是飞机时,必填,下拉框选择,可选项是 公务舱、头等舱、经济舱

+

当交通工具类型是船舶事,必填,下拉框选择,可选项是 一等舱、二等舱、三等舱

+

当交通工具类型是其他时,选填

交通工具等级20
+ +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message":"成功",

+

"data":[

+

{

+

"orderNo":"20170104120207971529",

+

"invoiceId":"20111014474101989690",

+

"status":1,

+

"errorMessage":null,

+

"pdfUrl":"https://invtest.nntest.cn/fp/tKhNlLpWjoP84chMYndBjLxrATHP7jJAEK71fHqOJVpzR7q39iU4mBTNBtjfHAANtFoj04OLAjWzfbYJIJhzhA.pdf",

+

"imageUrl":"",

+

"ofdUrl":null,

+

"invoiceTime":"1604994991000",

+

"invalidTime":"1604576878000",

+

"invoiceCode":"131880930610",

+

"invoiceNumber":"61001098",

+

"taxAmountTotal":"1.09",

+

"taxFreeAmountTotal":"1.00",

+

"taxTotal":"0.09",

+

"buyerName":"个人",

+

"buyerTaxnum":"339901999999142",

+

"buyerAddress":"浙江省杭州市",

+

"buyerPhone":"0571-00000000",

+

"buyerBank":"开户行",

+

"buyerAccount":"银行账号",

+

"invoiceLine":"p",

+

"checkCode":"",

+

"qrCode":"",

+

"machineNumber":"",

+

"invoiceCipher":"",

+

"clerker":"开票员",

+

"payee":"收款人",

+

"checker":"复核人",

+

"sellerName":"演示公司",

+

"sellerTaxnum":"339901999999610",

+

"sellerPhone":"0571-00000000",

+

"sellerAddress":"杭州市西湖区",

+

"sellerBank":"开户行",

+

"sellerAccount":"0000000000000000",

+

"remark":"备注信息",

+

"productOilFlag":0,

+

"extensionNum":null,

+

"terminalNum":null,

+

"notifyPhone":"",

+

"notifyEmail":"",

+

"deptId":"",

+

"clerkId":"",

+

"oriInvoiceCode":null,

+

"oriInvoiceNumber":null,

+

"listFlag":0,

+

"listGoodsName":"",

+

"mailNo": "SF67263555514",

+

"customerCode": "555514",

+

"detail":[

+

{

+

"detailIndex":0,

+

"detailType":0,

+

"goodsName":"苹果",

+

"withTaxFlag":0,

+

"goodsPrice":"1.09",

+

"taxFreePrice":"1",

+

"goodsNum":"1",

+

"taxrate":"0.09",

+

"specType":"20个",

+

"goodsUnit":"箱",

+

"goodsCode":"1010115010100000000",

+

"goodsCodeAbb":"水果",

+

"favouredPolicyFlag":0,

+

"zeroRateFlag":"",

+

"favouredPolicyName":"",

+

"selfCode":null,

+

"deduction":null,

+

"taxAmount":"1.09",

+

"taxFreeAmount":"1.00",

+

"tax":"0.09",

+

"vehicleType":"三轮运输车",

+

"brandModel":"厂牌型号",

+

"productOrigin":"产地",

+

"certificate":"合格证号",

+

"importCertifyNum":"进出口证明书号",

+

"inspectionOddNum":"商检单号",

+

"engineNum":"发动机号",

+

"vehicleCode":"车辆识别代号",

+

"measureUnits":"吨",

+

"maxCapacity":"10",

+

"organizationCode":"组织机构代码",

+

"produceCompanyName":"生产企业名称",

+

"columnFirst":"自定义字段1",

+

"columnSecond":"自定义字段2",

+

"columnThree":"自定义字段3",

+

"columnFour":"自定义字段4",

+

"columnFive":"自定义字段5"

+

}

+

]

+

},

+

{

+

"orderNo":"20201110001",

+

"invoiceId":"20111014550501989882",

+

"status":1,

+

"errorMessage":null,

+

"pdfUrl":"https://invtest.nntest.cn/fp/eu9ulvNPRnZ_0KVsgVBWhKv6Yx8mV4j5hg5-lByUWwB7yu5Jt1gj8nFXU6waJw2kZHAidBnetXYuB1SSseZCuw.pdf",

+

"imageUrl":"",

+

"ofdUrl":null,

+

"invoiceTime":"1604995415000",

+

"invoiceCode":"131880930610",

+

"invoiceNumber":"61001099",

+

"taxAmountTotal":"1.09",

+

"taxFreeAmountTotal":"1.00",

+

"taxTotal":"0.09",

+

"buyerName":"个人",

+

"buyerTaxnum":"339901999999142",

+

"buyerAddress":"浙江省杭州市",

+

"buyerPhone":"0571-00000000",

+

"buyerBank":"开户行",

+

"buyerAccount":"银行账号",

+

"invoiceLine":"p",

+

"checkCode":"",

+

"qrCode":"",

+

"machineNumber":"",

+

"invoiceCipher":"",

+

"clerker":"开票员",

+

"payee":"收款人",

+

"checker":"复核人",

+

"sellerName":"演示公司",

+

"sellerTaxnum":"339901999999610",

+

"sellerPhone":"0571-00000000",

+

"sellerAddress":"杭州市西湖区",

+

"sellerBank":"开户行",

+

"sellerAccount":"0000000000000000",

+

"remark":"备注信息",

+

"productOilFlag":0,

+

"extensionNum":null,

+

"terminalNum":null,

+

"notifyPhone":"",

+

"notifyEmail":"",

+

"deptId":"",

+

"clerkId":"",

+

"oriInvoiceCode":null,

+

"oriInvoiceNumber":null,

+

"listFlag":0,

+

"listGoodsName":"",

+

"customerCode":"263555514",

+

"detail":[

+

{

+

"detailIndex":0,

+

"detailType":0,

+

"goodsName":"苹果",

+

"withTaxFlag":0,

+

"goodsPrice":null,

+

"taxFreePrice":null,

+

"goodsNum":null,

+

"taxrate":"0.09",

+

"specType":"20个",

+

"goodsUnit":"箱",

+

"goodsCode":"1010115010100000000",

+

"goodsCodeAbb":"水果",

+

"favouredPolicyFlag":0,

+

"zeroRateFlag":"",

+

"favouredPolicyName":"",

+

"selfCode":null,

+

"deduction":null,

+

"taxAmount":"1.09",

+

"taxFreeAmount":"1.00",

+

"tax":"0.09",

+

"vehicleType":"三轮运输车",

+

"brandModel":"厂牌型号",

+

"productOrigin":"产地",

+

"certificate":"合格证号",

+

"importCertifyNum":"进出口证明书号",

+

"inspectionOddNum":"商检单号",

+

"engineNum":"发动机号",

+

"vehicleCode":"车辆识别代号",

+

"measureUnits":"吨",

+

"maxCapacity":"10",

+

"organizationCode":"组织机构代码",

+

"produceCompanyName":"生产企业名称",

+

"columnFirst":"自定义字段1",

+

"columnSecond":"自定义字段2",

+

"columnThree":"自定义字段3",

+

"columnFour":"自定义字段4",

+

"columnFive":"自定义字段5"

+

}

+

]

+

}

+

]

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code":2751,

+

"message":"企业税号不能为空"

+

}

+ +### 状态码说明 + +| | | +|:----------:|:--------------------------------------------:| +| **状态码** | **描述** | +| 2751 | 企业税号不能为空 | +| 2752 | 入参发票流水号数组和订单编号数组只能选择一个 | +| 2753 | 入参长度超过50 | +| 2754 | 模糊搜索的订单数组长度不等于1 | diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票请求接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票请求接口.md new file mode 100644 index 0000000..96bd62d --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/开票请求接口.md @@ -0,0 +1,2056 @@ +--- +title: 开票请求接口 +aliases: + - 开票请求接口 + - 诺税通开票请求接口 + - 开票主链路-开票请求接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 开票请求接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[02_开票主链路]] +> 文档链接:[总索引](../README.md) · [分组页](../02_开票主链路.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[02_开票主链路]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/invoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:是 +> - 推荐优先级:P0 + + + +## 开票请求接口 + +### 接口说明 + +通过该接口提交订单信息,如销方、购方、开票明细等信息,发起开票请求。 + +注意:该接口仅返回是否提交开票申请成功,提交成功后,如税盘等开票成功,则开票状态会更新为开票完成;如果开票失败,则会变更为开票失败,且返回失败原因。 + +数电发票开具红票请使用快捷冲红接口,该接口暂不支持开具数电发票红票。请求开具数电发票蓝票时,需保证在开具时明细序号为从1开始的连续数字,否则不支持部分红冲业务! + +针对特殊发票开具的要求: + +1. 货物运输发票:商品明细detail中商品名称必填、金额必填、税率必填、税额必填、单位非必填、数量非必填、单价非必填 + +2. 不动产经营租赁服务发票:商品明细detail只能有一行,且规格型号、单位不能有值,数量、单价必填 + +3. 建筑服务发票:商品明细detail只能有一行,且规格型号、单位、数量、单价都不能有值 + +4. 针对矿产品发票:只支持纸专、电普、纸普、电专开具,商品明细detail单位、数量、单价都必填,税收分类编码编码必须102开头 + +### 接口地址 + +| | +|:-----------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/invoice.do | + +### 请求参数 + + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填示例值更多限制描述最大长度
buyerNameString个人蓝票 购方名称和客户编码二选一必填购方名称100
customerCodeString123456蓝票 购方名称和客户编码二选一必填客户编码,如果未传入客户名称,则使用客户编码查询补充购方信息64
buyerTaxnumString339901999999142企业要填,个人可为空购方税号开具机动车销售统一发票时,该字段仅用于填写企业税号或中国居民身份证号
buyerAddressString浙江省杭州市企业要填,个人可为空购方地址100
buyerPhoneString0571-00000000企业要填,个人可为空,购方地址+购方电话不得超过100个字符购方电话50
buyerBankString开户行企业要填,个人可为空购方开户行100
buyerAccountString银行账号企业要填,个人可为空,开户行+银行账户不得超过100个字符购方银行账号30
orderNoString20170104120207971529每个企业唯一订单编号64
sellerNameString演示公司不填写时,以维护在诺税通组织管理中的销方名称为准,如未维护则会报错销方名称100
sellerTaxnumString339901999999610销方税号20
companyCodeString如果销方税号有值,优先以销方税号为准

维护在诺税通组织管理中的“公司编码”。sellerTaxnum、companyCode至少填一个。

+

用来关联出诺税通系统内的“companyId”字段。

sellerAddressString杭州市西湖区不填写时,以维护在诺税通开票信息中的销方地址为准,发票种类为j:机动车发票时,非必填销方地址100
sellerPhoneString0571-00000000

不填写时,以维护在诺税通开票信息中的销方电话为准,1.发票种类为j:机动车发票时,非必填

+

2,销方地址+销方电话不得超过100个字符

销方电话20
sellerBankString中国工商银行不填写时,以维护在诺税通开票信息中的销方开户银行为准,发票种类为j:机动车发票时,非必填销方开户银行100
sellerAccountString0000000000000000

不填写时,以维护在诺税通开票信息中的销方银行账号为准,发票种类为j:机动车发票时,非必填;

+

开户银行+银行账户不得超过100个字符

销方银行账号30
invoiceTypeInteger1开票类型,1:蓝票;2:红票2
checkBlueInteger0invoiceType =2时需要传,默认0开具红票时是否校验蓝票 0.校验蓝票是否存在诺税通 1.不校验蓝票是否存在诺税通但校验可冲红金额 2.不校验蓝票是否存在诺税通且不校验可冲红金额2
invoiceLineStringp默认为电票p。发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),b:增值税电子专用发票,j:机动车发票,u:二手车发票,bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质)2
requestSrcInteger0默认为0请求来源,0 :api接口,可自定义,但必须是诺税通已维护好的枚举值1
remarkString备注信息冲红时,必须在备注中注明“对应正数发票代码:XXXXXXXXX号码:YYYYYYYY”文案,其中“X”为发票代码,“Y”为发票号码,否则接口会自动添加该文案;发票种类为j:机动车发票时,备注需注明:“一车一票”否则接口会自动添加该文案备注,(注意:不同开票服务器类型支持的备注长度不同,请在提交前做好确认)

数电电票:200(中文计算一位)

+

其他发票:230(中文计算两位)

clerkerString开票员不填写时,以维护在诺税通开票信息的企业维度开票人为准,如未维护则会报错开票人20
payeeString收款人不填写时,以维护在诺税通开票信息的企业维度收款人为准收款人20
checkerString复核人不填写时,以维护在诺税通开票信息的企业维复核人为准复核人20
invoiceCodeString125999915630红票必填,10位或12位,11位的发票代码请左补0至12位对应蓝票发票代码12
invoiceNumberString00130865红票必填,增值税发票不满8位请左补0,数电发票20位对应蓝票发票号码20
notifyTypeInteger1推送方式,-1:不推送;0:邮箱;1:手机(默认);2:邮箱、手机2
notifyPhoneString10000000000推送手机(开票成功会短信提醒购方,推送方式为1或2时,此项必填)20
notifyEmailStringtest@xx.com推送邮箱(推送方式为0或2时,此项必填)50
listFlagInteger0默认为0。清单标志,0:非清单;1:清单,纸票超过8行自动转成清单,电票无清单概念,默认都传02
listGoodsNameString详见销货清单listFlag为1时,此项为必填注意:税局要求清单项目名称固定为:(详见销货清单)90
extensionNumInteger

开票设备分机号,范围为0-65535,

+

如需指定设备开票则需传入

5
terminalNumInteger开票设备终端号,如需指定设备开票则需传入5
machineNumString机器编号,如需指定设备开票则需传入
substituteFlagInteger0默认为0代开标志,0:非代开;1:代开。代开蓝票备注文案要求包含:“代开企业税号:***代开企业名称:***.”;代开红票备注文案要求:“对应正数发票代码:***号码:***代开企业税号:***代开企业名称:***.”。(代开企业税号与代开企业名称之间仅支持一个空格或无符号)1
departmentIdLong开票员所属部门id(诺税通本地系统中的id),如需在诺税通中根据部门筛选查看发票,则可传入32
departmentCodeString如果departmentId有值,优先以departmentId为准

维护在诺税通部门管理中的“部门编码”。

+

用来关联出诺税通系统内的“departmentId”字段。

userIdLong开票员用户id(诺税通系统中的id),如需在诺税通中根据开票员筛选查看发票,则可传入32
userCodeString如果userId有值,优先以userId为准

维护在诺税通用户管理中的“用户编码”。

+

用来关联出诺税通系统内的“userId”字段。

specificFactorString0开具货物运输发票时,必填04

特定要素:0普通发票 01成品油 03建筑服务 04货物运输发票 05不动产销售发票 06不动产租赁发票09旅客运输发票 14机动车 16农产品收购 33二手车反向开具

+

35 矿产品发票

2
naturalPersonFlagInteger0非数电普票(电子)发票不支持自然人,传1将报错购买方自然人标志:0-否(默认)、1-是;开具数电普票(电子)时,如受票方(发票抬头)为自然人,并要求能将发票归集在个人票夹中展示,需提供姓名及身份证号(自然人纳税人识别号);此参数传1;如受票方(发票抬头)为个体工商户,需提供社会统一信用代码或纳税人识别号,此参数传02
naturalPersonVerifyFlagInteger0若不传,则默认取开票规则配置,若传了则以传入的为准购方名称校验:0-不强制开具,1-校验;传入0且【购方自然人标志】传入0时,若购方名称小于等于4,则会按非自然人继续开票;传入1且【购买方自然人标志】传入0时,若购方名称小于等于4,会拦截开票。1
taxNumVerifyFlagInteger0若不传,则默认取开票规则配置,若传了则以传入的为准对购方税号校验:0-不校验(若税号在电子税局中不存在,也能继续开票),1校验(若税号在电子税局中不存在则不能开票)1
billInfoNoString1403011904008472增值税专票冲红时,此项必填。且必须在备注中注明“开具红字增值税专用发票信息表编号ZZZZZZZZZZZZZZZZ”字样,其中“Z”为开具红字增值税专用发票所需要的长度为16位信息表编号。红字信息表编号16
columnFirstString业务方个性化字段,本应用只作保存。255
columnSecondString业务方个性化字段,本应用只作保存。255
columnThreeString业务方个性化字段,本应用只作保存255
bizCallbackUrlString业务方所请求开票的系统接收发票开票结果的回传地址业务方发票开票开票成功/失败、作废结果回调地址255
exchangeRateString汇率
exchangeRateTimeDate汇率日期yyyy-MM-dd格式
contractNoString合同号
waybillNoString提运单号
businessTypeString默认0业务标识(基础模块设置的业务类型枚举值)
shippingFeeBigDecimal海运费
insuranceFeeBigDecimal保险费
shippingInsuranceFeeBigDecimal运保费
loadingHarborString装船口岸
destinationHarborString目的港
foreignCurrencyAmountBigDecimal外币港口
exportDateString出口日期
currencyTypeenum

AUD:澳元

+

CAD:加拿大元

+

CFP:法郎

+

CNY:人民币

+

COP:比索

+

EUR:欧元

+

GBP:英镑

+

HKD:港币

+

INR:卢比

+

JPY:日元

+

RUB:卢布

+

THB:泰铢

+

TWD:新台币

+

DEM:马克

+

USD:美元

币种
fobAmountBigDecimalFOB金额
customsNoString报关单号
orderDateString年-月-日,例如2022-05-12订单日期10
deliverDateString年-月-日,例如2022-05-12发货日期10
redReasonInteger

1:销售退回

+

2:开票有误

+

3:服务终止

+

4:销售折让

+

当发票种类为:c/p/f/r/e的红字发票时填写

冲红原因
projectCodeString项目编码64
projectNameString项目名称300
emergencyFlagInteger

0:非紧急

+

1:紧急

+

默认为:0

紧急订单标识
nextInvoiceCodeString

下一张发票代码

+

支持票种:c普通发票(纸质)f收购发票(纸质)

指定发票卷开票时必传12
nextInvoiceNumString

下一张发票号码

+

支持票种:c普通发票(纸质)f收购发票(纸质)

+

当【下一张发票代码】有值时,【下一张发票号码】和【发票终止号码】二选一

+

必填

指定发票卷开票时下一张发票号码和发票终止号码二选一必传,均不传则认为不指定票卷8
invoiceNumEndString

发票终止号码

+

支持票种:c普通发票(纸质)f收购发票(纸质)

+

当【下一张发票代码】有值时,【下一张发票号码】和【发票终止号码】二选一

+

必填

指定发票卷开票时下一张发票号码和发票终止号码二选一必传,均不传则认为不指定票卷
buyerManagerNameString购买方经办人姓名,数电特有字段16
managerCardTypeString101-组织机构代码证,102-营业执照,103-税务登记证, 199-其他单位证件, 201-居民身份证, 202-军官证, 203-武警警官证, 204-士兵证, 205-军队离退休干部证, 206-残疾人证, 207-残疾军人证(1-8级), 208-外国护照, 210-港澳居民来往内地通行证, 212-中华人民共和国往来港澳通行证, 213-台湾居民来往大陆通行证, 214-大陆居民往来台湾通行证, 215-外国人居留证, 216-外交官证 299-其他个人证件经办人证件类型数电特有字段40
managerCardNoString经办人证件号码数电特有字段,证件类型有值时必填20
ccPhoneString抄送手机号,当推送手机notifyPhone有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个100
ccEmailString抄送邮箱,当推送邮箱notifyEmail有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个250
paperInvoiceTypeString数电纸票时才需要传入,枚举值后续会持续更新;(票种为ec时,默认04;票种为es时,默认为1130)票种为ec时,只能为04或05;票种为es时只能为1130或1140或1160或1170

数电纸票类型: 04 2016版增值税普通发票(二联折叠票)

+

05 2016版增值税普通发票(五联折叠票

+

1130 增值税专用发票(中文三联无金额限制版)

+

1140 增值税专用发票(中文四联无金额限制版)

+

1160 增值税专用发票(中文六联无金额限制版)

+

1170 增值税专用发票(中文七联无金额限制版)

12
subjectAccountCodeStringT123核算主体编码维护在诺税通的“核算主体编码”200
subjectAccountString核算主体名称核算主体名称核算主体名称200
detailList电子发票明细
invoiceGoodsTransportsList货物运输发票时必填货物运输明细最大长度2000
realPropertyRentObject开具不动产租赁发票时必填不动产租赁发票信息
invoiceBuildingInfoObject建筑服务发票时必填建筑服务信息
发票明细
detailIndexInteger0明细序号5
detailTypeInteger0明细行性质:0,正常行;1,折扣行;2,被折扣行2
commodityCodeString商品编码64
goodsNameString餐饮费如detailType=1,则此商品行为折扣行,此版本折扣行不允许多行折扣,折扣行必须紧邻被折扣行,项目名称必须与被折扣行一致。商品名称90
withTaxFlagInteger1必填含税标志,0:不含税,1:含税2
goodsPriceBigDecimal冲红时项目单价为正数

含税单价,当含税标志为:含税且不含税金额、税额、含税金额未全部传入时,必填,数量和单价必须都不填或者都必填,不可只填一个。

+

建议保留小数点后8位以上,减少计算误差。

+

开具成品油发票时必填且建议为5位小数。

16
taxFreePriceBigDecimal冲红时项目单价为正数

不含税单价,当含税标志为:不含税且不含税金额、税额、含税金额未全部传入时,必填,数量和单价必须都不填或者都必填,不可只填一个。建议保留小数点后8位。

+

开具成品油发票时必填且建议为5位小数。

16
goodsNumBigDecimal开具红字发票时,数量为负数

数量,数量、单价必须都不填,或都必填,不可只填一个;当数量、单价都不填时,不含税金额、税额、含税金额都必填;当数量、单价都填时,不含税金额、税额、含税金额可为空。建议保留小数点后8位以上。

+

开具成品油发票时必填且建议为5位小数

16
taxrateString0.13税率10
specTypeString规格型号40
goodsUnitString单位,开具成品油发票时必填,必须为”升”或“吨”。22
goodsCodeString可不传入,由接口进行智能匹配,如对接口自动匹配准确率要求高的企业,建议传入税收分类编码19
selfCodeString自行编码20
favouredPolicyFlagInteger0默认为:0,不使用

优惠政策标识,0:不使用;1:使用

+

数电发票时为空,仅传入优惠政策编码即可

2
favouredPolicyNameStringfavouredPolicyFlag为1时,此项必填

优惠政策内容,如:即征即退、免税、不征税、简易征收等

+

数电发票时为空,仅传入优惠政策编码即可

50
zeroRateFlagInteger

零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率。

+

数电发票时为空,仅传入优惠政策编码即可

+

普通零税率,对应传值:

+

favouredPolicyFlag:0

+

zeroRateFlag:3

+

favouredPolicyName:

+

免税时,对应传值:

+

favouredPolicyFlag:1

+

zeroRateFlag:1

+

favouredPolicyName:“免税”

+

不征税,对应传值:

+

favouredPolicyFlag:1

+

zeroRateFlag:2

+

favouredPolicyName:“不征税”

2
deductionBigDecimal

扣除额,小数点后两位。差额征收的发票目前只支持一行明细。不含税差额 = 不含税金额 - 扣除额; 税额 = 不含税差额*税率

+

注意:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00

15.2
taxFreeAmountBigDecimal精确到小数点后面两位,红字发票为负数。不含税金额、税额、含税金额任何一个不传时,会根据传入的单价,数量进行z计算,可能和实际数值存在误差,建议都传入不含税金额15.2
taxBigDecimal精确到小数点后面两位,红字发票为负数。不含税金额、税额、含税金额任何一个不传时,会根据传入的单价,数量进行计算,可能和实际数值存在误差,建议都传入税额15.2
taxAmountBigDecimal精确到小数点后面两位,红字发票为负数。不含税金额、税额、含税金额任何一个不传时,会根据传入的单价,数量进行计算,可能和实际数值存在误差,建议都传入含税金额15.2
tonBigDecimal盈亏吨数
columnFirstString自定义字段1255
columnSecondString自定义字段2255
columnThreeString自定义字段3255
columnFourString自定义字段4255
columnFiveString自定义字段5255
favouredPolicyCodeString01:简易征收 02:稀土产品 03:免税 04:不征税 05:先征后退 06:100%先征后退 07:50%先征后退 08:按3%简易征收 09:按5%简易征收 10:按5%简易征收减按1.5%计征 11:即征即退30% 12:即征即退50% 13:即征即退70% 14:即征即退100% 15:超税负3%即征即退 16:超税负8%即征即退 17:超税负12%即征即退 18:超税负6%即征即退

优惠政策编码

+

数电发票特有字段,如使用优惠政策时,该字段必填。

机动车(j)/二手车发票(u)明细(发票种类为j或u时需传入)
vehicleTypeString发票种类为j或u时必填车辆类型40
brandModelString发票种类为j或u时必填厂牌型号60
productOriginString发票种类为j时必填产地32
certificateString合格证号,国产车填写50
importCertifyNumString进口证明书号,进口车填写36
inspectionOddNumString商检单号32
engineNumString发动机号50
vehicleCodeString发票种类为j或u时必填车架号码/车辆识别代号23
measureUnitsString吨位8
maxCapacityString限乘人数
organizationCodeString其他证件号码,仅用于填写非中国居民证件号30
produceCompanyNameString发票种类为j必填生产企业名称,不同税控设备要求不一致,具体以开票设备为准,金税盘选填,ukey、百旺盘必填100
intactCertificateNumString完税凭证号码
organizeTypeString发票种类为u时必填开票方类型:1.经营单位2.拍卖单位3.二手车市场(二手车专用)2
licenseNumberString发票种类为u时必填车牌号码(二手车专用)20
registerCertNoString发票种类为u时必填登记证号(二手车专用)20
vehicleManagementNameString发票种类为u时必填转入地车辆管理所名称(二手车专用)80
salerNameString发票种类为u时必填卖方单位/个人名称(二手车专用)80
salerNumString发票种类为u时必填卖方单位代码/身份证号码(二手车专用)20
salerAddressString卖方单位/个人地址(二手车专用)80
salerPhoneString卖方电话(二手车专用)20
forceFlagInteger发票种类为u时填写,默认0是否强制开具标记 0否 1是2
货物运输明细
goodsNameString煤炭运输货物名称80
originString北京市市辖区东城区起运地80
destinationString北京市市辖区丰台区到达地80
transportTool1运输工具种类:1铁路运输、2公路运输、3.水路运输、4.航空运输、5.管道运输1
transportToolNumString车牌号DD运输工具牌号80
不动产租赁发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
rentStartDateString2023-02-17yyyy-MM-dd格式租赁期起期10
rentEndDateString2023-02-18yyyy-MM-dd格式租赁期止期10
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位1
建筑服务发票信息
buildingAddressString浙江省杭州市西湖区严格按照省市区/县层级传入建筑服务发生地-
detailedAddressStringXXXX街道XXX号建筑服务发生地+详细地址最大长度120详细地址120
landVatItemNoString1234556土地增值税项目编号16
itemNameString1234556项目名称80
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertySellObject不动产销售发票时必填不动产销售发票信息
不动产销售发票信息
realPropertyAddressString浙江省杭州市西湖区严格按照省市区/县层级传入不动产地址不动产地址 +不动产详细地址 最大长度120
detailAddressStringxxxxxx街xxx号

需含有"街","路","村","乡","镇","道","巷","号"中一个或多个关键字

+

不动产地址 +不动产详细地址最大长度120

不动产详细地址不动产地址 +不动产详细地址 最大长度120
crossCityFlagInteger00-否 1-是跨地市标志1
realPropertyCertificateString123456789产权证书/不动产权证号40
unitString2

1-平方千米

+

2-平方米

+

3-公顷

+

4-亩

+

5-hm²

+

6-km²

+

7-㎡

面积单位10
realPropertyContractNumberString不动产单元代码/网签合同备案编号28
incrementTaxNumberString土地增值税项目编号18
priceString核定计税价格20
taxAmountString核定计税价格有值时,实际成交含税金额必填实际成交含税金额20
invoiceTravellerTransportInfoListList开旅客运输发票时传入出行人信息出行人信息
出行人信息
travellerString出行人20
travelDateString年-月-日格式出行日期 年-月-日10
travellerCardTypeString

101-组织机构代码证

+

102-营业执照

+

103-税务登记证

+

199-其他单位证件

+

201-居民身份证

+

202-军官证

+

203-武警警官证

+

204-士兵证

+

205-军队离退休干部证

+

206-残疾人证

+

207-残疾军人证(1-8级)

+

208-外国护照

+

210-港澳居民来往内地通行证

+

212-中华人民共和国往来港澳通行证

+

213-台湾居民来往大陆通行证

+

214-大陆居民往来台湾通行证

+

215-外国人居留证

+

216-外交官证

+

217-使(领事)馆证

+

218-海员证

+

219-香港永久性居民身份证

+

220-台湾身份证

+

221-澳门特别行政区永久性居民身份证

+

222-外国人身份证件

+

224-就业失业登记证

+

225-退休证

+

226-离休证

+

227-中国护照

+

228-城镇退役士兵自谋职业证

+

229-随军家属身份证明

+

230-中国人民解放军军官转业证书

+

231-中国人民解放军义务兵退出现役证

+

232-中国人民解放军士官退出现役证

+

233-外国人永久居留身份证(外国人永久居留证)

+

234-就业创业证

+

235-香港特别行政区护照

+

236-澳门特别行政区护照

+

237-中华人民共和国港澳居民居住证

+

238-中华人民共和国台湾居民居住证

+

239-《中华人民共和国外国人工作许可证》(A类)

+

240-《中华人民共和国外国人工作许可证》(B类)

+

241-《中华人民共和国外国人工作许可证》(C类)

+

291-出生医学证明

+

299-其他个人证件

出行人证件类型5
travellerCardNoString出行人证件号码20
travelPlaceString出行地80
arrivePlaceString到达地80
vehicleTypeInteger
    +
  1. 飞机

  2. +
  3. 火车

  4. +
  5. 长途汽车

  6. +
  7. 公共交通

  8. +
  9. 出租车

  10. +
  11. 汽车

  12. +
  13. 船舶

    +

    9-其他

  14. +
交通工具类型2
vehicleLevelString

当交通工具类型是火车、飞机、船舶时必填选择,其他交通工具时可选填

+

当交通工具类型是火车时,必填,下拉框选择,可选项是 一等座、二等座、软席(软座、软卧)、硬卧(硬座、硬卧)

+

当交通工具类型是飞机时,必填,下拉框选择,可选项是 公务舱、头等舱、经济舱

+

当交通工具类型是船舶事,必填,下拉框选择,可选项是 一等舱、二等舱、三等舱

+

当交通工具类型是其他时,选填

交通工具等级20
+ +**机动车销售统一发票传参规则** + +企业购方税号、中国居民身份证号使用【购方税号:buyerTaxnum】字段传入,其他证件号码(港澳台人员证件号等)使用【其他证件号码:organizationCode】传入。 + +### 请求示例 + + +++ + + + + + +

{

+

"billInfoNo":null,

+

"bizCallbackUrl":null,

+

"buyerAccount":"银行账号",

+

"buyerAddress":"浙江省杭州市",

+

"buyerBank":"开户行",

+

"buyerName":"个人",

+

"buyerPhone":"0571-00000000",

+

"buyerTaxnum":"339901999999142",

+

"checker":"复核人",

+

"clerkId":null,

+

"clerker":"开票员",

+

"columnFirst":null,

+

"columnSecond":null,

+

"columnThree":null,

+

"departmentId":null,

+

"deptId":null,

+

"detail":[

+

{

+

"deduction":null,

+

"detailIndex":0,

+

"detailType":0,

+

"favouredPolicyFlag":0,

+

"favouredPolicyName":null,

+

"goodsCode":"1010115010100000000",

+

"goodsCodeAbb":"水果",

+

"goodsName":"苹果",

+

"goodsNum":1,

+

"goodsPrice":1.09,

+

"goodsUnit":"箱",

+

"selfCode":null,

+

"specType":"20个",

+

"tax":0.09,

+

"taxAmount":1.09,

+

"taxFreeAmount":1,

+

"taxFreePrice":1,

+

"taxrate":"0.09",

+

"withTaxFlag":0,

+

"zeroRateFlag":null,

+

"vehicleType":"三轮运输车",

+

"brandModel":"厂牌型号",

+

"productOrigin":"产地",

+

"certificate":"合格证号",

+

"importCertifyNum":"进出口证明书号",

+

"inspectionOddNum":"商检单号",

+

"engineNum":"发动机号",

+

"vehicleCode":"车辆识别代号",

+

"measureUnits":"吨",

+

"maxCapacity":"10",

+

"organizationCode":"组织机构代码",

+

"produceCompanyName":"生产企业名称",

+

"columnFirst":"自定义字段1",

+

"columnSecond":"自定义字段2",

+

"columnThree":"自定义字段3",

+

"columnFour":"自定义字段4",

+

"columnFive":"自定义字段5",

+

"forceFlag":1,

+

}

+

],

+

"extensionNum":null,

+

"invoiceCode":null,

+

"invoiceLine":"p",

+

"invoiceNumber":null,

+

"invoiceType":1,

+

"listFlag":0,

+

"listGoodsName":null,

+

"notifyEmail":null,

+

"notifyPhone":null,

+

"notifyType":-1,

+

"orderNo":"20170104120207971529",

+

"payee":"收款人",

+

"productOilFlag":0,

+

"remark":"备注信息",

+

"requestSrc":0,

+

"sellerAccount":"0000000000000000",

+

"sellerAddress":"杭州市西湖区",

+

"sellerBank":"开户行",

+

"sellerName":"演示公司",

+

"sellerPhone":"0571-00000000",

+

"sellerTaxnum":"339901999999610",

+

"substituteFlag":0,

+

"terminalNum":null,

+

"userId":null,

+

"nextInvoiceNum": "1234456",

+

"nextInvoiceCode": "123456"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | Integer | 是 | 200 | | 状态,200-成功,非200-失败 | 6 | +| message | String | | 同步成功 | | 详细信息 | 1024 | +| data | String | | 18081620564001000232 | | 提交成功则返回发票请求流水号,支持多个。如该订单号被拆分成多张发票,则会返回多个流水号。 | 单张发票流水号最大长度:20 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message":"成功",

+

"data":"20111014474101989690"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code":"2050",

+

"message":"公司不存在"

+

}

+ +### 状态码说明 + +| | | +|:--:|:--:| +| **状态码** | **描述** | +| 2505 | 公司不存在 | +| 2600 | 发票类型不能为空 | +| 2601 | 发票类型错误(1:正票 2:红票) | +| 2602 | 红票发票代码不能为空 | +| 2603 | 红票发票号码不能为空 | +| 2604 | 红票发票代码不能超过12位 | +| 2605 | 红票发票号码不能超过8位 | +| 2606 | 红票对应蓝票不存在 | +| 2607 | 发票种类不存在 | +| 2608 | 代开标志不能为空 | +| 2609 | 代开标志只能为0和1 | +| 2610 | 清单标志不能为空 | +| 2611 | 清单标志只能为0和1 | +| 2612 | 清单标志为1时,清单项目名称不能为空 | +| 2613 | 清单项目名称不能超过90位 | +| 2614 | 成品油标志不能为空 | +| 2615 | 成品油标志只能为0和1 | +| 2616 | 成品油发票不支持清单票 | +| 2617 | 成品油发票不支持收购票 | +| 2618 | 成品油发票不支持代开票 | +| 2619 | 红票和蓝票的成品油标识必需一致 | +| 2620 | 暂不支持卷票 | +| 2621 | 该服务器类型暂不支持专票冲红 | +| 2622 | 该服务器类型暂不支持纸票冲红 | +| 2623 | 暂不支持开具收购发票 | +| 2624 | 购方名称不能为空 | +| 2625 | 购方名称不能超过100位 | +| 2626 | 购方税号只支持6-20位 | +| 2627 | 税号只能包含数字和字母 | +| 2628 | 专票购方税号不能为空 | +| 2629 | 购方电话不能超过50位 | +| 2630 | 专票购方电话不能为空 | +| 2631 | 购方地址不能超过100位 | +| 2632 | 专票购方地址不能为空 | +| 2633 | 购方地址和电话不能超过100位 | +| 2634 | 购方开户行不能超过100位 | +| 2635 | 购方开户行不能为空 | +| 2636 | 购方开户账号不能超过20位 | +| 2637 | 购方开户账号不能为空 | +| 2638 | 购方开户行及账号不能超过100位 | +| 2639 | 推送方式不能为空 | +| 2640 | 目前推送方式仅支持:\[-1,0,1,2\] | +| 2641 | 通知手机号不能超过20位 | +| 2642 | 通知手机号格式错误 | +| 2643 | 手机通知时手机号不能为空 | +| 2644 | 邮箱通知时邮箱不能为空 | +| 2645 | 通知邮箱格式错误 | +| 2646 | 通知邮箱不能超过50位 | +| 2647 | 销方名称不能为空 | +| 2648 | 销方名称不能超过100位 | +| 2649 | 销方税号不能为空 | +| 2650 | 销方税号只支持15-20位 | +| 2651 | 不允许对其他企业开具的发票进行冲红 | +| 2652 | 销方地址不能为空 | +| 2653 | 销方地址电话不能超过100位 | +| 2654 | 销方电话不能为空 | +| 2655 | 销方电话不能超过20位 | +| 2656 | 销方开户行不能为空 | +| 2657 | 销方账号不能为空 | +| 2658 | 销方开户行及账号不能超过100位 | +| 2659 | 开票员不能为空 | +| 2660 | 开票员长度不能超过20位 | +| 2661 | 收款员长度不能超过20位 | +| 2662 | 复核人长度不能超过20位 | +| 2663 | 商品详情为空 | +| 2664 | 订单明细行最大支持2000行 | +| 2665 | 数据格式不正确 | +| 2666 | 卷票明细行数不能超过13行 | +| 2667 | 红票备注不能为空 | +| 2668 | 红字信息表编号不能为空 | +| 2669 | 红字申请单号不能超过24位 | +| 2670 | 专用发票红票备注需注明:开具红字增值税专用发票信息表编号\*\*\* | +| 2671 | 代开发票备注需注明:代开企业税号:\*\*\* 代开企业名称:\*\*\* | +| 2672 | 备注长度不能超过230位 | +| 2673 | 订单编号不能为空 | +| 2674 | 订单编号长度不能大于64个字符 | +| 2675 | 请求来源错误 | +| 2676 | 发票已作废,无需冲红 | +| 2677 | 第%s行明细中商品名称不能为空 | +| 2678 | 第%s行明细中商品名称不能超过90位 | +| 2679 | 第%s行明细中商品编码不能超过19位 | +| 2680 | 第%s行明细中发票行性质只能为:\[0,1,2\] | +| 2681 | 第%s行明细中优惠政策标识只能为:\[0,1\] | +| 2682 | 第%s行明细中当优惠政策标识为1时,优惠政策名称不能为空 | +| 2683 | 第%s行明细中优惠政策名称不能超过50位 | +| 2684 | 第%s行明细中零税率标识只能为:\[0,1,2,3\] | +| 2685 | 第%s行明细中自行编码不能超过20位 | +| 2686 | 第%s行明细中单价含税标志只能为:\[0,1\] | +| 2687 | 第%s行明细中含税金额不能超过16位 | +| 2688 | 第%s行明细中不含税金额不能超过16位 | +| 2689 | 第%s行明细中税额不能超过16位 | +| 2690 | 第%s行明细中(不含税金额+税额)不等于含税金额 | +| 2691 | 第%s行明细中成品油单价不能为空 | +| 2692 | 第%s行明细中项目单价为空时,含税金额、不含税金额、税额都不能为空 | +| 2693 | 第%s行明细中商品单价为空时,商品数量也必须为空 | +| 2694 | 第%s行明细中商品单价长度不能超过29位 | +| 2695 | 第%s行明细中商品单价不能为0或负数 | +| 2696 | 第%s行明细中商品数量不能为空,且长度不能超过29位 | +| 2697 | 第%s行明细中蓝票商品数量不能为0或负数 | +| 2698 | 第%s行明细中红票商品数量不能为0或正数 | +| 2699 | 第%s行明细中商品税率不能为空 | +| 2700 | 第%s行明细中支持的税率列表:\[0,0.01,0.015,0.03,0.04,0.05,0.06,0.09,0.10,0.11,0.13,0.16,0.17\] | +| 2701 | 第%s行明细中规格型号不能超过40位 | +| 2702 | 第%s行明细中成品油发票单位不能为空 | +| 2703 | 第%s行明细中成品油发票单位只能为吨或升 | +| 2704 | 第%s行明细中单位不能超过22位 | +| 2705 | 第%s行明细中折扣行必须紧挨被折扣行之后 | +| 2706 | 第%s行明细中红票不支持折扣行发票开具 | +| 2707 | 第%s行明细中蓝票折扣行金额应为负 | +| 2708 | 第%s行明细中蓝票折扣行商品数量应为负 | +| 2709 | 第%s行明细中蓝票被折扣行金额应为正 | +| 2710 | 第%s行明细中蓝票被折扣行商品数量应为正 | +| 2711 | 第%s行明细中蓝票折扣行金额不能大于被折扣行的金额 | +| 2712 | 第%s行明细中折扣行商品税率必须和被折扣行商品税率相同 | +| 2713 | 第%s行明细中折扣行的商品名称必须和被折扣行相同 | +| 2714 | 第%s行明细中红票金额必须小于0 | +| 2715 | 第%s行明细中正票金额必须大于0 | +| 2716 | 扣除额只支持两位小数 | +| 2717 | 收购发票暂不支持开具差额征税发票 | +| 2718 | 扣除额只能开具一条商品明细 | +| 2719 | 扣除额不得小于0 | +| 2720 | 扣除额最大不得超过100亿 | +| 2721 | 扣除额大于等于开票金额时,税额应为0 | +| 2722 | 备注需注明差额征税: | +| 2723 | 扣除额不得大于0 | +| 2724 | 扣除额不得小于负100亿 | +| 2725 | 差额征税红字发票备注需注明 | +| 2726 | 差额征税发票,扣除额不能为空 | +| 2727 | 第%s行明细中金额\*税率-税额大于0.06,明细行名称:%s | +| 2728 | 第%s行明细中不含税单价和数量与不含税金额误差大于0.01,明细行名称:%s | +| 2729 | 正票金额必须大于0 | +| 2730 | 红票金额必须小于0 | +| 2731 | 金额超过对应蓝票剩余含税金额: ¥ | +| 2732 | 金额超过对应蓝票剩余不含税金额:¥ | +| 2734 | 已超过最大交付次数10次 | +| 2735 | 重新交付手机和邮箱不能都为空 | +| 2736 | 纸票不能交付 | +| 2737 | 开票未完成,不可重发通知。 | +| 2738 | 订单编号不能重复 | +| 2745 | 分机号范围为0-65535 | +| 2746 | 终端号不能超过10位 | +| 2747 | 第%s行明细中商品不存在,请重新选择商品或增加新商品 | +| 2761 | 单行明细不含税金额超过单张开票限额不支持拆分开票 | +| 2762 | 折扣后不含税金额超过单张开票限额不允许拆分开票 | +| 2763 | 该订单拆分后发票金额为0,不得拆分开票 | +| 2764 | 第%s行明细中商品税率、增值税特殊管理、零税率标识逻辑关系不正确 | +| 2765 | 第%s行明细中商品零税率标识为1、2、3时,税率应为0% | +| 2766 | 发票拆分异常 | +| 2767 | 发票被拆分后明细大于%d行 | +| 2768 | 需要拆分的发票订单编号长度不能超过60位 | +| 2769 | 发票被拆分后张数大于%d张 | +| 2770 | 单张开票限额为空 | +| 2771 | 单张开票限额不能小于0.01 | +| 2772 | 需拆分发票的不含税金额不能小于0.01 | diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/录入自定义字段.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/录入自定义字段.md new file mode 100644 index 0000000..3faccca --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/录入自定义字段.md @@ -0,0 +1,106 @@ +--- +title: 录入自定义字段 +aliases: + - 录入自定义字段 + - 诺税通录入自定义字段 + - 设备企业与配置-录入自定义字段 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 录入自定义字段 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/operation/definedColumn/batchSave.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 录入自定义字段 + +### 接口说明 + +根据订单号或流水号录入自定义字段信息。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/operation/definedColumn/batchSave.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号 | 20 | +| orderNos | List | 否 | 订单号 订单号和发票流水号二选一必填,都传入则优先使用流水号 | 500 | +| invoiceIds | List | 否 | 发票流水号 订单号和发票流水号二选一必填,都传入则优先使用流水号 | 500 | +| columnFirst | String | 否 | 自定义字段一,三个自定义字段不可全为空 | \- | +| columnSecond | String | 否 | 自定义字段二,三个自定义字段不可全为空 | \- | +| columnThree | String | 否 | 自定义字段三,三个自定义字段不可全为空 | \- | + +### 请求示例 + + +++ + + + + + +

{

+

"orderNos": [

+

"123456789"

+

],

+

"sellerTaxnum": "150301199811285326",

+

"columnFirst": "自定义字段1",

+

"columnSecond": "自定义字段2",

+

"columnThree": "自定义字段3"

+

}

+ +### 返回参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/快捷冲红接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/快捷冲红接口.md new file mode 100644 index 0000000..ba4de45 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/快捷冲红接口.md @@ -0,0 +1,402 @@ +--- +title: 快捷冲红接口 +aliases: + - 快捷冲红接口 + - 诺税通快捷冲红接口 + - 作废重开与冲红-快捷冲红接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 快捷冲红接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[03_作废重开与冲红]] +> 文档链接:[总索引](../README.md) · [分组页](../03_作废重开与冲红.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[03_作废重开与冲红]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/ fastRepeatedRedSingle.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 快捷冲红接口 + +### 接口说明 + +支持直接请求蓝字发票直接触发开具对应的红字发票或红字信息表。 + +注:数电发票使用此接口开取红票 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/ fastRepeatedRedSingle.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
sellerTaxnumString

销方税号,15-20位

+

销方税号和组织编码必填其一

20
companyCodeString

组织编码

+

企业税号和组织编码必填其一

20
invoiceIdString蓝票流水号 非数电发票时必填20
invoiceCodeString蓝票发票代码 非数电发票时必填12
invoiceNumberString蓝票发票号码 非数电发票时必填8
billIdString

红字确认单申请单号

+

与billNo、billUuid三选一必填

32
billNoString

红字确认单编号 数电发票时填写

+

与billId、billUuid三选一必填

32
billUuidString

红字确认单uuid 数电发票时填写

+

与billId、billNo三选一必填

32
fastRedTypeInteger快捷冲红类型 不填或者0为普通快捷冲红 1:数电发票快捷冲红(数电发票必传1)1
invoiceLineString

数电发票跨票种冲红时传入,发票票种:(非数电发票时不需要传)

+

bs:数电专票(电子),

+

pc:数电普票(电子),

+

es:数电专票(纸质),

+

ec:数电普票(纸质)

+

1、默认为对应蓝票数电票种;

+

2、蓝票为es 时可选择 bs、es进行冲红

+

3、蓝票为ec时可选择pc、ec进行冲红

+

4、蓝票为数电电票时只能拿原票种冲红

2
orderNoString红字发票对应订单编号64
columnFirstString自定义列1
columnSecondString自定义列2
columnThreeString自定义列3
+ +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"invoiceId": "14111111111",

+

"invoiceCode": "11111111",

+

"invoiceNumber": "22222222",

+

"billId": "22222222",

+

"billNo": "22222222",

+

"billUuid": "123456",

+

"fastRedType": 1,

+

"invoiceLine": "es",

+

"orderNo": "123456908888",

+

"columnFirst": "c1",

+

"columnSecond": "c2",

+

"columnThree": "c3"

+

}

+ +### 返回参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
codeInteger

状态,200-成功,非200-失败

+

不代表冲红成功/失败

6
messageString详细信息1024
dataObject
data内字段说明
sellerTaxnumString销方税号20
blueInvoiceIdString蓝票流水号 非数电发票时必填20
blueInvoiceCodeString蓝票代码 非数电发票时必填12
blueInvoiceNumberString蓝票号码 非数电发票时必填8
redInvoiceIdString(蓝票非专票时的字段)红票流水号,非专票时必有值20
redOrderNoString(蓝票非专票时的字段)红票orderNo,非专票时必有值64
redBillNoString(蓝票专票时的字段)红字信息表流水号(billNo),不是billInfoNo。专票时必有值24
reasonString失败原因,冲红失败时才会有值2000
billIdString红字确认单申请单号32
billNoString红字确认单编号 数电发票时必填32
billUuidString红字确认单uuid 数电发票时必填32
fastRedTypeInteger快捷冲红类型 不填或者0为普通快捷冲红 1:数电快捷冲红(数电发票必传1)1
+ +### 返回示例 + +成功示例: + + +++ + + + + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"blueInvoiceId": "21122410310201000295",

+

"blueInvoiceCode": "111100020026",

+

"blueInvoiceNumber": "92482083",

+

"redInvoiceId": "12312312312",

+

"redOrderNo": "12123123123123",

+

"redBillNo": null,

+

"billId": "22222222",

+

"billNo": "22222222",

+

"billUuid": "123456",

+

"fastRedType": 1,

+

"reason": ""

+

}

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"blueInvoiceId": "21122410310201000295",

+

"blueInvoiceCode": "111100020026",

+

"blueInvoiceNumber": "92482083",

+

"redInvoiceId": null,

+

"redOrderNo": null,

+

"redBillNo": null,

+

"redBillNo": null,

+

"billId": "22222222",

+

"billNo": "22222222",

+

"billUuid": "123456",

+

"fastRedType": 1,

+

"reason": "未知异常"

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/成品油库存下载接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/成品油库存下载接口.md new file mode 100644 index 0000000..2fb8c6d --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/成品油库存下载接口.md @@ -0,0 +1,122 @@ +--- +title: 成品油库存下载接口 +aliases: + - 成品油库存下载接口 + - 诺税通成品油库存下载接口 + - 专项能力-成品油库存下载接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 成品油库存下载接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/oilStock/downloadProductOil.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 成品油库存下载接口 + +### 接口说明 + +触发从税局局端下载成品油库存到税盘的接口 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/oilStock/downloadProductOil.do | + +### 请求参数 + +| | | | | | +|:-------------:|:--------:|:--------:|:------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| extensionNum | Integer | 是 | 分机号,纯数字 | \- | +| machineNumber | String | 否 | 机器编号,12位数字 | 12 | +| taxCode | String | 是 | 税收分类编码 | 19 | +| num | Double | 是 | 下载数量(升) | \- | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum": 0,

+

"machineNumber": "661565671900",

+

"num": 1,

+

"sellerTaxnum": "150301199811285326",

+

"taxCode": "1070101060100000000"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 913,

+

"message": "[AA99]库存不够!",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量查询发票xmlUrl接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量查询发票xmlUrl接口.md new file mode 100644 index 0000000..3008589 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量查询发票xmlUrl接口.md @@ -0,0 +1,124 @@ +--- +title: 批量查询发票xmlUrl接口 +aliases: + - 批量查询发票xmlUrl接口 + - 诺税通批量查询发票xmlUrl接口 + - 车辆辅助与回传-批量查询发票xmlUrl接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 批量查询发票xmlUrl接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/queryInvoiceXml.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 批量查询发票xmlUrl接口 + +### 接口说明 + +获取发票的xmlUrl + +### 接口地址 + +| | +|:-------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/queryInvoiceXml.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 企业税号 | 20 | +| dataStream | Integer | 否 | 是否返回数据流 0不返回 1返回 | \- | +| invoiceCodeAndNumbers | List\ | 否 | 发票查询信息 | 50 | +| InvoiceCodeNumDto发票信息参数 | | | | | +| invoiceCode | String | 否 | 发票代码 | 8 | +| invoiceNumber | String | 是 | 发票号码 | 20 | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"dataStream": 1,

+

"invoiceCodeAndNumbers": [

+

{

+

"invoiceCode": "12345678",

+

"invoiceNumber": "2302171651331000014"

+

}

+

]

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | 是 | | 查询对象 | | +| sellerTaxnum | String | 是 | 150301199811285326 | 企业税号 | | +| invoiceCode | String | 是 | 12345678 | 发票代码 | | +| invoiceNumber | String | 是 | 2302171651331000014 | 发票号码 | | +| xmlUrl | String | 是 | | 发票xml地址(存在xml则返回) | | +| dataStream | String | 否 | | 发票xml数据流(Base64) | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

[

+

{

+

"dataStream": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiIHN0YW5kYWxvbmU9InllcyI/Pgo8RUludm9pY2U+CiAgICA8SGVhZGVyPgogICAgICAgIDxFSWlkPjIyNDQyMDAwMDAwMDAyMDQwMjYxPC9FSWlkPgogICAgICAgIDxFSW52b2ljZVRhZz5TV0VJNDQwMDwvRUludm9pY2VUYWc+CiAgICAgICAgPFZlcnNpb24+MC4yPC9WZXJzaW9uPgogICAgICAgIDxJbmhlcmVudExhYmVsPgogICAgICAgICAgICA8SW5Jc3N1VHlwZT4KICAgICAgICAgICAgICAgIDxMYWJlbENvZGU+WTwvTGFiZWxDb2RlPgogICAgICAgICAgICAgICAgPExhYmVsTmFtZT7mmK/lkKbok53lrZflj5HnpajmoIflv5c8L0xhYmVsTmFtZT4KICAgICAgICAgICAgPC9Jbklzc3VUeXBlPgogICAgICAgICAgICA8RUludm9pY2VUeXBlPgogICAgICAgICAgICAgICAgPExhYmVsQ29kZT4wMTwvTGFiZWxDb2RlPgogICAgICAgICAgICAgICAgPExhYmVsTmFtZT7nlLXlrZDlj5Hnpag8L0xhYmVsTmFtZT4KICAgICAgICAgICAgPC9FSW52b2ljZVR5cGU+CiAgICAgICAgICAgIDxHZW5lcmFsT3JTcGVjaWFsVkFUPgogICAgICAgICAgICAgICAgPExhYmVsQ29kZT4wMjwvTGFiZWxDb2RlPgogICAgICAgICAgICAgICAgPExhYmVsTmFtZT7mma7pgJrlj5Hnpag8L0xhYmVsTmFtZT4KICAgICAgICAgICAgPC9HZW5lcmFsT3JTcGVjaWFsVkFUPgogICAgICAgICAgICA8VGF4cGF5ZXJUeXBlPgogICAgICAgICAgICAgICAgPExhYmVsQ29kZT4xPC9MYWJlbENvZGU+CiAgICAgICAgICAgICAgICA8TGFiZWxOYW1lPuS4gOiIrOe6s+eojuS6ujwvTGFiZWxOYW1lPgogICAgICAgICAgICA8L1RheHBheWVyVHlwZT4KICAgICAgICA8L0luaGVyZW50TGFiZWw+CiAgICAgICAgPFVuZGVmaW5lZExhYmVsPgogICAgICAgICAgICA8TGFiZWw+CiAgICAgICAgICAgICAgICA8TGFiZWxUeXBlPuS8geS4muihjOS4muaAp+i0qOexu+agh+etvjwvTGFiZWxUeXBlPgogICAgICAgICAgICAgICAgPExhYmVsQ29kZT4zNiwxNywwMiwzNyw0MCwwMywwOCxEUywxMSwyMDwvTGFiZWxDb2RlPgogICAgICAgICAgICAgICAgPExhYmVsTmFtZT7lhpzkuqflk4HmlLbotK3kvIHkuJos5Y2354Of55Sf5Lqn5LyB5LiaLOaIkOWTgeayuee7j+mUgOS8geS4mizlhYnkvI/mlLbotK3kvIHkuJos5YaN55Sf6LWE5rqQ5Zue5pS2LOWbveWGheacuuWKqOi9pueUn+S6p+S8geS4mizkuozmiYvovabnu4/plIDkvIHkuJosRFMs56iA5Zyf5Ya254K85YiG56a75LyB5LiaLOeUn+S6p+Wei+WHuuWPo+S8geS4mjwvTGFiZWxOYW1lPgogICAgICAgICAgICA8L0xhYmVsPgogICAgICAgICAgICA8TGFiZWw+CiAgICAgICAgICAgICAgICA8TGFiZWxUeXBlPuWPkeelqOW8gOWFt+aWueW8j+agh+etvjwvTGFiZWxUeXBlPgogICAgICAgICAgICAgICAgPExhYmVsQ29kZT4xPC9MYWJlbENvZGU+CiAgICAgICAgICAgICAgICA8TGFiZWxOYW1lPue9kemhteW8gOelqDwvTGFiZWxOYW1lPgogICAgICAgICAgICA8L0xhYmVsPgogICAgICAgIDwvVW5kZWZpbmVkTGFiZWw+CiAgICA8L0hlYWRlcj4KICAgIDxFSW52b2ljZURhdGE+CiAgICAgICAgPFNlbGxlckluZm9ybWF0aW9uPgogICAgICAgICAgICA8U2VsbGVySWROdW0+MTAxMjJBQUZGQUQ1N0NEM0U8L1NlbGxlcklkTnVtPgogICAgICAgICAgICA8U2VsbGVyTmFtZT7kuIDoiKznurPnqI7kurrogqHku73mnInpmZDlhazlj7g8L1NlbGxlck5hbWU+CiAgICAgICAgICAgIDxTZWxsZXJBZGRyPuaWsOWfjuWMuumUoeael+i3r+ihl+mBk+WKnuS6i+WkhDIzNDIzNDIzNDwvU2VsbGVyQWRkcj4KICAgICAgICAgICAgPFNlbGxlclRlbE51bT4xMzAyMjIyODg4ODwvU2VsbGVyVGVsTnVtPgogICAgICAgICAgICA8U2VsbGVyQmFua05hbWU+5YyX5Lqs6ZO26KGM5rW35reA5Yy65riF5rKz5pSv6KGMPC9TZWxsZXJCYW5rTmFtZT4KICAgICAgICAgICAgPFNlbGxlckJhbmtBY2NOdW0+NDQzMDAwMDEwNTAwMTY2MzE8L1NlbGxlckJhbmtBY2NOdW0+CiAgICAgICAgPC9TZWxsZXJJbmZvcm1hdGlvbj4KICAgICAgICA8QnV5ZXJJbmZvcm1hdGlvbj4KICAgICAgICAgICAgPEJ1eWVySWROdW0+OTExMTAxMDhNQTAxRUxISDlQPC9CdXllcklkTnVtPgogICAgICAgICAgICA8QnV5ZXJOYW1lPuWwj+inhOaooee6s+eojuS6uuiCoeS7veaciemZkOWwj+inhOaooee6s+eojuS6uuiCoeS7veaciemZkOWwjyAgICAg5qih57qz56iO5Lq66IKh5Lu95pyJ6ZmQ5bCP6KeE5qih57qz56iO5Lq66IKh5Lu95pyJ6ZmQ5bCP6KeE5qih57qz56iO5Lq66IKh5Lu95pyJ6ZmQPC9CdXllck5hbWU+CiAgICAgICAgICAgIDxCdXllckFkZHI+5LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2B5LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2B5LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2B5LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2B5LiA5LqM5LiJ5Zub5LqU5YWt5LiD5YWr5Lmd5Y2BPC9CdXllckFkZHI+CiAgICAgICAgICAgIDxCdXllclRlbE51bT4xMjM0NTY3ODkwMTIzNDU2NzA8L0J1eWVyVGVsTnVtPgogICAgICAgICAgICA8QnV5ZXJCYW5rTmFtZT7kuK3lm70gIOmTtuihjOW5v+W3nuesrOS4gOaUr+ihjOS4reWbvemTtuihjOW5v+W3niDnrKzkuIDmlK/ooYzkuK3lm73pk7booYzlub/lt57nrKzkuIDmlK/ooYzkuK3lm73pk7booYzlub/lt57nrKzkuIDmlK/ooYzkuK3lm73pk7booYzlub/lt57nrKzkuIDmlK/ooYw8L0J1eWVyQmFua05hbWU+CiAgICAgICAgICAgIDxCdXllckJhbmtBY2NOdW0+MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM2Nzg5MDwvQnV5ZXJCYW5rQWNjTnVtPgogICAgICAgICAgICA8QnV5ZXJIYW5kbGluZ05hbWU+PC9CdXllckhhbmRsaW5nTmFtZT4KICAgICAgICA8L0J1eWVySW5mb3JtYXRpb24+CiAgICAgICAgPEJhc2ljSW5mb3JtYXRpb24+CiAgICAgICAgICAgIDxUb3RhbEFtV2l0aG91dFRheD45OC4yMzwvVG90YWxBbVdpdGhvdXRUYXg+CiAgICAgICAgICAgIDxUb3RhbFRheEFtPjEyLjc3PC9Ub3RhbFRheEFtPgogICAgICAgICAgICA8VG90YWxUYXgtaW5jbHVkZWRBbW91bnQ+MTExLjAwPC9Ub3RhbFRheC1pbmNsdWRlZEFtb3VudD4KICAgICAgICAgICAgPFRvdGFsVGF4LWluY2x1ZGVkQW1vdW50SW5DaGluZXNlPuWjueS9sOWjueaLvuWjueWchuaVtDwvVG90YWxUYXgtaW5jbHVkZWRBbW91bnRJbkNoaW5lc2U+CiAgICAgICAgICAgIDxEcmF3ZXI+5byg55uK6L6+PC9EcmF3ZXI+CiAgICAgICAgICAgIDxSZXF1ZXN0VGltZT4yMDIyLTA5LTIxPC9SZXF1ZXN0VGltZT4KICAgICAgICA8L0Jhc2ljSW5mb3JtYXRpb24+CiAgICAgICAgPElzc3VJdGVtSW5mb3JtYXRpb24+CiAgICAgICAgICAgIDxJdGVtTmFtZT4q5aKo5rC0KumSoueslOaZrumAmumbtjwvSXRlbU5hbWU+CiAgICAgICAgICAgIDxTcGVjTW9kPjwvU3BlY01vZD4KICAgICAgICAgICAgPE1lYVVuaXRzPjwvTWVhVW5pdHM+CiAgICAgICAgICAgIDxRdWFudGl0eT4xPC9RdWFudGl0eT4KICAgICAgICAgICAgPFVuUHJpY2U+OTguMjMwMDg4NDk1NTc1MjwvVW5QcmljZT4KICAgICAgICAgICAgPEFtb3VudD45OC4yMzwvQW1vdW50PgogICAgICAgICAgICA8VGF4UmF0ZT4wLjEzMDAwMDwvVGF4UmF0ZT4KICAgICAgICAgICAgPENvbVRheEFtPjEyLjc3MDAwMDwvQ29tVGF4QW0+CiAgICAgICAgICAgIDxUb3RhbHRheEluY2x1ZGVkQW1vdW50PjExMS4wMDAwMDA8L1RvdGFsdGF4SW5jbHVkZWRBbW91bnQ+CiAgICAgICAgICAgIDxUYXhDbGFzc2lmaWNhdGlvbkNvZGU+MTA2MDQwNDAyMDAwMDAwMDAwMDwvVGF4Q2xhc3NpZmljYXRpb25Db2RlPgogICAgICAgIDwvSXNzdUl0ZW1JbmZvcm1hdGlvbj4KICAgICAgICA8U3BlY2lmaWNJbmZvcm1hdGlvbi8+CiAgICAgICAgPEFkZGl0aW9uYWxJbmZvcm1hdGlvbi8+CiAgICA8L0VJbnZvaWNlRGF0YT4KICAgIDxTZWxsZXJBdXRoZW50aWNhdGlvbj4KICAgICAgICA8QXV0aGVudGljYXRpb25NZXRob2RzPjAyPC9BdXRoZW50aWNhdGlvbk1ldGhvZHM+CiAgICA8L1NlbGxlckF1dGhlbnRpY2F0aW9uPgogICAgPFRheFN1cGVydmlzaW9uSW5mbz4KICAgICAgICA8SW52b2ljZU51bWJlcj4yMjQ0MjAwMDAwMDAwMjA0MDI2MTwvSW52b2ljZU51bWJlcj4KICAgICAgICA8SXNzdWVUaW1lPjIwMjItMDktMjEgMjA6MTY6Mjg8L0lzc3VlVGltZT4KICAgICAgICA8VGF4QnVyZWF1Q29kZT4xNDQwMDAwMDAwMDwvVGF4QnVyZWF1Q29kZT4KICAgICAgICA8VGF4QnVyZWF1TmFtZT7lm73lrrbnqI7liqHmgLvlsYDlub/kuJznnIHnqI7liqHlsYA8L1RheEJ1cmVhdU5hbWU+CiAgICA8L1RheFN1cGVydmlzaW9uSW5mbz4KICAgIDxUYXhCdXJlYXVTaWduYXR1cmU+CiAgICAgICAgPFJlZmVyZW5jZSBVUkk9Ii9FaW52b2ljZS9IZWFkZXJ8L0VpbnZvaWNlL0VpbnZvaWNlRGF0YXwvRWludm9pY2UvU2VsbGVyQXV0aGVudGljYXRpb258L0VpbnZvaWNlL1RheFN1cGVydmlzaW9uSW5mb3wvRWludm9pY2UvVGF4QnVyZWF1U2lnbmF0dXJlL1NpZ25hdHVyZVRpbWUiLz4KICAgICAgICA8U2lnbmF0dXJlQWxnb3JpdGhtPjEuMi4xNTYuMTAxOTcuMS41MDE8L1NpZ25hdHVyZUFsZ29yaXRobT4KICAgICAgICA8U2lnbmF0dXJlRm9ybWF0PkRFVEFDSDwvU2lnbmF0dXJlRm9ybWF0PgogICAgICAgIDxTaWduYXR1cmVUaW1lPjIwMjItMDktMjMgMjA6MTc6NDI8L1NpZ25hdHVyZVRpbWU+CiAgICAgICAgPFNpZ25hdHVyZVZhbHVlPjwvU2lnbmF0dXJlVmFsdWU+CiAgICAgICAgPEtleUluZm8vPgogICAgPC9UYXhCdXJlYXVTaWduYXR1cmU+CjwvRUludm9pY2U+Cg==",

+

"invoiceCode": "12345678",

+

"invoiceNumber": "2302171651331000014",

+

"sellerTaxnum": "9151010020260067X4",

+

"xmlUrl": "https://cmp-brh.nntest.cn/fd/M00/BC/5D/wKjScGPjCLaAVgJkAAASx_Qt__k274.xml"

+

}

+

]

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取信息转换配置接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取信息转换配置接口.md new file mode 100644 index 0000000..bc71eeb --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取信息转换配置接口.md @@ -0,0 +1,100 @@ +--- +title: 批量获取信息转换配置接口 +aliases: + - 批量获取信息转换配置接口 + - 诺税通批量获取信息转换配置接口 + - 设备企业与配置-批量获取信息转换配置接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 批量获取信息转换配置接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/infoConvert/batch.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 批量获取信息转换配置接口 + +### 接口说明 + +批量获取信息转换配置,供应链使用,最多支持500个税号的查询。 + +### 接口地址 + +| | +|:---------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/infoConvert/batch.do | + +请求方式:POST + +Content-Type:application/x-www-form-urlencoded + +### 请求参数 + +| | | | | | +|:----------:|:----------:|:--------:|:-------------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| taxNumList | String\[\] | 是 | 销方税号列表,最多支持500组税号 | \- | + +### 返回参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | +| data内字段说明 | | | | | +| taxnum | String | 是 | 销方税号 | | +| customerOpenFlag | int | 是 | 客户信息转换开关:0-关,1-开,默认值0 | | +| customerProcessNode | String | 是 | 客户信息处理节点:提交开票时SUBMIT_INVOICE,创建订单时ORDER_SAVE,开票时INVOICE | | +| goodsOpenFlag | int | 是 | 商品信息转换开关:0-关,1-开,默认值0 | | +| goodsProcessNode | String | 是 | 商品信息处理节点:提交开票时SUBMIT_INVOICE,创建订单时ORDER_SAVE,开票时INVOICE | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

{

+

"taxnum": "150301199811285326",

+

"goodsOpenFlag": 1,

+

"goodsProcessNode": "INVOICE",

+

"customerOpenFlag": 1,

+

"customerProcessNode": "INVOICE"

+

}

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取备注配置信息接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取备注配置信息接口.md new file mode 100644 index 0000000..bf78d87 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/批量获取备注配置信息接口.md @@ -0,0 +1,148 @@ +--- +title: 批量获取备注配置信息接口 +aliases: + - 批量获取备注配置信息接口 + - 诺税通批量获取备注配置信息接口 + - 设备企业与配置-批量获取备注配置信息接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 批量获取备注配置信息接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/config/remarkConf/batch.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 批量获取备注配置信息接口 + +### 接口说明 + +批量获取备注配置信息,供应链使用,最多支持500组数据的查询。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/config/remarkConf/batch.do | + +### 请求参数 + +| | | | | | +|:------------:|:--------:|:--------:|:--------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| taxnum | String | 否 | 企业税号 | 20 | +| businessType | String | 否 | 业务标识 | 2 | +| processNode | String | 否 | 处理节点 | 100 | +| buyerTaxnum | String | 否 | 购方税号 | 20 | +| buyerName | String | 否 | 购方名称 | 100 | + +### 请求示例 + + +++ + + + + + +

[

+

{

+

"businessType": "1",

+

"buyerName": "",

+

"buyerTaxnum": "",

+

"processNode": "INVOICE",

+

"taxnum": "3333333333333333"

+

}

+

]

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | | **类型** | **必填** | **描述** | **长度** | +| code | | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | | String | 是 | 详细信息 | 1024 | +| data | | Object | | | | +| data内字段说明 | | | | | | +| taxnum | | String | | 企业税号 | 20 | +| businessType | | String | | 业务标识 | 2 | +| processNode | | String | | 处理节点 | 100 | +| buyerTaxnum | | String | | 请求中的购方税号 | 20 | +| buyerName | | String | | 请求中的购方名称 | 100 | +| configs | | Object | | 备注配置信息 | \- | +| buyerInfoList | | Object | | 模板的全部购方信息 | \- | +| configs内字段说明 | | | | | | +| idx | | int | | 序号 | | +| paramCode | | String | | 对应参数代码 | | +| remarkTitle | | String | | 备注名称 | | +| rowNo | | int | | 行号 | | +| valSource | | int | | 取值来源 | | +| buyerInfoList内字段说明 | | | | | | +| buyerTaxnum | String | | | 购方税号 | | +| buyerName | String | | | 购方名称 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

{

+

"taxnum": "3333333333333333",

+

"businessType": "1",

+

"processNode": "INVOICE",

+

"buyerName": "",

+

"buyerTaxnum": "",

+

"configs": [

+

{

+

"idx": 0,

+

"rowNo": 1,

+

"remarkTitle": "出口",

+

"paramCode": "",

+

"valSource": 1

+

},

+

{

+

"idx": 1,

+

"rowNo": 2,

+

"remarkTitle": "外币金额:",

+

"paramCode": "FOREIGN_CURRENCY_AMOUNT",

+

"valSource": 1

+

}

+

]

+

}

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/抄报清卡.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/抄报清卡.md new file mode 100644 index 0000000..da8fa5a --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/抄报清卡.md @@ -0,0 +1,121 @@ +--- +title: 抄报清卡 +aliases: + - 抄报清卡 + - 诺税通抄报清卡 + - 专项能力-抄报清卡 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 抄报清卡 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/extensioninfo/reportAndClear.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 抄报清卡 + +### 接口说明 + +触发抄报清卡 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/extensioninfo/reportAndClear.do | + +### 请求参数 + +| | | | | | +|:------------:|:--------:|:--------:|:--------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| taxnum | String | 是 | 销方税号 | 20 | +| extensionNum | String | 否 | 分机号 | | +| machineNum | String | 否 | 机器号 | | + +### 请求示例 + + +++ + + + + + +

{

+

"taxnum": "150301199811285326",

+

"extensionNum": "1",

+

"machineNum": "123456789123"

+

}

+ +### 返回参数 + +| | | | | | +|:------------:|:--------:|:--------:|:--------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | String | 否 | 触发失败的原因以及设备信息 | | +| extensionNum | String | 否 | 分机号 | | +| machineNum | String | 否 | 机器号 | | +| reason | String | 否 | 触发失败的原因 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

+ +失败返回示例: + + +++ + + + + + +

{

+

"code": 400,

+

"message": "税号不能为空",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/授信额度刷新接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/授信额度刷新接口.md new file mode 100644 index 0000000..1ea352e --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/授信额度刷新接口.md @@ -0,0 +1,124 @@ +--- +title: 授信额度刷新接口 +aliases: + - 授信额度刷新接口 + - 诺税通授信额度刷新接口 + - 专项能力-授信额度刷新接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 授信额度刷新接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/creditQuota/query.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 授信额度刷新接口 + +### 接口说明 + +获取数电发票税局最新授信额度,该接口根据不同设备类型,返回不同结果。如果乐企模式,则同步返回授信额度数据。如果非乐企模式,为异步查询,需搭配接口3.57使用,来获取查询结果。 + +### 接口地址 + +| | +|:---------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/creditQuota/query.do | + +### 请求参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **说明** | **描述** | **长度** | +| taxNum | String | 是 | 需要查询的企业税号 | 企业税号 | 20 | +| type | Integer | 否 | 分机号与请求类型二选一必填,均传入已分机号匹配到的设备为准 | 请求类型 0:乐企 1:数电普通 | \- | +| extensionNum | Integer | 否 | 分机号与请求类型二选一必填,均传入已分机号匹配到的设备为准 | 分机号 | 0-99999 | + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"type": 1

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | 是 | | 查询对象 | | +| 乐企模式返回字段 | | | | | | +| creditFlag | String | 是 | Y | 暂停授信标志 Y:暂停 N:未暂停 | 1 | +| creditQuotaAmount | BigDecimal | 是 | 10000.00 | 本月授信额度 | 12,2 | +| downloadAmount | BigDecimal | 是 | 10000.00 | 可用剩余额度 | 12,2 | +| downloadRemainAmount | BigDecimal | 是 | 10000.00 | 已下载额度 | 12,2 | +| remainAmount | BigDecimal | 是 | 10000.00 | 已下载未使用额度 | 12,2 | +| taxnum | String | 是 | 150301199811285326 | 企业税号 | 20 | +| vestPeriod | String | 否 | 202303 | 属期 格式:yyyyMM | | +| creditUpdateTime | Date | 是 | 2023-03-06 00:00:00 | 授信额度更新时间 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": "200",

+

"message": "查询成功" ,

+

"data": {

+

"creditFlag": "Y",

+

"creditQuotaAmount": "10000.00" ,

+

"downloadAmount": "10000.00",

+

"downloadRemainAmount": "10000.00",

+

"remainAmount": "10000.00",

+

"taxnum": "150301199811285326",

+

"vestPeriod": "202303",

+

"creditUpdateTime": "2023-03-06 00:00:00"

+

}

+

}

+

非乐企:

+

{

+

"code": "200",

+

"message": "查询成功" ,

+

"data": ""

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/收票入库接口_本地提取发票.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/收票入库接口_本地提取发票.md new file mode 100644 index 0000000..bf87bbd --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/收票入库接口_本地提取发票.md @@ -0,0 +1,1148 @@ +--- +title: 收票入库接口(本地提取发票) +aliases: + - 收票入库接口(本地提取发票) + - 诺税通收票入库接口(本地提取发票) + - 车辆辅助与回传-收票入库接口(本地提取发票) +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 收票入库接口(本地提取发票) + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/ receiveLocalInvoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 收票入库接口(本地提取发票) + +### 接口说明 + +将第三方的发票通过此接口推送至诺税通销项发票系统。 + +### 接口地址 + +| | +|:------------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/ receiveLocalInvoice.do | + +注:此接口以 application/json 方式提交数据 + +### 请求参数 + + +++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必须示例值更多限制描述最大长度
sellerTaxnumString  销方税号和组织编码必填其一销方税号20
sellerNameString  销方名称100
companyCodeString销方税号和组织编码必填其一组织编码20
businessTypeString业务标识(基础模块设置的业务类型枚举值)业务标识2
sellerAddressString  销方地址100
sellerPhoneString  销方电话20
sellerBankString  销方开户银行100
sellerAccountString  销方银行账号30
clerkerString  开票员20
payeeString  收款人20
checkerString  复核人20
buyerNameString  购方名称100
buyerTaxnumString  购方税号20
buyerAddressString  购方地址100
buyerPhoneString  购方电话50
buyerBankString  购方开户银行100
buyerAccountString  购方银行账户30
orderNoString  订单编号64
orderDateString2022-05-12年-月-日订单日期10
deliverDateString2022-05-12年-月-日发货日期10
invoiceTypeString  1:蓝票;2:红票。发票类型2
taxAmountTotalBigDecimal  含税金额 
taxFreeAmountTotalBigDecimal  不含税金额 
taxTotalBigDecimal  合计税额 
invoiceLineString  p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票发票种类2
createTimeDate  创建时间 
invoiceTimeDate  开票时间 
invalidTimeDate  作废时间 
invalidStateInteger 0 未提交 , 1 作废成功 , 2 作废失败 , 3 已提交(作废中)作废状态2
requestSrcInteger 0-API调用,1-手工开票,2-批量导入,3-防伪开票,4-扫码开票,5-本地提取,6-诺诺发票,默认5请求来源1
remarkString  备注

数电电票:200(中文计算一位)

+

其他发票:230(中文计算两位)

invoiceCodeString 不足请左补0发票代码12
invoiceNumberString 不足请左补0发票号码8
oriInvoiceCodeString 不足请左补0对应蓝票代码12
oriInvoiceNumberString 不足请左补0对应蓝票号码8
listFlagInteger  清单标志2
listGoodsNameString  清单发票项目名称90
extensionNumInteger  分机号5
machineNumerString  机器编号12
terminalNumInteger  终端号5
pdfUrlString  发票pdf地址255
paperPdfUrlString  纸票pdf地址255
imageUrlString  图片地址(多个图片使用逗号隔开)255
checkCodeString  校验码32
qrCodeString  二维码100
invoiceCipherString  发票密文200
ofdUrlString  ofd地址255
pictureUrlString  发票详情地址255
substituteFlagInteger 0非代开;1代开。默认值0代开标志2
departmentIdLong  部门门店id20
userIdLong  开票员Id20
productOilFlagInteger 0非成品油,1成品油成品油标志2
vehicleFlagInteger0非机动车,1机动车,默认为0专票机动车标志2
billInfoNoString  对应红字信息表编号24
columnFirstString  自定义列一255
columnSecondString  自定义列二255
columnThreeString  自定义列三255
bizCallbackUrlString  业务系统回调地址255
departCodeString部门编码50
projectCodeString项目编码64
projectNameString项目名称300
freshInvoiceLimitFlagInteger0-不更新,1-更新,默认-0是否更新项目开票限额标志
detailList 明细数组电子发票明细 
detailIndexInteger 明细行索引。机动车非必填明细序号5
detailTypeInteger 0,正常行;1,折扣行;2,被折扣行。机动车非必填明细行性质2
goodsNameString 非机动车发时,必填。机动车非必填。商品名称90
withTaxFlagInteger 

0:不含税,1:含税。

+

机动车票非必填。机动车非必填。

单价含税标志2
goodsPriceBigDecimal  含税单价 
taxFreePriceBigDecimal  不含税单价 
goodsNumBigDecimal  数量 
taxrateString 红票时选填税率10
specTypeString  规格型号40
goodsUnitString  单位22
goodsCodeString  税收分类编码19
goodsCodeAbbString  税收分类编码简称200
selfCodeString  自行编码20
favouredPolicyFlagInteger 0:不使用,1:使用。机动车票非必填。优惠政策标识2
favouredPolicyNameString 标识为1时内容必填。优惠政策内容50
zeroRateFlagString 零税率标识:空-非零税率;1-免税;2-不征税;3-普通零税率零税率标识2
deductionBigDecimal  扣除额 
taxAmountBigDecimal 机动车必填。含税金额 
taxFreeAmountBigDecimal 机动车必填。不含税金额 
taxBigDecimal 机动车必填。税额 
columnFirstString明细自定义列1255
columnSecondString明细自定义列2255
columnThreeString明细自定义列3255
columnFourString明细自定义列4255
columnFiveString明细自定义列5255
subjectAccountCodeStringT123核算主体编码维护在诺税通的“核算主体编码”200
subjectAccountString核算主体名称核算主体名称核算主体名称200
机动车发票明细机动车发票明细
vehicleTypeString 机动车发票时必填车辆类型40
brandModelString 机动车发票时必填厂牌型号60
productOriginString 机动车发票时必填产地32
certificateString  合格证号50
importCertifyNumString  进口说明书号50
inspectionOddNumString  商检单号50
engineNumString  发动机号50
vehicleCodeString机动车发票时必填车架号码/车辆识别代号50
measureUnitsString  吨位20
maxCapacityString  限乘人数10
organizationCodeString 机动车发票时必填身份证号/组织机构代码25
produceCompanyNameString  生产企业名称50
taxOfficeCodeString  税务机关代码100
taxOfficeNameString  税务机关名称100
intactCertificateNumString  完整凭证号码50
+ +### 请求示例 + + +++ + + + + + +

{

+

"buyerName": "测试购方企业",

+

"clerker": "小红",

+

"vehicleFlag" : 1,

+

"detail": [

+

{

+

"tax": "3",

+

"taxrate": "0.03",

+

"taxFreeAmount": "100",

+

"taxAmount": "103",

+

"vehicleType": "轿车",

+

"brandModel": "宝马3系",

+

"productOrigin": "北京",

+

"certificate": "WDL042613263551",

+

"importCertifyNum": "646464",

+

"engineNum": "1001111",

+

"vehicleCode": "LHGK43284342384234",

+

"intactCertificateNum": "1221",

+

"measureUnits": "3",

+

"maxCapacity": "5",

+

"taxOfficeCode": "665",

+

"taxOfficeName": "0564"

+

}

+

],

+

"machineNumber": "5454",

+

"terminalNum": "5454",

+

"extensionNum": "5454",

+

"invoiceCode": "000011112955",

+

"invoiceNumber": "00001111",

+

"invoiceLine": "j",

+

"invoiceTime": "2021-03-12T14:59:25.715",

+

"invoiceType": 1,

+

"listFlag": 0,

+

"productOilFlag": 0,

+

"requestSrc": 5,

+

"sellerName": "移动测试盘326",

+

"sellerTaxnum": "150301199811285326",

+

"substituteFlag": 0,

+

"taxAmountTotal": "12.01",

+

"taxFreeAmountTotal": "12.01",

+

"taxTotal": "12.01"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | Integer | 是 | 200 | | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | | 收票状态 | | +| data | String | | | | | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": ""

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 2505,

+

"message": "公司不存在"

+

}

+ +### 状态码说明 + +| | | +|:--:|:--:| +| **状态码** | **描述** | +| 2505 | 公司不存在 | +| 2686 | 含税标识错误 | +| 26960 | 明细中(单价、商品数量)和(不含税金额、含税金额、税额)不能同时为空 | +| 2696 | 明细中商品数量不能为空,且长度不能超过29位 | +| 2705 | 明细中折扣行必须紧挨被折扣行之后 | +| 26770 | 明细中序号不能为空 | +| 2680 | 发票行性质错误 | +| 2800 | 车辆类型必填 | +| 2801 | 车辆类型超长 | +| 2802 | 厂牌号必填 | +| 2803 | 厂牌号超长 | +| 2804 | 产地必填 | +| 2805 | 产地超长 | +| 2806 | 车架号必填 | +| 2807 | 车架号超长 | +| 2808 | 身份证号必填 | +| 2809 | 身份证号超长 | +| 2810 | 生产企业名称必填 | +| 2811 | 生产企业名称超长 | diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/新增_修改企业开票信息.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/新增_修改企业开票信息.md new file mode 100644 index 0000000..85cb4e9 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/新增_修改企业开票信息.md @@ -0,0 +1,123 @@ +--- +title: 新增/修改企业开票信息 +aliases: + - 新增/修改企业开票信息 + - 诺税通新增/修改企业开票信息 + - 设备企业与配置-新增/修改企业开票信息 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 新增/修改企业开票信息 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/seller/save.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 新增/修改企业开票信息 + +### 接口说明 + +创建/修改企业开票信息接口 + +### 接口地址 + +| | +|:---------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/seller/save.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| taxNum | String | 是 | 企业税号 | 15~20 | +| useScope | Integer | 必填 | 使用范围,0企业,1:个人,2部门,3项目 | 1 | +| clerker | String | 必填 | 使用范围是个人时必填,填入用户管理手机号,使用范围为公司、部门、项目时非必填,直接填入值 | 100 | +| sellerAddress | String | 必填 | 公司地址 | 100 | +| sellerTel | String | 必填 | 公司电话 | 20 | +| sellerBank | String | 必填 | 开户银行 | 100 | +| sellerAccount | String | 必填 | 银行账号 | 50 | +| payee | String | 选填 | 收款人 | 20 | +| checker | String | 选填 | 复核人 | 20 | +| projectCode | String | 选填 | 当前企业下的项目编码 使用范围为项目时必填 | 64 | +| departmentName | String | 选填 | 当前企业下的部门名称 使用范围为部门时必填 | 100 | + +注意: + +1. 公司地址+公司电话总共不得超过100个字符 + +2. 开户银行+银行账号总共不得超过100个字符 + +### 请求示例 + + +++ + + + + + +

{

+

  "taxNum": "33333333333333333",

+

  "useScope": 1,

+

  "clerker": "13655554433",

+

  "sellerAddress": "地址",

+

  "sellerTel": "tel",

+

  "sellerAccount": "account",

+

  "sellerBank": "bank",

+

  "payee": "",

+

  "checker": "",

+

"projectCode": "test123",

+

  "departmentName": "测试部门"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/更新发票票据关联状态接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/更新发票票据关联状态接口.md new file mode 100644 index 0000000..fb6d05f --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/更新发票票据关联状态接口.md @@ -0,0 +1,107 @@ +--- +title: 更新发票票据关联状态接口 +aliases: + - 更新发票票据关联状态接口 + - 诺税通更新发票票据关联状态接口 + - 车辆辅助与回传-更新发票票据关联状态接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 更新发票票据关联状态接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/updateInvoiceAssociationStatus.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 更新发票票据关联状态接口 + +### 接口说明 + +更新发票票据关联状态接口。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/updateInvoiceAssociationStatus.do | + +### 请求参数(用json格式接收) + +| | | | | | | +|:---------------------:|:--------:|:--------:|:--------------:|:---:|:--------:| +| **名称** | **类型** | **必填** | **描述** | | **长度** | +| sellerTaxnum | String | 是 | 销方税号 | | 20 | +| uploadStatus | String | 是 | 工信部上传状态 | | 12 | +| **发票代码+发票号码** | | | | | | +| invoiceCode | String | 是 | 发票代码 | 12 | | +| invoiceNumber | String | 是 | 发票号码 | 8 | | + +### 请求示例 + + +++ + + + + + +

{

+

"invoiceAssociations": [

+

{

+

"invoiceCode": "1500020560",

+

"invoiceNumber": "87609473"

+

}

+

],

+

"sellerTaxnum": "150301199811285326",

+

"uploadStatus": "上传成功"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

    "code":200,

+

    "message":"成功",

+

    "data":  null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询可下载发票库存列表接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询可下载发票库存列表接口.md new file mode 100644 index 0000000..703e901 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询可下载发票库存列表接口.md @@ -0,0 +1,125 @@ +--- +title: 查询可下载发票库存列表接口 +aliases: + - 查询可下载发票库存列表接口 + - 诺税通查询可下载发票库存列表接口 + - 库存票源与打印-查询可下载发票库存列表接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 查询可下载发票库存列表接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/stock/getDownloadableStock.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 查询可下载发票库存列表接口 + +### 接口说明 + +查询诺税通库中可下载发票库存列表 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/stock/getDownloadableStock.do | + +### 请求参数 + +| | | | | | +|:-------------:|:--------:|:--------:|:------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| extensionNum | Integer | 否 | 分机号,纯数字 | \- | +| machineNumber | String | 否 | 机器编号,12位数字 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum": 28,

+

"machineNumber": "661103844159",

+

"sellerTaxnum": "110101999999999618"

+

}

+ +### 返回参数 + +| | | | | | +|:------------------:|:----------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | List | 是 | | | +| data内字段说明 | | | | | +| sellerTaxnum | String | | 销方税号 | | +| extensionNum | String | | 分机号 | | +| machineNumber | String | | 机器编号 | | +| invoiceCode | String | | 发票代码 | | +| invoiceLine | String | | 发票种类 | | +| invoiceNumStart | String | | 发票号码起始值 | | +| invoiceNumEnd | String | | 发票代码终止值 | | +| num | Integer | | 发票可下载数量 | | +| singleBillingLimit | BigDecimal | | 单张开票限额 | | +| updatedTime | String | | 更新时间 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

{

+

"sellerTaxnum": "110101999999999618",

+

"extensionNum": 28,

+

"machineNumber": "661103844159",

+

"invoiceLine": "p",

+

"invoiceCode": "050002000208",

+

"num": 39899,

+

"singleBillingLimit": null,

+

"invoiceNumStart": "93666868",

+

"invoiceNumEnd": null,

+

"updatedTime": "2022-05-25 13:24:54"

+

}

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询成品油库存列表接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询成品油库存列表接口.md new file mode 100644 index 0000000..936d06c --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询成品油库存列表接口.md @@ -0,0 +1,121 @@ +--- +title: 查询成品油库存列表接口 +aliases: + - 查询成品油库存列表接口 + - 诺税通查询成品油库存列表接口 + - 专项能力-查询成品油库存列表接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 查询成品油库存列表接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/oilStock/getOilStockInfoList.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 查询成品油库存列表接口 + +### 接口说明 + +查询诺税通库中成品油库存列表接口,包括税盘可使用的和局端可下载的。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/oilStock/getOilStockInfoList.do | + +### 请求参数 + +| | | | | | +|:-------------:|:--------:|:--------:|:------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| extensionNum | Integer | 是 | 分机号,纯数字 | \- | +| machineNumber | String | 否 | 机器编号,12位数字 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum": 0,

+

"machineNumber": "661565671900",

+

"sellerTaxnum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | +| data内字段说明 | | | | | +| sellerTaxnum | String | 是 | 销方税号 | | +| extensionNum | String | 是 | 分机号 | | +| machineNumber | String | 是 | 机器编号 | | +| oilType | String | 是 | 成品油类型 | | +| taxCode | String | 是 | 税收分类编码 | | +| downloadedStockAmount | String | 是 | 开票设备中已下载可使用库存(升) | | +| downloadableStockAmount | String | 是 | 局端可下载库存(升) | | +| updateTime | String | 是 | 更新时间 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

    "code":200,

+

    "message":"成功",

+

    "data":[

+

        {

+

"sellerTaxnum": "150301199811285326",

+

"extensionNum": 0,

+

"machineNumber": "661565671900",

+

            "oilType":"汽油",

+

            "taxCode":"1070101010100000000",

+

            "downloadedStockAmount":"8366796.99",

+

            "downloadableStockAmount":"0.00",

+

            "updateTime":"2021-12-24 14:06:37"

+

        }

+

    ]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询授信额度数据.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询授信额度数据.md new file mode 100644 index 0000000..ae9343c --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询授信额度数据.md @@ -0,0 +1,136 @@ +--- +title: 查询授信额度数据 +aliases: + - 查询授信额度数据 + - 诺税通查询授信额度数据 + - 专项能力-查询授信额度数据 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 查询授信额度数据 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/creditQuota/queryLocalData.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 查询授信额度数据 + +### 接口说明 + +获取数电发票授信额度,该接口根据不同设备类型,返回不同结果。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/creditQuota/queryLocalData.do | + +### 请求参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **说明** | **描述** | **长度** | +| taxNum | String | 是 | 需要查询的企业税号 | 企业税号 | 20 | +| type | Integer | 否 | 分机号与请求类型二选一必填,均传入已分机号匹配到的设备为准 | 请求类型 0:乐企 1:数电普通 | \- | +| extensionNum | Integer | 否 | 分机号与请求类型二选一必填,均传入已分机号匹配到的设备为准 | 分机号 | 0-99999 | + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"type": 1

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | 是 | | 查询对象 | | +| 乐企模式返回字段 | | | | | | +| creditFlag | String | 是 | Y | 暂停授信标志 Y:暂停 N:未暂停 | 1 | +| creditQuotaAmount | BigDecimal | 是 | 10000.00 | 本月授信额度 | 12,2 | +| downloadAmount | BigDecimal | 是 | 10000.00 | 可用剩余额度 | 12,2 | +| downloadRemainAmount | BigDecimal | 是 | 10000.00 | 已下载额度 | 12,2 | +| remainAmount | BigDecimal | 是 | 10000.00 | 已下载未使用额度 | 12,2 | +| taxnum | String | 是 | 150301199811285326 | 企业税号 | 20 | +| vestPeriod | String | 否 | 202303 | 属期 格式:yyyyMM | | +| creditUpdateTime | Date | 是 | 2023-03-06 00:00:00 | 授信额度更新时间 | | +| 非乐企模式返回字段 | | | | | | +| creditQuotaAmount | BigDecimal | 是 | 10000.00 | 本月授信额度 | 12,2 | +| remainAmount | BigDecimal | 是 | 10000.00 | 可用剩余额度 | 12,2 | +| queryStatus | Integer | 是 | 1 | 查询状态 0:查询中 1:查询成功 2:查询失败 | 1 | +| creditUpdateTime | Date | 是 | 2023-03-06 00:00:00 | 授信额度更新时间 | | +| message | String | 否 | 分机信息不存在 | 查询失败原因 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": "200",

+

"message": "查询成功",

+

"data":{

+

"creditFlag": "Y",

+

"creditQuotaAmount": "10000.00" ,

+

"downloadAmount": "10000.00",

+

"downloadRemainAmount": "10000.00",

+

"remainAmount": "10000.00",

+

"taxnum": "150301199811285326",

+

"vestPeriod": "202303",

+

"creditUpdateTime": "2023-03-06 00:00:00"

+

}

+

}

+

非乐企:

+

{

+

"code": "200",

+

"message": "查询成功",

+

"data": {

+

"creditQuotaAmount": "10000.00",

+

"downloadAmount": "10000.00",

+

"queryStatus":1,

+

"creditUpdateTime": "2023-03-06 00:00:00",

+

"message": "分机信息不存在"

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询获取车架号是否可开票结果接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询获取车架号是否可开票结果接口.md new file mode 100644 index 0000000..bd3f582 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/查询获取车架号是否可开票结果接口.md @@ -0,0 +1,134 @@ +--- +title: 查询获取车架号是否可开票结果接口 +aliases: + - 查询获取车架号是否可开票结果接口 + - 诺税通查询获取车架号是否可开票结果接口 + - 车辆辅助与回传-查询获取车架号是否可开票结果接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 查询获取车架号是否可开票结果接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/query/queryVehicleCodeIsInvoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 查询获取车架号是否可开票结果接口 + +### 接口说明 + +获取车架号是否可开票结果接口。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/query/queryVehicleCodeIsInvoice.do | + +### 请求参数(用json格式接收) + +| | | | | | +|:---------------:|:----------:|:--------:|:----------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| vehicleCodeList | String\[\] | 是 | 车架号,支持最多2000个 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"vehicleCodeList": [

+

"111"

+

]

+

}

+ +### 返回参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | List | | 查询成功则返回车架号记录信息 | | +| **车架号记录信息** | | | | | +| sellerTaxnum | String | 是 | 销方税号 | 20 | +| companyCode | String | 是 | 企业编码 | 20 | +| vehicleCode | String | 是 | 车架号 | 23 | +| status | String | 是 | 车架号状态:1-可开票;2-查询中;3-未知;4-不可开票;5-已开票 | 2 | +| certificate | String | \- | 合格证号,查询到车架号所属该税号且未开票时后端返回有值 | 50 | +| machineNum | String | \- | 设备编号,查询到车架号所属该税号且未开票时后端返回有值 | 12 | +| importCertifyNum | String | \- | 进口证明书编号,查询到车架号所属该税号且未开票时后端返回有值 | 32 | +| message | String | 否 | 描述信息,举例:合格证已被使用; | 1024 | +| requestSrc | String | 是 | 请求来源(0:未知;1-页面添加;2-页面导入;3-api进项调用;4-api用户调用;5-开票) | 2 | +| brandModel | String | 否 | 厂牌型号 | 60 | +| engineNum | String | 否 | 发动机号码 | 50 | +| vehicleType | String | 否 | 车辆类型 | 40 | +| inspectionOddNum | String | 否 | 商检单号 | 32 | +| productOrigin | String | 否 | 产地 | 32 | +| displacement | String | 否 | 排量 | 50 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

{

+

"sellerTaxnum": "150301199811285326",

+

"companyCode": "1100",

+

"vehicleCode": "111",

+

"status": 2,

+

"certificate": "1",

+

"machineNum": "134874514782",

+

"importCertifyNum": "13242234",

+

"message": "未查询到合格证信息,不允许开具发票",

+

"requestSrc": "3",

+

"brandModel": "",

+

"engineNum": "",

+

"vehicleType": "",

+

"inspectionOddNum": "",

+

"productOrigin": ""

+

}

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/根据业务标识查询对应值列表接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/根据业务标识查询对应值列表接口.md new file mode 100644 index 0000000..f03c6c3 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/根据业务标识查询对应值列表接口.md @@ -0,0 +1,127 @@ +--- +title: 根据业务标识查询对应值列表接口 +aliases: + - 根据业务标识查询对应值列表接口 + - 诺税通根据业务标识查询对应值列表接口 + - 设备企业与配置-根据业务标识查询对应值列表接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 根据业务标识查询对应值列表接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/oa/getOaOptionList.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 根据业务标识查询对应值列表接口 + +### 接口说明 + +根据业务标识查询对应的值列表,给OA审批流使用 + +### 接口地址 + +| | +|:----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/oa/getOaOptionList.do | + +### 请求参数 + +| | | | | +|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | +| type | String | 是 | 业务类型:开票方式:requestSrc,发票种类:invoiceLine,组织名称:organize,部门名称:dept,开票员:clerk,作废来源:invalidSrc | +| name | String | 否 | 名称,根据名称模糊查询 | +| pageNum | int | 否 | 当前页,默认为1 | +| pageSize | int | 否 | 分页条数,默认为15 | + +### 请求示例 + + +++ + + + + + +

{

+

"pageNum": 1,

+

"pageSize": 15,

+

"type": "dept",

+

"name": "测试部门2"

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | Integer | 是 | 200 | | 状态,200-成功,非200-失败 | 6 | +| message | String | | 成功 | | 详细信息 | 1024 | +| data | Object | | | | 数据对象 | | +| **数据信息** | | | | | | | +| pageNum | int | 是 | 1 | | 当前页数 | | +| pageSize | int | 是 | 15 | | 每页条数 | | +| pages | int | 是 | 1 | | 总页数 | | +| total | int | 是 | 2 | | 数据总数 | | +| list | List | | | | 查询成功则返回具体信息 | | +| **具体信息** | | | | | | | +| key | String | | 201127 | | 唯一标识 | | +| name | String | | 测试部门2 | | 名称 | | +| companyId | long | | 10162 | | 企业id,业务类型为dept、clerk时返回 | | +| companyName | String | | 移动测试盘326 | | 企业名称,业务类型为dept、clerk时返回 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"total": "9",

+

"list": [

+

{

+

"key": "201127",

+

"name": "测试部门2-2",

+

"companyName": "移动测试盘326",

+

"companyId": "10162"

+

}

+

],

+

"pageNum": 1,

+

"pageSize": 2,

+

"pages": 5

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/登录扫码认证确认接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/登录扫码认证确认接口.md new file mode 100644 index 0000000..601ef96 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/登录扫码认证确认接口.md @@ -0,0 +1,255 @@ +--- +title: 登录扫码认证确认接口 +aliases: + - 登录扫码认证确认接口 + - 诺税通登录扫码认证确认接口 + - 设备企业与配置-登录扫码认证确认接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 登录扫码认证确认接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/auth/authAffirm.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 登录扫码认证确认接口 + +### 接口说明 + +用于3.53获取登录扫码认证二维码(对应qrCodeType=1、2、3、4)后的二次确认登录操作 + +注意:电子税务局认证操作的数电账号(分机号) 和 登录二次确认操作的数电账号(分机号)必须为同一个 + +### 接口地址 + +| | +|:-------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/auth/authAffirm.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
taxNumString税号20
extensionNumInteger分机号,分机号和数电账号任一必填-
accountString数电账号,分机号和数电账号任一必填20
opTypeInteger

操作类型:

+

0-扫码登录验证完成操作(默认)

+

1-查询扫码登录结果

+

2-短信登录提交登录(此时填写verifyCode)

+

3-查询短信登录结果

1
verifyCodeString

短信验证码(当数电发票开具进行短信验

+

证码登录时才需要传)

10
+ +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"extensionNum": 1,

+

"account": "123456",

+

"opType": 2,

+

"verifyCode": "1236"

+

}

+ +### 返回参数 + + ++++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填示例值描述长度
codeInteger200状态,200-成功,非200-失败6
messageString成功详细信息1024
dataObject结果
statusString10-登录执行中;1-成功;2-失败
messageString登录成功结果信息(登录成功/失败原因)
loginTypeInteger

登录方式:

+
    +
  1. 扫码登录

  2. +
  3. 短信验证码登录

  4. +
taxNumString339901999999199税号
extensionNumInteger100分机号
accountString138****1234用户名/手机号(脱敏处理)
+ +### 返回示例 + +成功示例: + + +++ + + + + + +

{
+"code":200,
+"message": "成功",

+

"data":

+

{

+

"account": "123456",

+

"taxNum": "1234567890",

+

"status": "1",

+

"message": "登录成功",

+

"loginType": 2,

+

"extensionNum": 123

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/票源下载接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/票源下载接口.md new file mode 100644 index 0000000..ac29db9 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/票源下载接口.md @@ -0,0 +1,117 @@ +--- +title: 票源下载接口 +aliases: + - 票源下载接口 + - 诺税通票源下载接口 + - 库存票源与打印-票源下载接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 票源下载接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/stock/downInvoiceSource.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 票源下载接口 + +### 接口说明 + +票源下载接口 + +### 接口地址 + +| | +|----| +| http\[s\]://\\[:\\]/salescore/lan/stock/downInvoiceSource.do | + +### 请求参数 + +| | | | | | | +|:------------:|:--------:|:--------:|:--------------------------:|:--------:|:--------:| +| **名称** | **类型** | **必填** | **更多限制** | **描述** | **长度** | +| sellerTaxnum | String | 是 | | 销方税号 | 20 | +| extensionNum | String | 否 | 至少分机号或机器号任一必填 | 分机号 | 5 | +| machineNum | String | 否 | 至少分机号或机器号任一必填 | 机器号 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum":"0",

+

"machineNum":"661565671900",

+

"sellerTaxnum":"150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | + +### 返回示例 + +成功示例 + + +++ + + + + + +

{

+

    "code": 200,

+

    "message": "成功",

+

    "data": null

+

}

+ +失败示例 + + +++ + + + + + +

{

+

    "code": 27761,

+

    "message": "请传入分机号或机器编号",

+

    "data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/空白发票作废申请.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/空白发票作废申请.md new file mode 100644 index 0000000..0776788 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/空白发票作废申请.md @@ -0,0 +1,111 @@ +--- +title: 空白发票作废申请 +aliases: + - 空白发票作废申请 + - 诺税通空白发票作废申请 + - 作废重开与冲红-空白发票作废申请 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 空白发票作废申请 + +> [!info] 导航 +> 上级索引:[[README]] · [[03_作废重开与冲红]] +> 文档链接:[总索引](../README.md) · [分组页](../03_作废重开与冲红.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[03_作废重开与冲红]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/blankInvoiceInvalid.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 空白发票作废申请 + +### 接口说明 + +空白发票作废申请接口 + +### 接口地址 + +| | +|:-----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/blankInvoiceInvalid.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号 | 20 | +| extensionNum | String | 是 | 分机号 | 5 | +| machineNum | String | 是 | 税控设备号(机器编码) | 12 | +| terminalNum | String | 否 | 终端号 | 10 | +| invoiceLine | String | 必填,发票种类对应枚举值,例:p:普通发票(电子) | 发票种类,c:增值税普通发票(纸票),s:增值税专用发票,f:收购发票(纸质),j:机动车发票,u:二手车发票 | 1 | +| invoiceCode | String | 是 | 发票代码 | 12 | +| invoiceNum | String | 是 | 发票号码 | 8 | +| invalidNum | String | 否 | 作废份数,目前仅支持作废1张,默认为1 | 1 | +| userId | Long | 否 | 诺税通用户ID | | +| departmentId | Long | 否 | 诺税通部门ID | | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"extensionNum":" 1",

+

"machineNum":" 661929539468",

+

"invoiceLine": "c"

+

"invoiceCode":" 033001800105",

+

"invoiceNum":" 33111355",

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | String | | 查询成功则返回申请流水号 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": "123456789"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表_红字确认单回传.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表_红字确认单回传.md new file mode 100644 index 0000000..e17a028 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表_红字确认单回传.md @@ -0,0 +1,644 @@ +--- +title: 红字信息表/红字确认单回传 +aliases: + - 红字信息表/红字确认单回传 + - 诺税通红字信息表/红字确认单回传 + - 红字信息表-红字信息表/红字确认单回传 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字信息表/红字确认单回传 + +> [!info] 导航 +> 上级索引:[[README]] · [[04_红字信息表]] +> 文档链接:[总索引](../README.md) · [分组页](../04_红字信息表.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[04_红字信息表]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`用户通过红字信息表/确认单申请请求中的bizCallbackUrl字段进行回调,若接口不传回传地址,则使用开票配置中配置的红字信息表/红字确认单回传地址。` +> - 请求方式:`POST` +> - 是否回调:是 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字信息表/红字确认单回传 + +### 接口说明 + +返回红字信息表/红字确认单信息。 + +注意:请按照文档要求提供接口。 + +### 接口地址 + +用户通过红字信息表/确认单申请请求中的bizCallbackUrl字段进行回调,若接口不传回传地址,则使用开票配置中配置的红字信息表/红字确认单回传地址。 + +数电票种回传红字确认单信息,非数电票种回传红字信息表。通过backType类型区分回传红字信息表或红字确认单。 + +信息表触发回传的状态:申请失败、审核通过、审核未通过、已撤销、撤销失败 + +确认单触发回传的状态:无需确认、购销双方已确认、作废(销方录入购方否认)、作废(购方录入销方否认)、作废(超72小时未确认)、作废(发起方撤销)、作废(确认方撤销) + +### 请求参数(用json格式接收) + +backType=1时,回传红字信息表结果。 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
backTypeInteger回传类型, 1: 红字信息表 2:红字确认单2
billNoString申请单号24
billTypeString

信息表类型(0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回

+

4、矿产品类专用信息表(涉及销售数量和金额变更)

+

5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动)

1
oriInvoiceCodeString对应蓝票代码12
oriInvoiceNumberString对应蓝票号码8
oriInvoiceTimeString

对应蓝票开票日期

+

yyyy-MM-dd HH:mm:ss

19
taxTypeString税种类别(0:营业税 1:增值税)1
taxRateString税率:单税率就保存税率,如0.13;多税率M1
buyerNameString购方名称100
buyerTaxnumString购方税号20
buyerAddressString购方地址100
buyerPhoneString购方电话50
buyerBankString购方银行100
buyerAccountString购方账号30
sellerNameString销方名称100
sellerTaxnumString销方税号20
taxFreeAmountTotaldecimal不含税金额15.2
taxTotaldecimal合计税额15.2
billTimeString

填开时间

+

yyyy-MM-dd HH:mm:ss

19
applyRemarkString申请说明(购方已抵扣:1100000000,购方未抵扣:1010000000,销售方申请:0000000100)10
businessTaxCodeString营业税标志10
billInfoNoString信息表编号24
billStatusString

信息表状态(-1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销

+

-2:删除成功)

2
billMessageString[信息表状态代码]信息表状态描述300
pdfUrlString申请表pdf url255
detailListList明细列表
specificFactorString

特定要素:0普通发票 01成品油 03建筑服务 04货物运输发票 05不动产销售发票 06不动产租赁发票 09旅客运输发票 14机动车 16农产品收购 33二手车反向开具

+

35 矿产品发票

50
+ +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **商品明细** detailList | | | | | +| **名称** | **类型** | **必填** | **描述** | **长度** | +| detailIndex | String | 是 | 单据明细序号 | 5 | +| goodsName | String | 是 | 商品名称 | 90 | +| goodsUnit | String | 否 | 单位 | 22 | +| specType | String | 否 | 规格型号 | 40 | +| withTaxFlag | int | 是 | 单价含税标志,0:不含税,1:含税 | 1 | +| goodsPrice | decimal | 否 | 含税单价 | decimal(32,16) | +| taxFreePrice | decimal | 否 | 不含税单价 | decimal(32,16) | +| goodsNum | decimal | 否 | 数量 | decimal(32,16) | +| taxFreeAmount | decimal | 否 | 不含税金额 | (15,2) | +| tax | decimal | 否 | 税额 | (15,2) | +| taxAmount | decimal | 否 | 含税金额 | (15,2) | +| taxrate | decimal | 是 | 税率 | 1 | +| goodsCode | String | 否 | 税收分类编码 | 19 | +| goodsCodeAbb | String | 否 是 | 税收分类编码简称 | 200 | +| selfCode | String | 否 | 自行编码 | 20 | +| favouredPolicyFlag | String | 是 | 优惠政策标识,0:不使用;1:使用 | 2 | +| favouredPolicyName | String | 否 | 优惠政策内容,如:即征即退、免税、不征税、简易征收等 | 50 | +| zeroRateFlag | String | 否 | 零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率 | 2 | +| deduction | decimal | 否 | 扣除额:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00 | (15,2) | + +backType=2,则回传红字确认单。 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
backTypeInteger回传类型, 1: 红字信息表 2:红字确认单2
billIdString申请单号32
billNoString确认单编号32
billUuidString确认单uuid32
billStatusString

确认单状态

+

-1 提交失败

+

00 提交中

+

01 无需确认

+

02 销方录入待购方确认

+

03 购方录入待销方确认

+

04 购销双方已确认

+

05 作废(销方录入购方否认)

+

06 作废(购方录入销方否认)

+

07 作废(超72小时未确认)

+

08 作废(发起方撤销)

+

09 作废(确认方撤销)

+

15 提交税局中

+

16 提交税局失败

4
billMessageString[确认单状态代码]确认单状态描述300
openStatusString

开具状态

+

0:未开具

+

1:已开具

2
applySourceString

申请来源

+

0 销方

+

1 购方

2
billTimeString

填开时间

+

yyyy-MM-dd HH:mm:ss

19
taxFreeAmountTotaldecimal不含税金额15.2
taxTotaldecimal合计税额15.2
taxAmountTotaldecimal含税金额15.2
blueInvoiceNumberString对应蓝票号码20
blueInvoiceNoString蓝字增值税发票号码(如果蓝票为增值税发票,则增值税代号码必填)8
blueInvoiceCodeString蓝字增值税发票代码(如果蓝票为增值税发票,则增值税代号码必填)12
blueInvoiceLineString

蓝票票种

+

bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质)

+

p:电子增值税普通发票,

+

c:增值税普通发票(纸票),

+

s:增值税专用发票,

+

b:增值税电子专用发票

5
sellerNameString销方名称100
sellerTaxnumString销方税号20
buyerNameString购方名称100
buyerTaxnumString购方税号20
vatUsageString蓝字发票增值税用途2
saleTaxUsageString蓝字发票消费税用途2
accountStatusString发票入账状态2
redReasonString

冲红原因

+

1开票有误

+

2销货退回

+

3服务中止

+

4销售折让

2
detailList确认单明细
+ +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **确认单明细** detail | | | | | +| **名称** | **类型** | **必填** | **描述** | **长度** | +| detailIndex | Integer | 是 | 单据明细序号 | 5 | +| blueDetailIndex | Integer | 是 | 对应数电蓝票明细行 | 5 | +| goodsName | String | 是 | 商品名称 | 90 | +| goodsUnit | String | 否 | 单位 | 22 | +| specType | String | 否 | 规格型号 | 40 | +| withTaxFlag | int | 是 | 单价含税标志,0:不含税,1:含税 | 1 | +| goodsPrice | decimal | 否 | 含税单价 | decimal(32,16) | +| taxFreePrice | decimal | 否 | 不含税单价 | decimal(32,16) | +| goodsNum | decimal | 否 | 数量 | decimal(32,16) | +| taxFreeAmount | decimal | 否 | 不含税金额 | (15,2) | +| tax | decimal | 否 | 税额 | (15,2) | +| taxAmount | decimal | 否 | 含税金额 | (15,2) | +| taxrate | String | 是 | 税率 | 10 | +| goodsCode | String | 否 | 税收分类编码 | 19 | +| goodsCodeAbb | String | 否 是 | 税收分类编码简称 | 200 | +| selfCode | String | 否 | 自行编码 | 20 | +| favouredPolicyFlag | String | 是 | 优惠政策标识 | 10 | +| favouredPolicyName | String | 否 | 优惠政策内容,如:即征即退、免税、不征税、简易征收等 | 50 | +| zeroRateFlag | String | 否 | 零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率 | 2 | +| deduction | decimal | 否 | 扣除额:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00 | (15,2) | + +### 请求示例 + +成功示例: + + +++ + + + + + +

{

+

"billNo": "12345678901234567890097q",

+

"billType": "0",

+

"oriInvoiceCode": "005000181530",

+

"oriInvoiceNumber": "45625450",

+

"oriInvoiceTime": null,

+

"taxType": "1",

+

"taxRate": "0",

+

"buyerName": "officia in irure",

+

"buyerTaxnum": "CILLUM",

+

"sellerName": "Excepteur dolor ",

+

"sellerTaxnum": "150301199811285326",

+

"taxFreeAmountTotal": "-1.00",

+

"taxTotal": "-1.00",

+

"billTime": "2020-05-26 03:14:15",

+

"applyRemark": "0000000100",

+

"businessTaxCode": "0000000000",

+

"billInfoNo": "",

+

"billStatus": 2,

+

"billMessage": "[B900006]申请单号不能为空或者格式不正确",

+

"pdfUrl": "",

+

"detailList": [

+

{

+

"detailIndex": 1,

+

"goodsName": "Ut min",

+

"withTaxFlag": null,

+

"goodsPrice": "0.0000000000000000",

+

"taxFreePrice": "0.0900000000000000",

+

"goodsNum": "-1.0000000000000000",

+

"taxrate": "0.09",

+

"specType": "nost",

+

"goodsUnit": "aliqu",

+

"goodsCode": "esseonsequ",

+

"goodsCodeAbb": "irure in",

+

"favouredPolicyFlag": 0,

+

"zeroRateFlag": "",

+

"favouredPolicyName": "",

+

"selfCode": "sed Lorem",

+

"deduction": "0.00",

+

"taxAmount": "-0.01",

+

"taxFreeAmount": "-0.09",

+

"tax": "-0.01"

+

}

+

]

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | String | 是 | 0000 | | 状态码,字符串”0000”表示成功,非”0000”的字符串表示失败 | 6 | +| message | String | 是 | 同步成功 | | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": "0000",

+

"message": "业务方接收同步成功"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": "9999",

+

"message": "同步失败的异常信息"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表下载接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表下载接口.md new file mode 100644 index 0000000..017423c --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表下载接口.md @@ -0,0 +1,187 @@ +--- +title: 红字信息表下载接口 +aliases: + - 红字信息表下载接口 + - 诺税通红字信息表下载接口 + - 红字信息表-红字信息表下载接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字信息表下载接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[04_红字信息表]] +> 文档链接:[总索引](../README.md) · [分组页](../04_红字信息表.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[04_红字信息表]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/red-apply-down` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字信息表下载接口 + +### 接口说明 + +销方可调用专用发票红字信息表下载接口下载购买方申请的红字信息表。仅触发下载指令,需配合红字信息表查询接口获取详细的信息表信息。 + +### 接口地址 + +| | +|:---------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/red-apply-down | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
invoiceLineString发票种类2
billInfoNoString信息表编号24
sellerTaxnumString销方税号20
buyerTaxnumString购方税号20
redApplyStartTimeString红字申请时间-查询起期(yyyyMMdd),时间跨度不能超过30天8
redApplyEndTimeString

红字申请时间-查询止期(yyyyMMdd)

+

时间跨度不能超过30天

8
userIdLong开票人id-
extensionNumInteger分机号-
machineNumberString机器编号12
+ +注意: + +1.查询开始时间、结束时间允许同时为空,或者同时不为空 + +2.如果时间同时为空,则信息表编号必填 + +### 请求示例 + + +++ + + + + + +

{

+

"billInfoNo": "",

+

"sellerTaxnum": "150301199811285326",

+

"buyerTaxnum": "339901999999513",

+

"invoiceLine": "s",

+

"redApplyStartTime": "20201201",

+

"redApplyEndTime": "20201229",

+

"userId": 1,

+

"extensionNum": 0,

+

"machineNumber": "661565671900"

+

}

+ +### 返回参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表撤销接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表撤销接口.md new file mode 100644 index 0000000..c520c2d --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表撤销接口.md @@ -0,0 +1,101 @@ +--- +title: 红字信息表撤销接口 +aliases: + - 红字信息表撤销接口 + - 诺税通红字信息表撤销接口 + - 红字信息表-红字信息表撤销接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字信息表撤销接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[04_红字信息表]] +> 文档链接:[总索引](../README.md) · [分组页](../04_红字信息表.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[04_红字信息表]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/red-apply-cancel` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字信息表撤销接口 + +### 接口说明 + +专用发票红字信息表撤销申请接口。 + +### 接口地址 + +| | +|:-----------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/red-apply-cancel | + +### 请求参数 + +| | | | | | +|:-------------:|:--------:|:--------:|:----------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| billInfoNo | String | 是 | 信息表编号 | 24 | +| userId | Long | 否 | 开票人id | \- | +| extensionNum | Integer | 否 | 分机号 | \- | +| machineNumber | String | 否 | 机器编号 | 12 | + +### 请求示例 + + +++ + + + + + +

{

+

"billInfoNo": "1403011905003535",

+

"userId": 1,

+

"extensionNum": 0,

+

"machineNumber": "661565671900"

+

}

+ +### 返回参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表查询接口.md new file mode 100644 index 0000000..dbf7022 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表查询接口.md @@ -0,0 +1,407 @@ +--- +title: 红字信息表查询接口 +aliases: + - 红字信息表查询接口 + - 诺税通红字信息表查询接口 + - 红字信息表-红字信息表查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字信息表查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[04_红字信息表]] +> 文档链接:[总索引](../README.md) · [分组页](../04_红字信息表.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[04_红字信息表]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/red-apply-query` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字信息表查询接口 + +### 接口说明 + +专用发票红字信息表查询接口。 + +### 接口地址 + +| | +|:----------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/red-apply-query | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| billNo | String | 否 | 信息表流水号(12位税盘编号+12位蓝票开票时间YYMMDDHHMMSS) | 24 | +| billInfoNo | String | 否 | 信息表编号 | 24 | +| buyerTaxnum | String | 否 | 购方税号 | 20 | +| redApplyStartTime | String | 否 | 红字申请时间-查询起期(yyyy-MM-dd HH:mm:ss) | 19 | +| redApplyEndTime | String | 否 | 红字申请时间-查询止期(yyyy-MM-dd HH:mm:ss) | 19 | +| sellerTaxnum | String | 是 | 销方税号 | 20 | + +注意: + +1.billInfoNo或billNo为空时,redApplyStartTime必填。 + +2.billInfoNo或billNo为空时,redApplyEndTime不填时默认当前日期,并且时间范围不能超过60天。 + +### 请求示例 + + +++ + + + + + +

{

+

"billInfoNo": "",

+

"billNo": "",

+

"buyerTaxnum": "339901999999513",

+

"redApplyEndTime": "2020-12-29 23:00:00",

+

"redApplyStartTime": "2020-11-01 00:00:00",

+

"sellerTaxnum": "150301199811285326"

+

}

+ +### 返回参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
codeInteger状态,200-成功,非200-失败6
messageString详细信息1024
dataList查询成功则返回红字申请信息
发票信息
billNoString信息表流水号(12位税盘编号+12位蓝票开票时间YYMMDDHHMMSS)24
billTypeString

信息表类型(0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回

+

4、矿产品类专用信息表(涉及销售数量和金额变更)

+

5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动)

1
oriInvoiceCodeString对应蓝票代码12
oriInvoiceNumberString对应蓝票号码8
oriInvoiceTimeString

对应蓝票开票日期

+

yyyy-MM-dd HH:mm:ss

19
taxTypeString税种类别(0:营业税 1:增值税)1
taxRateString多税率标志(0:一票一税率 1:一票多税率)1
buyerNameString购方名称100
buyerTaxnumString购方税号20
buyerAddressString购方地址100
buyerPhoneString购方电话50
buyerBankString购方银行100
buyerAccountString购方账号30
sellerNameString销方名称100
sellerTaxnumString销方税号20
taxFreeAmountTotaldecimal不含税金额15.2
taxTotaldecimal合计税额15.2
billTimeString

填开时间

+

yyyy-MM-dd HH:mm:ss

19
applyRemarkString申请说明(购方已抵扣:1100000000,购方未抵扣:1010000000,销售方申请:0000000100)10
businessTaxCodeString营业税标志10
billInfoNoString信息表编号24
billStatusString信息表状态(-1:未提交 0:申请中 1:审核成功 2:审核失败 3:申请成功 4:申请失败 5:已开具 6:撤销中 7:撤销失败 8:已撤销)2
billMessageString[信息表状态代码]信息表状态描述300
pdfUrlString申请表pdf url255
specificFactorString

特定要素特定要素:0普通发票(默认)01成品油 14机动车 31建安发票 32房地产销售发票 34电子烟发票、35矿产品发票

+

注:开具矿产品发票时必传,此时billType只能为4或5

50
+ +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **商品明细** detailList | | | | | +| **名称** | **类型** | **必填** | **描述** | **长度** | +| detailIndex | String | 是 | 单据明细序号 | 5 | +| goodsName | String | 是 | 商品名称 | 90 | +| goodsUnit | String | 否 | 单位 | 22 | +| specType | String | 否 | 规格型号 | 40 | +| withTaxFlag | int | 是 | 单价含税标志,0:不含税,1:含税 | 1 | +| goodsPrice | decimal | 否 | 含税单价 | decimal(32,16) | +| taxFreePrice | decimal | 否 | 不含税单价 | decimal(32,16) | +| goodsNum | decimal | 否 | 数量 | decimal(32,16) | +| taxFreeAmount | decimal | 否 | 不含税金额 | (15,2) | +| tax | decimal | 否 | 税额 | (15,2) | +| taxAmount | decimal | 否 | 含税金额 | (15,2) | +| taxrate | decimal | 是 | 税率 | 1 | +| goodsCode | String | 否 | 税收分类编码 | 19 | +| goodsCodeAbb | String | 否 是 | 税收分类编码简称 | 200 | +| selfCode | String | 否 | 自行编码 | 20 | +| favouredPolicyFlag | String | 是 | 优惠政策标识,0:不使用;1:使用 | 2 | +| favouredPolicyName | String | 否 | 优惠政策内容,如:即征即退、免税、不征税、简易征收等 | 50 | +| zeroRateFlag | String | 否 | 零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率 | 2 | +| deduction | decimal | 否 | 扣除额:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00 | (15,2) | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

{

+

"billNo": "12345678901234567890097q",

+

"billType": "0",

+

"oriInvoiceCode": "005000181530",

+

"oriInvoiceNumber": "45625450",

+

"oriInvoiceTime": null,

+

"taxType": "1",

+

"taxRate": "0",

+

"buyerName": "officia in irure",

+

"buyerTaxnum": "CILLUM",

+

"sellerName": "Excepteur dolor ",

+

"sellerTaxnum": "150301199811285326",

+

"taxFreeAmountTotal": "-1.00",

+

"taxTotal": "-1.00",

+

"billTime": "2020-05-26 03:14:15",

+

"applyRemark": "0000000100",

+

"businessTaxCode": "0000000000",

+

"billInfoNo": "",

+

"billStatus": 2,

+

"billMessage": "[B900006]申请单号不能为空或者格式不正确",

+

"pdfUrl": "",

+

"detailList": [

+

{

+

"id": "178",

+

"billNo": "12345678901234567890097q",

+

"detailIndex": 1,

+

"goodsName": "Ut min",

+

"withTaxFlag": null,

+

"goodsPrice": "0.0000000000000000",

+

"taxFreePrice": "0.0900000000000000",

+

"goodsNum": "-1.0000000000000000",

+

"taxrate": "0.09",

+

"specType": "nost",

+

"goodsUnit": "aliqu",

+

"goodsCode": "esseonsequ",

+

"goodsCodeAbb": "irure in",

+

"favouredPolicyFlag": 0,

+

"zeroRateFlag": "",

+

"favouredPolicyName": "",

+

"selfCode": "sed Lorem",

+

"deduction": "0.00",

+

"taxAmount": "-0.01",

+

"taxFreeAmount": "-0.09",

+

"tax": "-0.01",

+

"createTime": "2020-06-04 11:13:00",

+

"updateTime": "2020-06-04 11:13:00"

+

}

+

]

+

}

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_不支持拆分_不推荐使用.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_不支持拆分_不推荐使用.md new file mode 100644 index 0000000..0b6c08d --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_不支持拆分_不推荐使用.md @@ -0,0 +1,418 @@ +--- +title: 红字信息表申请接口(不支持拆分,不推荐使用) +aliases: + - 红字信息表申请接口(不支持拆分,不推荐使用) + - 诺税通红字信息表申请接口(不支持拆分,不推荐使用) + - 红字信息表-红字信息表申请接口(不支持拆分,不推荐使用) +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字信息表申请接口(不支持拆分,不推荐使用) + +> [!info] 导航 +> 上级索引:[[README]] · [[04_红字信息表]] +> 文档链接:[总索引](../README.md) · [分组页](../04_红字信息表.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[04_红字信息表]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/red-apply-submit` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字信息表申请接口(不支持拆分,不推荐使用) + +### 接口说明 + +针对专用发票进行红字信息表申请接口,不支持机动车专票按退货方式(信息表类型为2时)申请红字信息表时,自动拆分成8行一个信息表。 + +### 接口地址 + +| | +|:-----------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/red-apply-submit | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
invoiceLineString发票种类2
billNoString24位申请单号(12位开票设备编号+12位流水)24
billTypeString

信息表类型(0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回),4、矿产品类专用信息表(涉及销售数量和金额变更)

+

5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动)

+

默认为:0正常

+

注:信息表类型为2:退货时,信息表展示蓝票所有明细行,每次提交信息表开具时,不允许超过8行,且不转换成固定一行明细(详见正数发票及清单)

+

若根据蓝票代码号码匹配不到对应的蓝票机动车标识,billType需必填。

2
oriInvoiceCodeString对应蓝票代码12
oriInvoiceNumberString对应蓝票号码8
oriInvoiceTimeString

蓝票填开时间(yyyy-MM-dd HH:mm:ss)

+

除了购方已抵扣,若没有对应的蓝票信息,oriInvoiceTime需必填

19
blueInvoiceTimeString

蓝票填开时间(YYYYMM)

+

除了购方已抵扣,若没有对应的蓝票信息,blueInvoiceTime需必填,新局端要求上传对应蓝字发票开具时间(年月)

19
sellerNameString销方名称100
sellerTaxnumString销方税号20
buyerNameString购方名称100
buyerTaxnumString购方税号20
buyerAddressString购方地址100
buyerPhoneString购方电话50
buyerBankString购方银行100
buyerAccountString购方账号30
operatorString经办人20
applyRemarkString

申请说明

+

(购方已抵扣:1100000000 购方未KJ抵扣:1010000000 销售方申请:0000000100)

10
productOilFlagString

成品油标识 0,非成品油;1,成品油

+

若没有对应的蓝票信息,productOilFlag必填

1
extensionNumberString分机号11
terminalNumberString终端号11
machineNumberString机器号12
deptIdString部门门店id(本地系统中的id)20
userIdString开票人id(本地系统中的id)20
bizCallbackUrlString业务系统回调地址255
detailListList商品明细
specificFactorString

特定要素:0普通发票(默认)01成品油 14机动车 31建安发票 32房地产销售发票 34电子烟发票、35矿产品发票

+

注:开具矿产品发票时必传,此时billType只能为4或5,成品油发票特定要素和成品油标识选一即可,均传以特定要素为准。

50
notifyPhoneString交付手机号码20
notifyEmailString交付邮箱地址50
ccPhoneString抄送手机号,当推送手机notifyPhone有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个100
ccEmailString抄送邮箱,当推送邮箱notifyEmail有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个250
+ +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **商品明细** detailList | | | | | +| **名称** | **类型** | **必填** | **描述** | **长度** | +| detailIndex | String | 是 | 单据明细序号 | 5 | +| commodityCode | String | 否 | 商品编码 | 64 | +| goodsName | String | 是 | 商品名称 | 90 | +| goodsUnit | String | 否 | 单位 | 22 | +| specType | String | 否 | 规格型号 | 40 | +| withTaxFlag | int | 是 | 单价含税标志,0:不含税,1:含税 | 1 | +| goodsPrice | decimal | 否 | 含税单价 | decimal(32,16) | +| taxFreePrice | decimal | 否 | 不含税单价 | decimal(32,16) | +| goodsNum | decimal | 否 | 数量 | decimal(32,16) | +| taxFreeAmount | decimal | 否 | 不含税金额 | (15,2) | +| tax | decimal | 否 | 税额 | (15,2) | +| taxAmount | decimal | 否 | 含税金额 | (15,2) | +| taxrate | decimal | 是 | 税率 | (15,2) | +| goodsCode | String | 否 | 税收分类编码 | 19 | +| goodsCodeAbb | String | 否 是 | 税收分类编码简称 | 200 | +| selfCode | String | 否 | 自行编码 | 20 | +| favouredPolicyFlag | String | 是 | 优惠政策标识,0:不使用;1:使用 | 2 | +| favouredPolicyName | String | 否 | 优惠政策内容,如:即征即退、免税、不征税、简易征收等 | 50 | +| zeroRateFlag | String | 否 | 零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率 | 2 | +| deduction | decimal | 否 | 扣除额:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00 | (15,2) | + +### 请求示例 + + +++ + + + + + +

{

+

"invoiceLine": "s",

+

"billNo": "",

+

"billType": "0",

+

"oriInvoiceCode": "5000201530",

+

"oriInvoiceNumber": "67523624",

+

"oriInvoiceTime": "2020-11-12 00:00:00",

+

"sellerName": "移动测试盘326",

+

"sellerTaxnum": "150301199811285326",

+

"buyerName": "326专26",

+

"buyerTaxnum": "339901999999513",

+

"operator": "超级管理员",

+

"applyRemark": "0000000100",

+

"productOilFlag": 0,

+

"extensionNumber": "",

+

"terminalNumber": "",

+

"departmentId": "",

+

"userId": "",

+

"detailList": [

+

{

+

"deduction": 0.0,

+

"detailIndex": 1,

+

"favouredPolicyFlag": 1,

+

"favouredPolicyName": "即征即退",

+

"goodsCode": "商品编码",

+

"goodsCodeAbb": "商品编码简称",

+

"goodsName": "商品名称",

+

"goodsNum": -1,

+

"goodsPrice": 1,

+

"goodsUnit": "元",

+

"selfCode": "企业自行编码",

+

"specType": "规格型号",

+

"tax": -0.03,

+

"taxAmount": -1.03,

+

"taxFreeAmount": -1,

+

"taxFreePrice": 1,

+

"taxrate": "0.03",

+

"withTaxFlag": 0,

+

"zeroRateFlag": "1"

+

}

+

]

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 查询成功 | 详细信息 | 1024 | +| data | String | 否 | "661545615505210618135603" | 提交成功则返回billNo申请编号 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message":"成功",

+

"data": "661545615505210618135603"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code":"400",

+

"message":"参数校验失败"

+

}

+ +### 状态码说明 + +| | | +|:-----------|:-------------| +| **状态码** | **描述** | +| 200 | 查询成功 | +| 400 | 参数校验失败 | diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_支持拆分.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_支持拆分.md new file mode 100644 index 0000000..4fe0ff4 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字信息表申请接口_支持拆分.md @@ -0,0 +1,410 @@ +--- +title: 红字信息表申请接口(支持拆分) +aliases: + - 红字信息表申请接口(支持拆分) + - 诺税通红字信息表申请接口(支持拆分) + - 红字信息表-红字信息表申请接口(支持拆分) +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字信息表申请接口(支持拆分) + +> [!info] 导航 +> 上级索引:[[README]] · [[04_红字信息表]] +> 文档链接:[总索引](../README.md) · [分组页](../04_红字信息表.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[04_红字信息表]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/red-apply-submit-split` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字信息表申请接口(支持拆分) + +### 接口说明 + +专用发票红字信息表申请接口,支持机动车专票按退货方式(信息表类型为2时)申请红字信息表时自动拆分成8行一个信息表。 + +### 接口地址 + +| | +|:-----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/red-apply-submit-split | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
invoiceLineString发票种类2
billNoString24位申请单号(12位开票设备编号+12位蓝票开票时间YYMMDDHHMMSS)24
billTypeString

信息表类型(0:正常 1:逾期(仅销方开具),2:机动车专票-退货和开具错误,3:机动车专票-销售折让和合格证不退回),4、矿产品类专用信息表(涉及销售数量和金额变更)

+

5、矿产品类专用信息表(仅涉及销售金额变更,不涉及数量变动)

+

默认为:0正常

+

注:信息表类型为2:退货时,信息表展示蓝票所有明细行,每次提交信息表开具时,不允许超过8行,且不转换成固定一行明细(详见正数发票及清单)

+

若根据蓝票代码号码匹配不到对应的蓝票机动车标识,billType需必填。

2
oriInvoiceCodeString对应蓝票代码12
oriInvoiceNumberString对应蓝票号码8
blueInvoiceTimeString

蓝票填开时间(YYYYMM)

+

除了购方已抵扣,若没有对应的蓝票信息,blueInvoiceTime需必填,新局端要求上传对应蓝字发票开具时间(年月)

19
sellerNameString销方名称100
sellerTaxnumString销方税号20
buyerNameString购方名称100
buyerTaxnumString购方税号20
buyerAddressString购方地址100
buyerPhoneString购方电话50
buyerBankString购方银行100
buyerAccountString购方账号30
operatorString经办人20
applyRemarkString

申请说明

+

(购方已抵扣:1100000000 ,购方未抵扣:1010000000, 销售方申请:0000000100)

10
productOilFlagString

成品油标识 0,非成品油;1,成品油

+

若没有对应的蓝票信息,productOilFlag必填

1
extensionNumberString分机号11
terminalNumberString终端号11
machineNumberString机器编号12
deptIdString部门门店id(本地系统中的id)20
userIdString开票人id(本地系统中的id)20
bizCallbackUrlString业务系统回调地址255
detailListList商品明细
specificFactorString

特定要素:0普通发票(默认)01成品油 14机动车 31建安发票 32房地产销售发票 34电子烟发票、35矿产品发票

+

注:开具矿产品发票时必传,此时billType只能为4或5,成品油发票特定要素和成品油标识选一即可,均传以特定要素为准。

50
notifyPhoneString交付手机号码20
notifyEmailString交付邮箱地址50
ccPhoneString抄送手机号,当推送手机notifyPhone有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个100
ccEmailString抄送邮箱,当推送邮箱notifyEmail有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个250
+ +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **商品明细** detailList | | | | | +| **名称** | **类型** | **必填** | **描述** | **长度** | +| detailIndex | String | 是 | 单据明细序号 | 5 | +| commodityCode | String | 否 | 商品编码 | 64 | +| goodsName | String | 是 | 商品名称 | 90 | +| goodsUnit | String | 否 | 单位 | 22 | +| specType | String | 否 | 规格型号 | 40 | +| withTaxFlag | int | 是 | 单价含税标志,0:不含税,1:含税 | 1 | +| goodsPrice | decimal | 否 | 含税单价 | decimal(32,16) | +| taxFreePrice | decimal | 否 | 不含税单价 | decimal(32,16) | +| goodsNum | decimal | 否 | 数量 | decimal(32,16) | +| taxFreeAmount | decimal | 否 | 不含税金额 | (15,2) | +| tax | decimal | 否 | 税额 | (15,2) | +| taxAmount | decimal | 否 | 含税金额 | (15,2) | +| taxrate | decimal | 是 | 税率 | (15,2) | +| goodsCode | String | 否 | 税收分类编码 | 19 | +| goodsCodeAbb | String | 否 是 | 税收分类编码简称 | 200 | +| selfCode | String | 否 | 自行编码 | 20 | +| favouredPolicyFlag | String | 是 | 优惠政策标识,0:不使用;1:使用 | 2 | +| favouredPolicyName | String | 否 | 优惠政策内容,如:即征即退、免税、不征税、简易征收等 | 50 | +| zeroRateFlag | String | 否 | 零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率 | 2 | +| deduction | decimal | 否 | 扣除额:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00 | (15,2) | + +### 请求示例 + + +++ + + + + + +

{

+

"invoiceLine": "s",

+

"billNo": "",

+

"billType": "0",

+

"oriInvoiceCode": "5000201530",

+

"oriInvoiceNumber": "67523624",

+

"oriInvoiceTime": "2020-11-12 00:00:00",

+

"sellerName": "移动测试盘326",

+

"sellerTaxnum": "150301199811285326",

+

"buyerName": "326专26",

+

"buyerTaxnum": "339901999999513",

+

"operator": "超级管理员",

+

"applyRemark": "0000000100",

+

"productOilFlag": 0,

+

"extensionNumber": "",

+

"terminalNumber": "",

+

"departmentId": "",

+

"userId": "",

+

"detailList": [

+

{

+

"deduction": 0.0,

+

"detailIndex": 1,

+

"favouredPolicyFlag": 1,

+

"favouredPolicyName": "即征即退",

+

"goodsCode": "商品编码",

+

"goodsCodeAbb": "商品编码简称",

+

"goodsName": "商品名称",

+

"goodsNum": -1,

+

"goodsPrice": 1.03,

+

"goodsUnit": "元",

+

"selfCode": "企业自行编码",

+

"specType": "规格型号",

+

"tax": -0.03,

+

"taxAmount": -1.03,

+

"taxFreeAmount": -1,

+

"taxFreePrice": 1,

+

"taxrate": "0.03",

+

"withTaxFlag": 0,

+

"zeroRateFlag": "1"

+

}

+

]

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 查询成功 | 详细信息 | 1024 | +| data | String | 否 | "661545615505210618135603,661545615505210618135604" | 提交成功则返回billNo申请编号,多个以英文逗号分隔 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message":"成功",

+

"data": "661545615505210618135603,661545615505210618135604"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code":"400",

+

"message":"参数校验失败"

+

}

+ +### 状态码说明 + +| | | +|:-----------|:-------------| +| **状态码** | **描述** | +| 200 | 查询成功 | +| 400 | 参数校验失败 | diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单下载接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单下载接口.md new file mode 100644 index 0000000..dc5d097 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单下载接口.md @@ -0,0 +1,186 @@ +--- +title: 红字确认单下载接口 +aliases: + - 红字确认单下载接口 + - 诺税通红字确认单下载接口 + - 红字确认单-红字确认单下载接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字确认单下载接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[05_红字确认单]] +> 文档链接:[总索引](../README.md) · [分组页](../05_红字确认单.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[05_红字确认单]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/redConfirm/download.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字确认单下载接口 + +### 接口说明 + +数电发票红字确认单下载接口。 + +### 接口地址 + +| | +|:-----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/redConfirm/download.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
taxNumString税号20
identityInteger

购销身份:

+

0:我是销售方

+

1:我是购买方

2
billUuidString红字确认单uuid32
billStatusString

购销身份为1:我是购买方时,必填

+

确认单状态,0.待确认 1.已确认 2.已过期 3.销方否认 4.已撤销

4
startTimeString填开起始时间(确认单billuuid有值时,可为空,允许最大查询范围为90天 yyyy-MM-dd)-
endTimeString填开结束时间(确认单编号有值时,可为空,允许最大查询范围为90天 yyyy-MM-dd)-
extensionNumInteger分机号-
departmentIdLong部门门店id(诺税通中的部门id)20
userIdLong开票人id(诺税通中的用户id)20
+ +注意: + +1、有红字确认单uuid时,走精确查询;(查询的税号需要符合红字确认单中的销方或购方) + +2、无红字确认单uuid时,必须传购销身份及确认单填开的起始结束时间 + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"identity": 0,

+

"billUuid": "1fdsafda350301132998",

+

"startTime": "2020-11-12",

+

"endTime": "2020-11-14",

+

"extensionNum": 1

+

}

+ +### 返回参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单撤销接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单撤销接口.md new file mode 100644 index 0000000..ec91185 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单撤销接口.md @@ -0,0 +1,185 @@ +--- +title: 红字确认单撤销接口 +aliases: + - 红字确认单撤销接口 + - 诺税通红字确认单撤销接口 + - 红字确认单-红字确认单撤销接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字确认单撤销接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[05_红字确认单]] +> 文档链接:[总索引](../README.md) · [分组页](../05_红字确认单.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[05_红字确认单]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/redConfirm/cancel.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字确认单撤销接口 + +### 接口说明 + +数电发票红字确认单撤销接口。 + +### 接口地址 + +| | +|:---------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/redConfirm/cancel.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
taxNumString税号(和组织编码任一必填)20
companyCodeString组织编码-
identityInteger

撤销方身份:

+

0:销方

+

1:购方

2
billUuidString红字确认单uuid32
billIdString红字确认单申请单号32
billNoString红字确认单编号32
extensionNumInteger分机号-
departmentIdLong部门门店id(诺税通中的部门id)20
userIdLong开票人id(诺税通中的用户id)20
+ +注: + +3. 有红字确认单申请号、红字确认单编号、红字确认单uuid任一必传 + +4. 税号和企业编码任一必填,可通过企业编码转换为税号 + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"companyCode": "1234324231",

+

"identity": 0,

+

"billUuid": "1fdsafda350301132998",

+

"extensionNum": 1,

+

"userId": 1

+

}

+ +### 返回参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单查询接口.md new file mode 100644 index 0000000..d82a828 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单查询接口.md @@ -0,0 +1,501 @@ +--- +title: 红字确认单查询接口 +aliases: + - 红字确认单查询接口 + - 诺税通红字确认单查询接口 + - 红字确认单-红字确认单查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字确认单查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[05_红字确认单]] +> 文档链接:[总索引](../README.md) · [分组页](../05_红字确认单.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[05_红字确认单]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/redConfirm/query.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字确认单查询接口 + +### 接口说明 + +数电发票红字确认单查询接口。 + +### 接口地址 + +| | +|:--------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/redConfirm/query.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
taxNumString税号20
applySourceInteger

申请方身份:

+

0 销方

+

1 购方

2
billStatusString

红字确认单状态:

+

01 无需确认

+

02 销方录入待购方确认

+

03 购方录入待销方确认

+

04 购销双方已确认

+

05 作废(销方录入购方否认)

+

06 作废(购方录入销方否认)

+

07 作废(超72小时未确认)

+

08 作废(发起方撤销)

+

09 作废(确认方撤销)

4
billIdString红字确认单申请单号32
billNoString红字确认单编号32
billUuidString红字确认单uuid32
startTimeString填开起始时间(确认单申请号/编号/uuid有值时,可为空,允许最大查询范围为90天 yyyy-MM-dd)-
endTimeString填开结束时间(确认单申请号/编号/uuid有值时,可为空,允许最大查询范围为90天 yyyy-MM-dd)-
+ +注: + +1、有红字确认单申请号、红字确认单编号、红字确认单uuid时(一个或多个时),走精确查询;(查询的税号需要符合红字确认单中的销方或购方) + +2、无红字确认单申请号、红字确认单编号、红字确认单uuid时,必须传申请方身份及确认单填开的起始结束时间 + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"applySource": 1,

+

"billStatus": "01",

+

"billId": "342234232432432423",

+

"billNo": "32432f342df324sewerwe",

+

"billUuid": "3423423dgv324234dfg43r34g43",

+

"startTime": "2022-06-22",

+

"endTime": "2022-06-23"

+

}

+ +### 返回参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
codeInteger状态,200-成功,非200-失败6
messageString详细信息1024
dataList查询成功则返回红字确认单信息
发票信息
billIdString申请单号32
billNoString确认单编号32
billUuidString确认单uuid32
billStatusString

确认单状态

+

-1 提交失败

+

00 提交中

+

01 无需确认

+

02 销方录入待购方确认

+

03 购方录入待销方确认

+

04 购销双方已确认

+

05 作废(销方录入购方否认)

+

06 作废(购方录入销方否认)

+

07 作废(超72小时未确认)

+

08 作废(发起方撤销)

+

09 作废(确认方撤销)

+

15 提交税局中

+

16 提交税局失败

4
billMessageString[确认单状态代码]确认单状态描述300
openStatusString

开具状态

+

0:未开具

+

1:已开具

2
applySourceString

申请来源

+

0 销方

+

1 购方

2
billTimeString

填开时间

+

yyyy-MM-dd HH:mm:ss

19
taxFreeAmountTotaldecimal不含税金额15.2
taxTotaldecimal合计税额15.2
taxAmountTotaldecimal含税金额15.2
blueInvoiceNumberString对应蓝票数电号码20
blueInvoiceNoString蓝字增值税发票号码(如果蓝票为增值税发票,则增值税代号码必填)8
blueInvoiceCodeString蓝字增值税发票代码(如果蓝票为增值税发票,则增值税代号码必填)12
blueInvoiceLineString

蓝票票种

+

bs:数电专票(电子),pc:数电普票(电子),es:数电专票(纸质);ec:数电普票(纸质)

+

p:电子增值税普通发票,

+

c:增值税普通发票(纸票),

+

s:增值税专用发票,

+

b:增值税电子专用发票

5
sellerNameString销方名称100
sellerTaxnumString销方税号20
buyerNameString购方名称100
buyerTaxnumString购方税号20
vatUsageString蓝字发票增值税用途2
saleTaxUsageString蓝字发票消费税用途2
accountStatusString发票入账状态2
redReasonString

冲红原因

+

1开票有误

+

2销货退回

+

3服务中止

+

4销售折让

2
detailList确认单明细
+ +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **确认单明细** detail | | | | | +| **名称** | **类型** | **必填** | **描述** | **长度** | +| detailIndex | Integer | 是 | 单据明细序号 | 5 | +| blueDetailIndex | Integer | 是 | 对应数电蓝票明细行 | 6 | +| goodsName | String | 是 | 商品名称 | 90 | +| goodsUnit | String | 否 | 单位 | 22 | +| specType | String | 否 | 规格型号 | 40 | +| withTaxFlag | int | 是 | 单价含税标志,0:不含税,1:含税 | 1 | +| goodsPrice | decimal | 否 | 含税单价 | decimal(32,16) | +| taxFreePrice | decimal | 否 | 不含税单价 | decimal(32,16) | +| goodsNum | decimal | 否 | 数量 | decimal(32,16) | +| taxFreeAmount | decimal | 否 | 不含税金额 | (15,2) | +| tax | decimal | 否 | 税额 | (15,2) | +| taxAmount | decimal | 否 | 含税金额 | (15,2) | +| taxrate | String | 是 | 税率 | 10 | +| goodsCode | String | 否 | 税收分类编码 | 19 | +| goodsCodeAbb | String | 否 是 | 税收分类编码简称 | 200 | +| selfCode | String | 否 | 自行编码 | 20 | +| favouredPolicyFlag | String | 是 | 优惠政策标识 | 10 | +| favouredPolicyName | String | 否 | 优惠政策内容,如:即征即退、免税、不征税、简易征收等 | 50 | +| zeroRateFlag | String | 否 | 零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率 | 2 | +| deduction | decimal | 否 | 扣除额:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00 | (15,2) | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [

+

{

+

"billId": "12345678901234567890097q",

+

"billNo": "12345678901234567890097q",

+

"billUuid": "sdfcvs3g3554y5y4y54y55445t54",

+

"billStatus": "01",

+

"billMessage": "[B900006]申请单号不能为空或者格式不正确",

+

"openStatus": 1,

+

"applySource": 1,

+

"billTime": "2020-05-26 03:14:15",

+

"taxFreeAmountTotal": "-1.00",

+

"taxTotal": "-1.00",

+

"taxAmountTotal": "-1.00",

+

"blueInvoiceNumber": "45625450",

+

"blueInvoiceTime": null,

+

"blueInvoiceLine": "bs",

+

"sellerName": "Excepteur dolor ",

+

"sellerTaxnum": "150301199811285326",

+

"buyerName": "officia in irure",

+

"buyerTaxnum": "150301199811285326",

+

"vatUsage": "2",

+

"saleTaxUsage": "1",

+

"accountStatus": "1",

+

"redReason": "1",

+

"detailList": [

+

{

+

"billId": "12345678901234567890097q",

+

"detailIndex": 1,

+

"blueDetailIndex": 2,

+

"goodsName": "Ut min",

+

"withTaxFlag": 0,

+

"goodsPrice": "0.0000000000000000",

+

"taxFreePrice": "0.0900000000000000",

+

"goodsNum": "-1.0000000000000000",

+

"taxrate": "0.09",

+

"specType": "nost",

+

"goodsUnit": "aliqu",

+

"goodsCode": "esseonsequ",

+

"goodsCodeAbb": "irure in",

+

"favouredPolicyFlag": 0,

+

"zeroRateFlag": "",

+

"favouredPolicyName": "",

+

"selfCode": "sed Lorem",

+

"deduction": "0.00",

+

"taxAmount": "-0.01",

+

"taxFreeAmount": "-0.09",

+

"tax": "-0.01"

+

}

+

]

+

}

+

]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单申请接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单申请接口.md new file mode 100644 index 0000000..34ca3f8 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单申请接口.md @@ -0,0 +1,526 @@ +--- +title: 红字确认单申请接口 +aliases: + - 红字确认单申请接口 + - 诺税通红字确认单申请接口 + - 红字确认单-红字确认单申请接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字确认单申请接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[05_红字确认单]] +> 文档链接:[总索引](../README.md) · [分组页](../05_红字确认单.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[05_红字确认单]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/redConfirm/apply.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字确认单申请接口 + +### 接口说明 + +数电发票红字确认单申请接口。 + +注:对数电蓝票进行部分冲红确认单申请时,明细中蓝票序号对应冲红蓝票的明细序号,在开具蓝票时,需保证蓝票的序号为从1开始的连续数字。 + +开具蓝票为增值税发票(只支持专票、普票)的红字确认单,暂只支持乐企开票模式。 + +### 接口地址 + +| | +|:--------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/redConfirm/apply.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
billIdString红字确认单申请单号(需要保持唯一,不传的话系统自动生成一个)32
applySourceInteger

申请方身份:

+

0 销方

+

1 购方

2
taxNumString税号(税号、组织编码其一必填)20
companyCodeString组织编码(税号、组织编码其一必填)20
billTimeString

填开时间

+

默认当前时间

+

yyyy-MM-dd HH:mm:ss

-
blueInvoiceNumberString对应蓝票数电号码(数电普票、数电专票都需要,蓝票为数电票必填)20
blueInvoiceNoString蓝字增值税发票号码(如果蓝票为增值税发票,则增值税代号码必填)8
blueInvoiceCodeString蓝字增值税发票代码(如果蓝票为增值税发票,则增值税代号码必填)12
blueInvoiceLineString

蓝票未在系统时,需要必填

+

蓝票数电发票种类:

+

bs:数电专票(电子),

+

pc:数电普票(电子),

+

es:数电专票(纸质);

+

ec:数电普票(纸质),

+

p:电子增值税普通发票,

+

c:增值税普通发票(纸票),

+

s:增值税专用发票,

+

b:增值税电子专用发票

5
sellerNameString销方名称100
sellerTaxnumString销方税号20
buyerNameString购方名称100
buyerTaxnumString购方税号20
vatUsageString蓝字发票增值税用途(预留字段可为空)2
saleTaxUsageString蓝字发票消费税用途(预留字段可为空)2
accountStatusString发票入账状态(预留字段可为空)2
redReasonString

冲红原因:

+

1销货退回

+

2开票有误

+

3服务中止

+

4销售折让

2
bizCallbackUrlString业务系统回调地址255
extensionNumInteger分机号11
departmentIdLong部门门店id(诺税通中的部门id)20
userIdLong开票人id(诺税通中的用户id)20
notifyPhoneString交付手机号码20
notifyEmailString交付邮箱地址50
ccPhoneString抄送手机号,当推送手机notifyPhone有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个100
ccEmailString抄送邮箱,当推送邮箱notifyEmail有值时,才允许填写,多个中间用英文逗号隔开,最多可填写5个250
+ + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
确认单明细 details
名称类型必填描述长度
blueDetailIndexInteger对应数电蓝票的明细序号5
goodsNameString商品名称90
goodsUnitString单位22
specTypeString规格型号40
withTaxFlagint单价含税标志,0:不含税,1:含税1
goodsPricedecimal含税单价decimal(32,16)
taxFreePricedecimal不含税单价decimal(32,16)
goodsNumdecimal数量(传负数)decimal(32,16)
taxFreeAmountdecimal不含税金额(传负数)(15,2)
taxdecimal税额(传负数)(15,2)
taxAmountdecimal含税金额(传负数)(15,2)
taxrateString税率10
goodsCodeString税收分类编码19
goodsCodeAbbString税收分类编码简称200
selfCodeString自行编码20
favouredPolicyFlagString

优惠政策标识

+

01:简易征收 02:稀土产品 03:免税 04:不征税 05:先征后退 06:100%先征后退 07:50%先征后退 08:按3%简易征收 09:按5%简易征收 10:按5%简易征收减按1.5%计征 11:即征即退30% 12:即征即退50% 13:即征即退70% 14:即征即退100% 15:超税负3%即征即退 16:超税负8%即征即退 17:超税负12%即征即退 18:超税负6%即征即退

10
favouredPolicyNameString优惠政策内容,如:即征即退、免税、不征税、简易征收等50
zeroRateFlagString零税率标识,空:非零税率;1:免税;2:不征税;3:普通零税率2
deductiondecimal扣除额:传空或字段不传,都表示非差额征税;传0.00才表示差额征税:0.00(15,2)
+ +注: + +1\. 确认单明细不填时,进行全额冲红申请,填写明细信息,为部分冲红申请。 + +### 请求示例 + + +++ + + + + + +

{

+

"billId": "661545615505210618135603",

+

"applySource": 1,

+

"billTime": "2020-11-12 00:00:00",

+

"blueInvoiceNumber": "5000201530",

+

"blueInvoiceLine": "bs",

+

"sellerName": "移动测试盘326",

+

"sellerTaxnum": "150301199811285326",

+

"buyerName": "326专26",

+

"buyerTaxnum": "339901999999513",

+

"vatUsage": "1",

+

"saleTaxUsage": "2",

+

"accountStatus": "1",

+

"redReason": "1",

+

"extensionNum": "0",

+

"departmentId": 123,

+

"userId": 1,

+

"details": [

+

{

+

"blueDetailIndex": 2,

+

"favouredPolicyName": "",

+

"goodsCode": "1070304080000000000",

+

"goodsCodeAbb": "中成药",

+

"goodsName": "胶囊",

+

"goodsNum": -1,

+

"goodsPrice": 13.56,

+

"goodsUnit": "盒",

+

"specType": "中成药胶囊1",

+

"tax": -1.56,

+

"taxAmount": -13.56,

+

"taxFreeAmount": -12.00,

+

"taxFreePrice": 12,

+

"taxrate": "0.13",

+

"withTaxFlag": 1,

+

"zeroRateFlag": ""

+

}

+

]

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 查询成功 | 详细信息 | 1024 | +| data | String | 否 | "661545615505210618135603" | 提交成功则返回billId申请编号 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message":"成功",

+

"data": "661545615505210618135603"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code":"400",

+

"message":"参数校验失败"

+

}

+ +### 状态码说明 + +| | | +|:-----------|:-------------| +| **状态码** | **描述** | +| 200 | 查询成功 | +| 400 | 参数校验失败 | diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单确认接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单确认接口.md new file mode 100644 index 0000000..b40bd94 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/红字确认单确认接口.md @@ -0,0 +1,201 @@ +--- +title: 红字确认单确认接口 +aliases: + - 红字确认单确认接口 + - 诺税通红字确认单确认接口 + - 红字确认单-红字确认单确认接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 红字确认单确认接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[05_红字确认单]] +> 文档链接:[总索引](../README.md) · [分组页](../05_红字确认单.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[05_红字确认单]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/redConfirm/confirm.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 红字确认单确认接口 + +### 接口说明 + +数电发票红字确认单确认接口。 + +### 接口地址 + +| | +|:----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/redConfirm/confirm.do | + +### 请求参数 + + +++++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
名称类型必填描述长度
taxNumString税号(和组织编码任一必填)20
companyCodeString组织编码-
identityInteger

确认方身份:

+

0:销方

+

1:购方

2
billUuidString红字确认单uuid32
billIdString红字确认单申请单号32
billNoString红字确认单编号32
confirmAgreementInteger处理意见 0拒绝 1同意2
confirmReasonString处理理由200
extensionNumInteger分机号-
departmentIdLong部门门店id(诺税通中的部门id)20
userIdLong开票人id(诺税通中的用户id)20
+ +注: + +1. 有红字确认单申请号、红字确认单编号、红字确认单uuid任一必传 + +2. 税号和企业编码任一必填,可通过企业编码转换为税号 + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"companyCode": "1234324231",

+

"identity": 0,

+

"billUuid": "1fdsafda350301132998",

+

"confirmAgreement": 0,

+

"confirmReason": "通过",

+

"extensionNum": 1,

+

"userId": 1

+

}

+ +### 返回参数 + +| | | | | | | +|:--------:|:--------:|:--------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/自定义票源下载接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/自定义票源下载接口.md new file mode 100644 index 0000000..a3f4760 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/自定义票源下载接口.md @@ -0,0 +1,132 @@ +--- +title: 自定义票源下载接口 +aliases: + - 自定义票源下载接口 + - 诺税通自定义票源下载接口 + - 库存票源与打印-自定义票源下载接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 自定义票源下载接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/stock/downloadStockCustomize.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 自定义票源下载接口 + +### 接口说明 + +仅支持开票服务器类型为诺诺机柜、诺诺开票。下载成功之后客户端会重新上报可下载库存,之后可以调用查询接口刷新列表数据。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/stock/downloadStockCustomize.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| extensionNum | Integer | 是 | 分机号,纯数字 | \- | +| machineNumber | String | 是 | 机器编号,12位数字 | 12 | +| downloadableStockList | List | 是 | 可下载票源数量信息列表 | | +| 可下载票源数量信息列表 | | | | | +| invoiceCode | String | 是 | 要下载号段的发票代码 | | +| invoiceLine | String | 是 | 发票种类 | | +| invoiceNumStart | String | 是 | 要下载号段的起始发票号码 | | +| downloadNum | Integer | 是 | 想要下载的份数,**需要小于等于可下载数量** | | + +### 请求示例 + + +++ + + + + + +

{

+

"extensionNum":0,

+

"machineNumber":"661565671900",

+

"sellerTaxnum":"150301199811285326",

+

"downloadableStockList":[

+

{

+

"invoiceCode":"5000201530",

+

"invoiceLine":"p",

+

"invoiceNumStart":"93669589",

+

"downloadNum":10

+

}

+

]

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | Object | | | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": null

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": 900,

+

"message": "下载份数要小于等于发票份数",

+

"data": null

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取DAT加密包文件流接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取DAT加密包文件流接口.md new file mode 100644 index 0000000..4a765e9 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取DAT加密包文件流接口.md @@ -0,0 +1,106 @@ +--- +title: 获取DAT加密包文件流接口 +aliases: + - 获取DAT加密包文件流接口 + - 诺税通获取DAT加密包文件流接口 + - 车辆辅助与回传-获取DAT加密包文件流接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 获取DAT加密包文件流接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[08_车辆辅助与回传]] +> 文档链接:[总索引](../README.md) · [分组页](../08_车辆辅助与回传.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[08_车辆辅助与回传]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/getEncryptedStream.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 获取DAT加密包文件流接口 + +### 接口说明 + +获取加密包文件流接口,最多支持获取500张发票的加密包。 + +### 接口地址 + +| | +|:----------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/getEncryptedStream.do | + +### 请求参数(用json格式接收) + +| | | | | | | +|:---------------------:|:--------:|:--------:|:--------:|:---:|:--------:| +| **名称** | **类型** | **必填** | **描述** | | **长度** | +| sellerTaxnum | String | 是 | 销方税号 | | 20 | +| **发票代码+发票号码** | | | | | | +| invoiceCode | String | 是 | 发票代码 | 12 | | +| invoiceNumber | String | 是 | 发票号码 | 8 | | + +### 请求示例 + + +++ + + + + + +

{

+

"invoiceAssociations": [

+

{

+

"invoiceCode": "1500020560",

+

"invoiceNumber": "87609473"

+

}

+

],

+

"sellerTaxnum": "150301199811285326"

+

}

+ +### 返回参数 + +| | | | | | +|:--------:|:--------:|:--------:|:-------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | String | | 返回base64加密的文件内容 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": "dkSMheZ+2xkuW55b5HY5yzBIyrmKhRyhc9gnXHG5UOLUQnJoGCZkCg6h8hSgBAuneXD3z9uuT3rFd5VJBUripEa2IUWj5NYYvwkoku8ZSYL8xp4WGVx/Mkvprat8olT4WgDlIhJ1H8w1SVQ7oyoi8AcMBFTxDQ40eWBssK7tDaV5ND250xBe+qi1mso17pAkGvUzo2Kxz2VsWDd258sGYl3/7iEqyR5+eE4HwTc8h0+tuhPJtSw/WvyEEAcTHJFUZDW3mKqtXYHvWtRI9qqx2DU9bt+M2BveaWdLDqB6oXdluQJojWW7YjDT/MVVVnONVZnQXv5mtGKZNFG1snj/zTZdT4ucEKa7e0GSujP2HT6HNQcXLGfnB4QoLpTVpgNrDjrZJZSuTBTO/V7J2aEVVNzYODfKMIcDBp3mpVhD2HUUNl/bqnLemOkjkVJ6cCaa4lUOBz9nSD8TfNAagkrzph12M/ltmcRZrXTOdlaDwUF+GD15Vjv4MtKLHxnlYFK71CsDCT/F0lR8fo7NNiQJb7qnuadsRyAraK1lcneByLwJldkKpcYjOeO+4D/Sx0G/7WTw5mJTP08nXPUpwiP96PVI+jHmiQlK6IglFzZTrC6X5dMtWnxr1zdsF//I7rugfumlU1uS+IGLEpv/zTR9mxkZ1sOVzgjz+V8P3POrXU0Oi6O7n019qZd4a6hx2dGjau8STDevRNNm2Qz93HROjsdTWTC+5GYuCLbp+TVNJEx36BnIOgAR6+tj+jtCw4+cW7u7ILY1AkYA/anshTeTnUlCdglZuVsyFDTz+riy6wVwkcpqR0tN7t9rZPNLd3B/xeHxYsf50Th/kcVjo5qaSw=="

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取下一张发票号码代码接口_A9机柜.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取下一张发票号码代码接口_A9机柜.md new file mode 100644 index 0000000..b4a176f --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取下一张发票号码代码接口_A9机柜.md @@ -0,0 +1,119 @@ +--- +title: 获取下一张发票号码代码接口(A9+机柜) +aliases: + - 获取下一张发票号码代码接口(A9+机柜) + - 诺税通获取下一张发票号码代码接口(A9+机柜) + - 库存票源与打印-获取下一张发票号码代码接口(A9+机柜) +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 获取下一张发票号码代码接口(A9+机柜) + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/getNextInvoice.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 获取下一张发票号码代码接口(A9+机柜) + +### 接口说明 + +获取下一张发票号码代码,全本地(A9+机柜),半本地(机柜) + +### 接口地址 + +| | +|:------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/getNextInvoice.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号 | 20 | +| extensionNum | String | 是 | 分机号 | 5 | +| machineNum | String | 是 | 税控设备号(机器编码) | 12 | +| terminalNum | String | 否 | 终端号 | 10 | +| invoiceLine | String | 必填,发票种类对应枚举值,例:p:普通发票(电子) | 发票种类,c:增值税普通发票(纸票),s:增值税专用发票,f:收购发票(纸质),j:机动车发票,u:二手车发票 | 1 | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"extensionNum":" 1",

+

"machineNum":" 661929539468",

+

"invoiceLine": "c"

+

}

+ +### 返回参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | List | | 查询成功 | | +| 信息 | | | | | +| invoiceLine | String | 必填,发票种类对应枚举值 | 发票种类,c:增值税普通发票(纸票),s:增值税专用发票,f:收购发票(纸质),j:机动车发票,u:二手车发票 | 1 | +| nextInvoiceCode | String | 是 | 下一张发票代码 | 12 | +| nextInvoiceNum | String | 是 | 下一张发票号码 | 8 | +| remainNum | Integer | 否 | 剩余发票份数 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": [{

+

"invoiceLine": "c",

+

"nextInvoiceCode": "150010020011",

+

"nextInvoiceNum": "23499027",

+

"remainNum": 487

+

},{

+

"invoiceLine": "c",

+

"nextInvoiceCode": "150010020011",

+

"nextInvoiceNum": "23499028",

+

"remainNum": 486

+

}]

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取关联发票接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取关联发票接口.md new file mode 100644 index 0000000..7fa0e32 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取关联发票接口.md @@ -0,0 +1,147 @@ +--- +title: 获取关联发票接口 +aliases: + - 获取关联发票接口 + - 诺税通获取关联发票接口 + - 作废重开与冲红-获取关联发票接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 获取关联发票接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[03_作废重开与冲红]] +> 文档链接:[总索引](../README.md) · [分组页](../03_作废重开与冲红.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[03_作废重开与冲红]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/queryInvoiceAsscciationList.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 获取关联发票接口 + +### 接口说明 + +获取关联发票接口。 + +### 接口地址 + +| | +|:---| +| http\[s\]://\\[:\\]/salescore/lan/queryInvoiceAsscciationList.do | + +### 请求参数(用json格式接收) + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号 | 20 | +| dateType | Integer | 是 | 时间类型(0:创建时间,1:开票时间) | 1 | +| startDate | String | 是 | 开始时间,最大跨度不得超过180天,格式为yyyy-MM-dd HH:mm:ss | 20 | +| endDate | String | 是 | 结束时间,最大跨度不得超过180天,格式为yyyy-MM-dd HH:mm:ss | 20 | +| certificateOwnership | String | 选填 | 合格证归属,可多个,多个用英文逗号隔开 | 50 | +| uploadStatus | String | 选填 | 工信部上传状态,可多个,多个用英文逗号隔开 | 50 | +| buyerName | String | 选填 | 购方名称 | 100 | +| invoiceLines | String\[\] | 选填 | 发票种类列表—p电子增值税普通发票,c增值税普通发票(纸票),s增值税专用发票,e收购发票(电子),f收购发票(纸质),u:二手车发票 | \- | +| productNatures | Integer\[\] | 选填 | 发票性质列表—0:普通发票;1:成品油发票;2:机动车类专用发票;默认:0:普通发票 | \- | +| pageNum | Integer | 选填 | 页码,默认是1,每页条数为20条 | | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"dateType": 0,

+

"startDate": "2021-09-20 10:00:00",

+

"endDate": "2021-09-21 10:00:00",

+

"certificateOwnership": "三厂",

+

"uploadStatus": "上传成功",

+

"buyerName": "浙江师范大学",

+

"invoiceLines": [

+

"p"

+

],

+

"productNatures": [

+

0

+

],

+

pageNum:1

+

}

+ +### 返回参数 + +| | | | | | +|:----------------:|:----------:|:--------:|:--------------------------:|:--------:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | List | | 查询成功则返回发票关联信息 | | +| **数据信息** | | | | | +| pageNum | Integer | 是 | 当前页数 | | +| pageSize | Integer | 是 | 每页条数,为固定值20 | | +| pages | Integer | 是 | 总页数 | | +| total | Integer | 是 | 数据总数 | | +| list | List | | 查询成功则返回发票关联信息 | | +| **发票关联信息** | | | | | +| buyerName | String | 是 | 购方名称 | 100 | +| buyerTaxnum | String | 是 | 购方税号 | 20 | +| invoiceCode | String | 是 | 发票代码 | 12 | +| invoiceNumber | String | 是 | 发票号码 | 8 | +| specTypes | String\[\] | 是 | 规格型号列表 | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"data": {

+

"pageNum": 1,

+

"pageSize": 20,

+

"pages": 1,

+

"total": 1,

+

"list": [

+

{

+

"buyerName": "浙江师范大学",

+

"buyerTaxnum": "339901999999142",

+

"invoiceCode": "1500020560",

+

"invoiceNumber": "87609471",

+

"specTypes": [

+

"得力0231"

+

]

+

}

+

]

+

},

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取发票勾选入账状态接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取发票勾选入账状态接口.md new file mode 100644 index 0000000..923729b --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取发票勾选入账状态接口.md @@ -0,0 +1,164 @@ +--- +title: 获取发票勾选入账状态接口 +aliases: + - 获取发票勾选入账状态接口 + - 诺税通获取发票勾选入账状态接口 + - 专项能力-获取发票勾选入账状态接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 获取发票勾选入账状态接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[09_专项能力]] +> 文档链接:[总索引](../README.md) · [分组页](../09_专项能力.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[09_专项能力]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/redConfirm/queryFpgxStatus.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 获取发票勾选入账状态接口 + +### 接口说明 + +销方通过接口查询到蓝票的勾选入账状态,接口异步 + +核心逻辑: 先进行operateType=1进行数据从数据初始化查询,间隔一会儿之后再进行operateType=0进行查询数据的获取 + +限制条件: + +1. operateType=1请求30s一次 + +2. 税号+数电账号,每天最多20次 + +### 接口地址 + +| | +|----| +| http\[s\]://\\[:\\]/salescore/lan/redConfirm/queryFpgxStatus.do | + +### 请求参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **说明** | **描述** | **长度** | +| saleTaxNum | String | 是 | 销方税号 | 销售发票的纳税人识别号或统一社会信用代码 | 15-20 | +| elecInvoiceNumber | String | 否 | 蓝字数电票号码 | 数电号码、蓝票号码代码必须选择其一 | 20 | +| invoiceCode | Stirng | 否 | 蓝票发票代码 | | | +| invoiceNumber | String | 否 | 蓝票发票号码 | | | +| operateType | Integer | 是 | 操作类型 | 操作类型,0-查询,1-税局获取 | 1 | +| extensionNum | String | 否 | 分机号 | | | + +### 请求示例 + + +++ + + + + + +

{

+

    "saleTaxNum":"339901999999008",

+

    "elecInvoiceNumber":"23312000000000540819",

+

    "invoiceCode":"",

+

    "invoiceNumber":"",

+

    "extensionNum":"1",

+

    "operateType":0

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | 是 | | 查询对象 | | +| **数据信息** | | | | | | +| invoiceCode | String | 否 | 033001600111 | 发票代码 | | +| invoiceNumber | String | 否 | 45738316 | 发票号码 | | +| elecInvoiceNumber | String | 否 | 23312000000000540819 | 数电号码 | 20 | +| sellerTaxnum | String | 是 | 339902999999789109 | 销方税号 | | +| sellerName | String | 是 | 航信培训企业789109 | 销方名称 | | +| buyerTaxnum | String | 是 | 915110247729829567 | 购方税号 | | +| buyerName | String | 是 | 威远县和平洗煤设备 | 购方名称 | | +| invoiceTime | String | 是 | 2023-06-08 13:00:22 | 开票时间 | | +| taxFreeAmountTotal | String | 是 | 0.92 | 合计不含税金额 | | +| taxAmountTotal | String | 是 | 1.00 | 价税合计 | | +| taxTotal | String | 是 | 0.08 | 合计税额 | | +| vatUsageCode | String | 是 | 01 | 增值税用途代码 :00 已勾选未确认, 01已确认, 03未勾选 | 2 | +| saleTaxUsageCode | String | 是 | 00 | 消费税用途代码 :00 未勾选,非00 已勾选 | 2 | +| accountStatus | String | 是 | 00 | 发票入账状态代码 :00 未入账,01:已入账 | | + +### 返回示例 + +失败示例 + + +++ + + + + + +

{

+

    "code": 900,

+

    "message": "该功能暂停使用或访问,请稍后再试!",

+

    "data": null

+

}

+ +成功示例 + + +++ + + + + + +

{

+

    "code": 200,

+

    "message": "成功",

+

    "data": {

+

        "invoiceCode": "",

+

        "invoiceNumber": "20882305231323060035",

+

        "elecInvoiceNumber": "20882305231323060035",

+

        "sellerTaxnum": "339902999999789109",

+

        "sellerName": "航信培训企业789109",

+

        "buyerTaxnum": "915110247729829567",

+

        "buyerName": "威远县和平洗煤设备",

+

        "invoiceTime": "2023-06-08 13:00:22",

+

        "taxFreeAmountTotal": "0.92",

+

        "taxAmountTotal": "1.00",

+

        "taxTotal": "0.08",

+

        "vatUsageCode": "00",

+

        "saleTaxUsageCode": "00",

+

        "accountStatus": "01"

+

    }

+

}

+ +# 附录 diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取指定票种当前代码号码.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取指定票种当前代码号码.md new file mode 100644 index 0000000..4e338e8 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取指定票种当前代码号码.md @@ -0,0 +1,124 @@ +--- +title: 获取指定票种当前代码号码 +aliases: + - 获取指定票种当前代码号码 + - 诺税通获取指定票种当前代码号码 + - 库存票源与打印-获取指定票种当前代码号码 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 获取指定票种当前代码号码 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/getInvoiceCode.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 获取指定票种当前代码号码 + +### 接口说明 + +指定票种当前代码号码查询接口。 + +目前仅支持全自建-A9服务器。 + +### 接口地址 + +| | +|:------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/getInvoiceCode.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号 | 20 | +| extensionNum | String | 选填,至少分机号或机器编号任一必填 | 分机号 | 5 | +| machineNum | String | 选填,至少分机号或机器编号任一必填 | 机器编号 | 12 | +| terminalNum | String | 否 | 终端号 | 10 | +| invoiceLine | String | 必填,发票种类对应枚举值,例:p:普通发票(电子) | 发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票 | 1 | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"extensionNum":" 1",

+

"terminalNum":" 1",

+

"invoiceLine": "p"

+

}

+ +### 返回参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| code | Integer | 是 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 详细信息 | 1024 | +| data | List | | 查询成功则返回 | | +| 信息 | | | | | +| sellerTaxnum | String | 否 | 销方税号 | 20 | +| extensionNum | String | 否 | 分机号 | 5 | +| machineNum | String | 否 | 机器编号 | 12 | +| terminalNum | String | 否 | 终端号 | 10 | +| invoiceLine | String | 必填,发票种类对应枚举值,例:p:普通发票(电子) | 发票种类,p:电子增值税普通发票,c:增值税普通发票(纸票),s:增值税专用发票,e:收购发票(电子),f:收购发票(纸质),r:增值税普通发票(卷式),b:增值税电子专用发票,j:机动车发票,u:二手车发票 | 1 | +| invoiceCode | String | 是 | 当前发票代码 | 12 | +| invoiceNum | String | 是 | 当前发票号码 | 8 | +| remainNum | Integer | 否 | 剩余发票份数 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code": 200,

+

"message": "成功",

+

"data": {

+

"sellerTaxnum": "150301199811285326",

+

"extensionNum": "1",

+

"machineNum": null,

+

"terminalNum": "1",

+

"invoiceLine": "p",

+

"invoiceCode": "150010020011",

+

"invoiceNum": "23499027",

+

"remainNum": 487

+

}

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取查询数电登录认证_开票实名认证二维码.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取查询数电登录认证_开票实名认证二维码.md new file mode 100644 index 0000000..7ae2102 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取查询数电登录认证_开票实名认证二维码.md @@ -0,0 +1,118 @@ +--- +title: 获取查询数电登录认证、开票实名认证二维码 +aliases: + - 获取查询数电登录认证、开票实名认证二维码 + - 诺税通获取查询数电登录认证、开票实名认证二维码 + - 设备企业与配置-获取查询数电登录认证、开票实名认证二维码 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 获取查询数电登录认证、开票实名认证二维码 + +> [!info] 导航 +> 上级索引:[[README]] · [[07_设备企业与配置]] +> 文档链接:[总索引](../README.md) · [分组页](../07_设备企业与配置.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[07_设备企业与配置]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/auth/authQr.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 获取查询数电登录认证、开票实名认证二维码 + +### 接口说明 + +用于数电发票开具时登录扫码认证、短信验证 或 开票实名认证的时候,进行获取或查询认证二维码 + +### 接口地址 + +| | +|:---------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/auth/authQr.do | + +### 请求参数 + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| taxNum | String | 是 | 税号 | 20 | +| extensionNum | Integer | 否 | 分机号,分机号和数电账号任一必填 | \- | +| account | String | 否 | 数电账号,分机号和数电账号任一必填 | 20 | +| opType | Integer | 否 | 操作类型 0:刷新(认证二维码) 1:查询(认证二维码) 2:刷新(登录二维码) 3:查询(登录二维码) 4:发送短信验证码(短信验证码登录时)5:查询短信验证发送状态,默认1 | 1 | + +### 请求示例 + + +++ + + + + + +

{

+

"taxNum": "150301199811285326",

+

"extensionNum": 1,

+

"account": "123456",

+

"opType": 1

+

}

+ +### 返回参数 + +| | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **示例值** | **描述** | **长度** | +| code | Integer | 是 | 200 | 状态,200-成功,非200-失败 | 6 | +| message | String | 是 | 成功 | 详细信息 | 1024 | +| data | Object | | | 结果 | | +| 二维码信息 | | | | | | +| account | String | 否 | 138\*\*\*\*1234 | 用户名/手机号(脱敏处理) | 20 | +| taxNum | String | 否 | 150301199811285326 | 税号 | 20 | +| qrCodeType | String | 否 | 1 | 二维码类型 1:登录扫码认证多源二维码 2:登录扫码认证税APP二维码 3:登录扫码认证电子营业执照二维码 4:开票实名认证二维码 | 1 | +| status | String | 否 | 0 | 获取状态0-获取二维码中/短信发送中;1-成功;2-失败 | 1 | +| message | String | 否 | 获取中 | 信息 | 300 | +| qrCode | String | 否 | | 登录扫码认证 或 开票实人认证二维码qrcode | \- | + +### 返回示例 + +成功示例: + + +++ + + + + + +

{
+"code":200,
+"message": "成功",

+

"data":

+

{

+

"account": "123456",

+

"taxNum": "1234567890",

+

"qrCodeType": "1",

+

"status": "0",

+

"message": "获取中",

+

"qrCode": "1fsd34s"

+

}
+}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取纸票打印编号接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取纸票打印编号接口.md new file mode 100644 index 0000000..4d62bcd --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/获取纸票打印编号接口.md @@ -0,0 +1,127 @@ +--- +title: 获取纸票打印编号接口 +aliases: + - 获取纸票打印编号接口 + - 诺税通获取纸票打印编号接口 + - 库存票源与打印-获取纸票打印编号接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 获取纸票打印编号接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[06_库存票源与打印]] +> 文档链接:[总索引](../README.md) · [分组页](../06_库存票源与打印.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[06_库存票源与打印]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`/salescore/lan/print/ batchPrintInvoiceDecrypt.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 获取纸票打印编号接口 + +### 接口说明 + +通过该接口获取可以拉起打印助手的加密字符串。 + +注意:请按照文档要求提供接口,最多可打印500张发票。 + +### 接口地址 + +/salescore/lan/print/ batchPrintInvoiceDecrypt.do + +### 请求参数(用json格式接收) + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| sellerTaxnum | String | 是 | | | 销方税号 | | +| invoiceCodeNumbers | List | 是 | | | 代码号码参数列表 | 100 | +| 票据号码金额明细列表 | | | | | | | +| invoiceCode | String | 是 | | | 票据代码 | | +| invoiceNumber | String | 是 | | | 票据号码 | | +| taxAmountTotal | String | 是 | | | 价税合计 | | + +### 请求示例 + + +++ + + + + + +

{

+

"sellerTaxnum": "150301199811285326",

+

"invoiceCodeNumbers": [

+

{

+

"invoiceCode": "5000191650",

+

"invoiceNumber": "54523588",

+

"taxAmountTotal": "1.09"

+

}

+

]

+

}

+ +### 返回参数 + +| | | | | | | | +|:--:|:--:|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必须** | **示例值** | **更多限制** | **描述** | **最大长度** | +| code | String | 是 | 200 | | 状态码,字符串”200”表示成功,非”200”的字符串表示失败 | 6 | +| message | String | 是 | 同步成功 | | 详细信息 | 1024 | +| data | String | | | | 用以拉起打印助手的参数,拼接规则如下“webprint: 2,150301199811285326%215d09ed6548424aed811e8cfd39583a03%2102”即可拉起打印助手 | | + +\#####注意拼接规则 webprint:+data (不要带加号) + +### 返回示例 + +成功示例: + + +++ + + + + + +

{

+

"code":200,

+

"data":"2,150301199811285326%215d09ed6548424aed811e8cfd39583a03%2102",

+

"message":"成功"

+

}

+ +失败示例: + + +++ + + + + + +

{

+

"code": "9999",

+

"message": ""

+

}

diff --git a/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/蓝字发票剩余可冲红的金额_税额查询接口.md b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/蓝字发票剩余可冲红的金额_税额查询接口.md new file mode 100644 index 0000000..8bae074 --- /dev/null +++ b/docs/guides/NUOSHUITONG_INTERFACE_SPEC/interfaces/蓝字发票剩余可冲红的金额_税额查询接口.md @@ -0,0 +1,197 @@ +--- +title: 蓝字发票剩余可冲红的金额、税额查询接口 +aliases: + - 蓝字发票剩余可冲红的金额、税额查询接口 + - 诺税通蓝字发票剩余可冲红的金额、税额查询接口 + - 作废重开与冲红-蓝字发票剩余可冲红的金额、税额查询接口 +tags: + - water-docs + - nuoshuitong + - invoice-api + - obsidian + - single-interface +source_docx: ../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx +source_type: converted-and-split +--- +# 蓝字发票剩余可冲红的金额、税额查询接口 + +> [!info] 导航 +> 上级索引:[[README]] · [[03_作废重开与冲红]] +> 文档链接:[总索引](../README.md) · [分组页](../03_作废重开与冲红.md) · [实施清单](../../NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md) + +> [!note] 来源 +> 来源原件:[诺诺网-诺税通销项服务对外接口规范v1.3.18.docx](../../../design/04_Appendix/Archive/03_Design_Docs/诺诺网-诺税通销项服务对外接口规范v1.3.18.docx) +> 接口分组:[[03_作废重开与冲红]] + +## 字段摘要 + +> [!summary] 接口元信息 +> - 接口地址:`http[s]://\[:\]/salescore/lan/scm/query-invoice-red.do` +> - 请求方式:`POST` +> - 是否回调:否 +> - 是否主链路:否 +> - 推荐优先级:扩展/按需 + + + +## 蓝字发票剩余可冲红的金额、税额查询接口 + +### 接口说明 + +提供蓝字发票剩余可冲红的金额、税额查询接口 + +### 接口地址 + +| | +|--------------------------------------------------------------------------| +| http\[s\]://\\[:\\]/salescore/lan/scm/query-invoice-red.do | + +### 请求参数(用json格式接收) + +| | | | | | +|:--:|:--:|:--:|:--:|:--:| +| **名称** | **类型** | **必填** | **描述** | **长度** | +| sellerTaxnum | String | 是 | 销方税号,15-20位 | 20 | +| buyerName | String | 是 | 购方名称,精确匹配 | \- | +| buyerTaxnum | String | 否 | 购方税号,精确匹配 | \- | +| invoiceStartTime | String | 否 | 包含头尾,起始日期,精确到日 | \- | +| invoiceEndTime | String | 否 | 包含头尾,截止日期,精确到日 | | +| invoiceNumber | String | 否 | 发票号码,精确匹配 发票代码有值时,发票号码必填 | | +| orderNo | String | 否 | 模糊匹配出全部拆分后规则的订单,举例:入参:A,可返回A_00001 、A_00002 | | +| taxAmountTotal | String | 否 | 含税金额,查询大于等于入参金额的发票。 | | +| taxFreeAmountTotal | String | 否 | 不含税金额,查询大于等于入参金额的发票。 | | +| invoiceLine | List\ | 是 | 发票种类 | | +| goodsName | String | 否 | 商品名称,模糊匹配,只要商品明细中包含传入商品名称就返回对应发票信息 | | +| invoiceType | Integer | 是 | 发票类型 1,蓝票 | | +| invoiceIds | List\ | 否 | 发票流水号 | | +| invoiceCode | String | 否 | 发票代码 | | +| allElectronicInvoiceNumber | String | 否 | 数电发票号码 | | +| pageNum | Integer | 否 | 当前页,默认为1 | | +| pageSize | Integer | 否 | 分页条数,默认为15 | | + +### 请求参数示例 + + +++ + + + + + +

{

+

"buyerName": "浙江师范大学",

+

"goodsName": "谷物细粉",

+

"invoiceLine": [

+

"p",

+

"j"

+

],

+

"invoiceType": 1,

+

"pageNum": 1,

+

"pageSize": 15,

+

"sellerTaxnum": "150301199811285326",

+

"invoiceIds": ["21102610281401000004"]

+

}

+ +### 返回参数 + +| | | | | +|:--------------------------:|:----------:|:-------------------------:|:--------:| +| **名称** | **类型** | **描述** | **长度** | +| code | Integer | 状态,200-成功,非200-失败 | 6 | +| message | String | 详细信息 | 1024 | +| data | list | 查询结果 | | +| buyerName | String | 购方名称 | | +| buyerTaxnum | String | 购方税号 | \- | +| invoiceTime | Date | 开票时间 | \- | +| invoiceCode | String | 发票代码 | | +| invoiceNumber | String | 发票号码 | | +| invoiceId | String | 发票流水号 | | +| orderNo | String | 订单编号 | | +| taxAmountTotal | BigDecimal | 含税金额 | | +| taxFreeAmountTotal | BigDecimal | 不含税金额 | | +| taxTotal | BigDecimal | 合计税额 | | +| invoiceLine | String | 发票种类 | | +| pdfUrl | String | 发票pdf地址 | | +| imageUrl | String | 发票图片地址 | | +| ofdUrl | String | 发票ofd地址 | | +| redTaxAmount | BigDecimal | 可冲红含税金额 | | +| redTaxFreeAmount | BigDecimal | 可冲红不含税金额 | | +| redTaxTotal | BigDecimal | 可冲红税额 | | +| allElectronicInvoiceNumber | String | 数电发票号码 | | +| pageNum | Integer | 当前页 | | +| pageSize | Integer | 每页显示条数 | | +| pages | Integer | 总页数 | | +| total | Integer | 总条数 | | + +### 返回示例 + +成功示例: + + +++ + + + + + +
+++ + + + + + +

{

+

"code": 200,

+

"data": {

+

"list": [

+

{

+

"buyerName": "浙江师范大学",

+

"buyerTaxnum": "339901999999142",

+

"imageUrl": "https://invtest.nntest.cn/fp/4ZVOcdXd-2mNx4YoP3hNXrINJSHYL3HA4gm70TaLrdGz3G1YmhriRKQyCM8qH1k5xu0zgSkfY9RvPW2qY442Fw.jpg",

+

"invoiceCode": "011001901011",

+

"invoiceId": "21092615495801000039",

+

"invoiceLine": "p",

+

"invoiceNumber": "92446751",

+

"invoiceTime": 1632642784000,

+

"ofdUrl": "",

+

"orderNo": "458fe678107c4f45867ce1d441a9626d",

+

"pdfUrl": "https://invtest.nntest.cn/fp/4ZVOcdXd-2mNx4YoP3hNXsj5w-6soDHl59Y-RJmc3-_OBpMxMxMjDRKdB-P36JpWGj5uUtg51-_NjiIgM7LTiw.pdf",

+

"redTaxAmount": 1.03,

+

"redTaxFreeAmount": 1.00,

+

"redTaxTotal": 0.03,

+

"taxAmountTotal": 1.03,

+

"taxFreeAmountTotal": 1.00,

+

"taxTotal": 0.03

+

},

+

{

+

"buyerName": "浙江师范大学",

+

"buyerTaxnum": "339901999999142",

+

"imageUrl": "",

+

"invoiceCode": "",

+

"invoiceId": "21102610460701000007",

+

"invoiceLine": "p",

+

"invoiceNumber": "",

+

"orderNo": "c7ab4c44656146d799930c29ca9befb4",

+

"pdfUrl": "",

+

"redTaxAmount": 1.03,

+

"redTaxFreeAmount": 1.00,

+

"redTaxTotal": 0.03,

+

"taxAmountTotal": 1.03,

+

"taxFreeAmountTotal": 1.00,

+

"taxTotal": 0.03

+

}

+

],

+

"pageNum": 1,

+

"pageSize": 15,

+

"pages": 9,

+

"total": 121

+

},

+

"message": "成功"

+

}

diff --git a/docs/guides/NUOSHUITONG_PG_OPENGAUSS_DDL_GUIDE.md b/docs/guides/NUOSHUITONG_PG_OPENGAUSS_DDL_GUIDE.md new file mode 100644 index 0000000..e58691f --- /dev/null +++ b/docs/guides/NUOSHUITONG_PG_OPENGAUSS_DDL_GUIDE.md @@ -0,0 +1,342 @@ +# 诺税通 DDL(PostgreSQL 16 / openGauss 适配建议) + +## 文档信息 + +| 项目 | 内容 | +| --- | --- | +| 项目名称 | 福建水务营收系统 | +| 文档类型 | 外部平台对接数据库方言适配建议 | +| 对接平台 | 诺税通 saas | +| 适用范围 | PostgreSQL 16、openGauss 场景下的诺税通对接表结构实现 | +| 版本 | v1.0 | +| 日期 | 2026-03-24 | +| 状态 | 草案 | + +## 适用说明 + +本文档基于以下文档继续细化: +- `docs/guides/NUOSHUITONG_DATABASE_DESIGN.md` +- `docs/guides/NUOSHUITONG_DDL_DRAFT.md` + +本文不重复给出全部业务设计,而聚焦 PostgreSQL 16 / openGauss 下的结构落地差异、字段类型建议、主键策略、索引策略与兼容性注意事项,作为后续正式数据库实现与迁移脚本编制的输入。 + +## 总体结论 + +对于当前诺税通对接表,PostgreSQL 16 与 openGauss 可基本沿用同一套逻辑模型,差异主要集中在: +- 自增主键策略 +- `text/json/jsonb` 选型 +- 时间类型与默认值写法 +- 索引能力与语法细节 +- 约束命名、在线变更和迁移脚本组织方式 + +建议策略如下: +- **逻辑模型统一**:表结构、字段名、状态字段口径统一维护 +- **DDL 方言分层**:保留一份逻辑 DDL 草案,再针对 PG16/openGauss 输出方言版本 +- **优先使用兼容类型**:避免过度依赖仅单方言增强特性 + +## 类型适配建议 + +### 主键与数值 +| 逻辑类型 | PostgreSQL 16 建议 | openGauss 建议 | 说明 | +| --- | --- | --- | --- | +| 主键 ID | `bigint` + sequence / identity | `bigint` + sequence / identity | 两侧均可用 | +| 整数 | `integer` / `bigint` | `integer` / `bigint` | 保持一致 | +| 金额 | `numeric(18,2)` | `numeric(18,2)` | 替代通用 DDL 中的 `decimal(18,2)` | +| 数量/单价 | `numeric(18,6)` | `numeric(18,6)` | 保持一致 | +| 布尔语义标志 | `smallint` | `smallint` | 建议继续用 `0/1`,避免历史口径不一致 | + +### 字符与大文本 +| 逻辑类型 | PostgreSQL 16 建议 | openGauss 建议 | 说明 | +| --- | --- | --- | --- | +| 短文本 | `varchar(n)` | `varchar(n)` | 保持一致 | +| 长文本报文 | `text` | `text` | 不再使用 MySQL 风格 `longtext` | +| URL | `varchar(1024)` | `varchar(1024)` | 保持一致 | + +### 时间类型 +| 逻辑类型 | PostgreSQL 16 建议 | openGauss 建议 | 说明 | +| --- | --- | --- | --- | +| 业务时间 | `timestamp without time zone` | `timestamp without time zone` | 若系统全局统一时区,可保持此口径 | +| 创建/更新时间 | `timestamp without time zone` | `timestamp without time zone` | 与主文档风格统一 | +| 默认当前时间 | `CURRENT_TIMESTAMP` | `CURRENT_TIMESTAMP` | 两侧兼容 | + +### JSON / 扩展字段 +| 场景 | PostgreSQL 16 建议 | openGauss 建议 | 说明 | +| --- | --- | --- | --- | +| 对接原文强留痕 | `text` | `text` | 最稳妥 | +| 需要结构化查询的 JSON 字段 | `jsonb` | `json` 或 `text`(视版本能力) | 若需强兼容,优先 `text` | +| 当前诺税通场景 | `text` 优先 | `text` 优先 | 如 `specific_factor_json`、`payload_json` | + +**建议**:诺税通对接首期以兼容优先,所有原始报文与扩展对象字段统一先落 `text`,避免在 openGauss 与 PostgreSQL 16 之间引入额外 JSON 运算差异。 + +## 主键策略建议 + +### 推荐策略 +建议统一采用: +- `bigint` 主键 +- 显式 sequence 或 identity +- 由应用层雪花 ID / 序列服务统一发号更佳 + +### PostgreSQL 16 建议写法 +```sql +id bigint generated by default as identity primary key +``` + +### openGauss 建议写法 +若版本兼容 identity,则保持一致;否则可退回: +```sql +id bigint not null default nextval('seq_ns_invoice') +``` + +### 实施建议 +为了避免不同数据库版本行为差异,若你们当前已有统一 ID 生成器,建议: +- 数据库字段仅定义 `bigint not null` +- 主键值由应用生成 + +这样迁移和多库兼容会最稳。 + +## 约束与索引适配建议 + +### 唯一索引 +当前草案中的以下唯一约束可直接保留: +- `uk_ns_invoice_sys_request_no` +- `uk_ns_red_document_bill_no` +- `uk_ns_enterprise_billing_config_tax_num` +- `uk_ns_platform_event_log_event_key` +- `uk_ns_platform_request_log_request_id` + +### 可空唯一索引注意事项 +如: +- `uk_ns_invoice_platform_serial_num` +- `uk_ns_red_document_bill_id` + +在 PostgreSQL 16 / openGauss 中,多数情况下允许多个 `NULL`,一般符合当前需求;但若你后续要求“非空且唯一”,建议改成: +- 业务侧先判空 +- 数据库侧用部分索引(若目标方言支持并确认兼容) + +### 索引字段建议 +对以下场景重点保留组合索引: +- 发票状态补偿:`request_status, invoice_status, delivery_status` +- 发票查询:`seller_tax_no, invoice_time` +- 重试调度:`next_try_time` +- 红字查询:`document_type, bill_status, open_status` +- 设备健康:`device_status, report_tax_status, clear_card_status` +- 库存快照:`seller_tax_no, invoice_line, snapshot_time` + +## 时间字段适配建议 + +原 DDL 草案中使用了 `DATETIME`。建议在 PostgreSQL 16 / openGauss 中统一替换为: +```sql +timestamp without time zone +``` + +### 推荐替换规则 +| 草案写法 | PG/openGauss 建议写法 | +| --- | --- | +| `DATETIME` | `timestamp without time zone` | +| `created_at DATETIME NOT NULL` | `created_at timestamp without time zone not null` | +| `updated_at DATETIME NOT NULL` | `updated_at timestamp without time zone not null` | + +## 核心表方言适配示例 + +## `ns_invoice` PostgreSQL 16 / openGauss 建议写法 + +```sql +CREATE TABLE ns_invoice ( + id bigint NOT NULL, + sys_request_no varchar(64) NOT NULL, + order_no varchar(64), + source_business_type varchar(32), + source_business_id varchar(64), + platform_invoice_serial_num varchar(64), + invoice_id varchar(64), + invoice_code varchar(32), + invoice_no varchar(32), + all_electronic_invoice_no varchar(64), + seller_tax_no varchar(32) NOT NULL, + buyer_name varchar(200), + buyer_tax_no varchar(64), + buyer_address varchar(255), + buyer_tel varchar(64), + buyer_account varchar(255), + invoice_type varchar(16), + invoice_line varchar(16), + list_flag smallint, + with_tax_flag smallint, + notify_phone varchar(64), + notify_email varchar(128), + cc_phone varchar(256), + cc_email varchar(256), + total_amount numeric(18,2), + amount_without_tax numeric(18,2), + tax_amount numeric(18,2), + request_status varchar(32) NOT NULL, + invoice_status varchar(32), + invoice_status_text varchar(255), + invalid_state varchar(32), + delivery_status varchar(32), + sync_status varchar(32), + pdf_url varchar(1024), + ofd_url varchar(1024), + image_url varchar(1024), + paper_pdf_url varchar(1024), + invoice_time timestamp without time zone, + request_time timestamp without time zone, + invalid_time timestamp without time zone, + last_sync_time timestamp without time zone, + ori_invoice_code varchar(32), + ori_invoice_no varchar(32), + old_electronic_invoice_no varchar(64), + remark varchar(1000), + specific_factor_json text, + latest_result varchar(1000), + latest_error varchar(1000), + try_count integer, + last_try_time timestamp without time zone, + next_try_time timestamp without time zone, + created_at timestamp without time zone NOT NULL, + updated_at timestamp without time zone NOT NULL, + created_by varchar(64), + updated_by varchar(64), + CONSTRAINT pk_ns_invoice PRIMARY KEY (id), + CONSTRAINT uk_ns_invoice_sys_request_no UNIQUE (sys_request_no) +); +``` + +### 推荐索引 +```sql +CREATE UNIQUE INDEX uk_ns_invoice_platform_serial_num + ON ns_invoice (platform_invoice_serial_num); + +CREATE INDEX idx_ns_invoice_order_no + ON ns_invoice (order_no); + +CREATE INDEX idx_ns_invoice_status + ON ns_invoice (request_status, invoice_status, delivery_status); + +CREATE INDEX idx_ns_invoice_seller_tax_no + ON ns_invoice (seller_tax_no); + +CREATE INDEX idx_ns_invoice_invoice_time + ON ns_invoice (invoice_time); + +CREATE INDEX idx_ns_invoice_next_try_time + ON ns_invoice (next_try_time); +``` + +## `ns_platform_event_log` PostgreSQL 16 / openGauss 建议写法 + +```sql +CREATE TABLE ns_platform_event_log ( + id bigint NOT NULL, + event_type varchar(32) NOT NULL, + event_key varchar(128) NOT NULL, + seller_tax_no varchar(32), + business_key varchar(128), + payload_json text NOT NULL, + process_status varchar(32) NOT NULL, + process_message varchar(1000), + processed_at timestamp without time zone, + created_at timestamp without time zone NOT NULL, + CONSTRAINT pk_ns_platform_event_log PRIMARY KEY (id), + CONSTRAINT uk_ns_platform_event_log_event_key UNIQUE (event_key) +); +``` + +## `ns_invoice_stock_snapshot` PostgreSQL 16 / openGauss 建议写法 + +```sql +CREATE TABLE ns_invoice_stock_snapshot ( + id bigint NOT NULL, + device_id bigint, + seller_tax_no varchar(32) NOT NULL, + extension_num varchar(32), + machine_num varchar(64), + terminal_num varchar(64), + invoice_line varchar(16), + invoice_code varchar(32), + invoice_num_start varchar(32), + invoice_num_end varchar(32), + remain_num integer, + is_default smallint, + source_type varchar(16) NOT NULL, + snapshot_time timestamp without time zone NOT NULL, + created_at timestamp without time zone NOT NULL, + CONSTRAINT pk_ns_invoice_stock_snapshot PRIMARY KEY (id) +); +``` + +## openGauss 特别注意事项 + +### 1. 避免首期过度依赖 JSONB +虽然部分 openGauss 版本具备 JSON 能力,但在迁移期为了降低差异,建议: +- `specific_factor_json` 用 `text` +- `payload_json` 用 `text` +- `request_body/response_body` 用 `text` + +### 2. 避免直接依赖部分索引、表达式索引的高级特性 +如果后续确实需要,请在 PG16 与 openGauss 两侧分别验证后再引入。 + +### 3. 约束命名统一 +建议所有主键、唯一约束、外键、索引均显式命名,避免迁移工具自动生成差异名称。 + +### 4. 时间默认值与更新策略 +不要依赖 MySQL 风格的 `on update current_timestamp`;建议: +- `created_at` 默认应用层写入 +- `updated_at` 由应用更新 +- 或用触发器,但触发器策略需单独治理 + +## PostgreSQL 16 特别建议 + +### 1. 可考虑使用 identity +若项目主键策略准备切换到数据库发号,可优先在 PostgreSQL 16 使用: +```sql +generated by default as identity +``` + +### 2. 后续可逐步将部分 `text` 字段演进为 `jsonb` +适用于: +- 平台事件检索增强 +- `specific_factor_json` 局部结构化查询 + +但建议等 openGauss 迁移策略稳定后再做。 + +## 迁移实施建议 + +### 第一阶段:逻辑模型统一 +- 保持当前 `ns_` 表结构不变 +- 所有长文本字段先统一使用 `text` +- 所有时间字段统一替换为 `timestamp without time zone` + +### 第二阶段:DDL 方言拆分 +输出两份实际执行脚本: +- `postgresql/nuoshuitong_ddl.sql` +- `opengauss/nuoshuitong_ddl.sql` + +### 第三阶段:兼容性验证 +重点验证: +- 唯一约束在空值场景下的行为 +- 外键创建顺序 +- 索引创建语句 +- 迁移工具(如 Flyway/Liquibase)执行兼容性 + +## 推荐优先落地表 +建议在 PostgreSQL 16 / openGauss 两侧先优先验证以下 5 张表: +- `ns_invoice` +- `ns_invoice_item` +- `ns_invoice_reversal` +- `ns_billing_device` +- `ns_platform_request_log` + +原因: +- 覆盖主链路核心对象 +- 覆盖状态流转 +- 覆盖设备与日志两类最容易暴露方言差异的场景 + +## 后续建议 + +建议在本文档基础上继续输出: +- PostgreSQL 16 实际可执行版 DDL +- openGauss 实际可执行版 DDL +- 字段注释脚本 +- 初始化枚举字典脚本 +- Flyway / Liquibase 迁移脚本编排建议 diff --git a/docs/guides/NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md b/docs/guides/NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md new file mode 100644 index 0000000..0868380 --- /dev/null +++ b/docs/guides/NUOSHUITONG_SAAS_INTEGRATION_CHECKLIST.md @@ -0,0 +1,555 @@ +# 诺税通 saas 对接实施清单 + +## 文档信息 + +| 项目 | 内容 | +| --- | --- | +| 项目名称 | 福建水务营收系统 | +| 文档类型 | 外部平台对接实施清单 | +| 对接平台 | 诺税通 saas | +| 适用范围 | 销项开票、发票查询、PDF 获取、重新交付、作废、库存与客户端状态检查 | +| 版本 | v1.0 | +| 日期 | 2026-03-24 | +| 状态 | 已整理 | + +## 适用说明 + +本文档用于指导福建水务营收系统对接诺税通 saas 的首期实施工作,聚焦销项发票主链路。内容覆盖接口优先级、字段映射建议、业务流程、错误码处理策略与沙箱测试清单,适合作为实施前评审、开发拆解与联调验收的统一依据。 + +当前口径以诺诺开放平台中“诺税通 saas”接口组为准,不再沿用通用 `ElectronInvoice` 接口组作为主实施入口。 + +## 接口优先级 + +### P0:首批必须接入 + +#### 请求开具发票 +- 方法:`nuonuo.OpeMplatform.requestBillingNew` +- 文档入口:`https://jss.com.cn/open/#/api-doc/common-api?id=100607` +- 作用:提交开票请求,获取平台发票流水号,是销项开票主入口。 + +#### 发票列表查询 +- 方法:`nuonuo.OpeMplatform.queryInvoiceList` +- 文档入口:`https://jss.com.cn/open/#/api-doc/common-api?id=100687` +- 作用:查询发票列表、状态与基础结果,是查询与状态核对主入口。 + +#### 获取电子发票 PDF +- 方法:`nuonuo.OpeMplatform.getPDF` +- 文档入口:`https://jss.com.cn/open/#/api-doc/common-api?id=100694` +- 作用:获取已开票发票的 PDF 地址,用于下载、预览与交付。 + +### P1:首批强烈建议接入 + +#### 发票重新交付 +- 方法:`nuonuo.OpeMplatform.deliveryInvoice` +- 文档入口:`https://jss.com.cn/open/#/api-doc/common-api?id=100696` +- 作用:对未收到发票的用户重新通过短信或邮件进行交付。 + +#### 发票作废 +- 方法:`nuonuo.OpeMplatform.invoiceCancellation` +- 文档入口:`https://jss.com.cn/open/#/api-doc/common-api?id=100591` +- 作用:退款、撤销或错误开票后的作废处理。 + +### P1:开票前保障接口 + +#### 企业发票余量查询 +- 方法:`nuonuo.OpeMplatform.getInvoiceStock` +- 文档入口:`https://jss.com.cn/open/#/api-doc/common-api?id=100599` +- 作用:检查票源余量,避免无票或票段不足时继续开票。 + +#### 客户端在线状态检测 +- 方法:`nuonuo.OpeMplatform.GetClientStatus` +- 文档入口:`https://jss.com.cn/open/#/api-doc/common-api?id=100598` +- 作用:确认客户端或设备在线状态,是开票前健康检查的重要前置条件。 + +## 统一接入规范 + +### 网关地址 +- 正式环境:`https://sdk.nuonuo.com/open/v1/services` +- 沙箱环境:`https://sandbox.nuonuocs.cn/open/v1/services` + +### 通用消息头 +- `Content-type` +- `X-Nuonuo-Sign` +- `accessToken` +- `userTax` +- `method` + +### 通用消息体 +- `senid` +- `nonce` +- `timestamp` +- `appkey` + +### 平台侧基础凭据 +实施前需准备以下内容: +- `appKey` +- `appSecret` +- `accessToken` +- 销方税号 / 授权税号 +- 如采用客户端设备模式,还需准备分机号、机器编号、部门 ID 等运行态配置 + +## 请求 / 响应字段映射建议 + +### 请求开具发票 + +#### 接口 +`nuonuo.OpeMplatform.requestBillingNew` + +#### 请求结构 +平台私有请求参数顶层为: +- `order: Object` + +即业务字段全部封装在 `order` 对象中。 + +#### 建议内部模型 + +##### 发票主对象 `InvoiceOrder` +- `orderNo`:业务订单号 +- `invoiceType`:开票类型,建议内部固定枚举蓝票/红票 +- `sellerTaxNo`:销方税号 +- `buyerName`:购方名称 +- `buyerTaxNo`:购方税号 +- `buyerAddress`:购方地址 +- `buyerTel`:购方电话 +- `buyerAccount`:购方开户行及账号 +- `email`:交付邮箱 +- `phone`:交付手机号 +- `invoiceLine`:发票类型线别 +- `listFlag`:清单标志 +- `pushMode`:交付方式 +- `departmentId`:部门 ID +- `machineCode`:机器编号 +- `clerkId`:开票员 ID +- `payee`:收款人 +- `remark`:备注 + +##### 发票明细对象 `InvoiceItem` +- `goodsName`:商品名称 +- `goodsCode`:税收分类编码 +- `taxRate`:税率 +- `quantity`:数量 +- `unitPrice`:单价 +- `taxIncludedAmount`:含税金额 +- `taxExcludedAmount`:不含税金额 +- `tax`:税额 +- `invoiceLineProperty`:明细行属性 + +#### 响应字段 +- `invoiceSerialNum`:平台发票流水号 + +#### 建议落库字段 +- `platformInvoiceSerialNum` +- `requestStatus` +- `requestTime` +- `sellerTaxNo` +- `orderNo` + +### 发票列表查询 + +#### 接口 +`nuonuo.OpeMplatform.queryInvoiceList` + +#### 已确认关键请求字段 +- `taxnum`:企业税号 +- `requestType`:查询类型 + - `0`:按发票添加时间查询 + - `1`:按开票时间查询 + - `2`:按发票状态更新时间查询 + +#### 建议内部查询参数 +- `sellerTaxNo` +- `queryMode` +- `startTime` +- `endTime` +- `pageNo` +- `pageSize` +- `invoiceStatus` + +#### 建议响应映射 +- `platformInvoiceSerialNum` +- `invoiceCode` +- `invoiceNo` +- `invoiceType` +- `invoiceStatus` +- `invoiceStatusText` +- `buyerName` +- `buyerTaxNo` +- `totalAmount` +- `taxAmount` +- `invoiceTime` +- `pdfUrl` +- `orderNo` + +### 获取电子发票 PDF + +#### 接口 +`nuonuo.OpeMplatform.getPDF` + +#### 请求字段 +- `invoiceCode`:发票代码,数电票时可为空 +- `invoiceNo`:发票号码,数电票传 20 位号码 + +#### 响应字段 +- `pdfurl`:PDF 地址 + +#### 建议内部映射 +请求: +- `invoiceCode` +- `invoiceNo` + +响应: +- `pdfUrl` +- `fetchedAt` + +### 发票重新交付 + +#### 接口 +`nuonuo.OpeMplatform.deliveryInvoice` + +#### 请求字段 +- `taxnum`:销方税号 +- `invoiceCode`:发票代码,全电发票可为空 +- `invoiceNum`:发票号码 +- `phone`:交付手机号 +- `mail`:交付邮箱 + +约束:手机号和邮箱至少一个非空。 + +#### 响应字段 +- `code` +- `describe` +- `result` + +#### 建议内部映射 +请求: +- `sellerTaxNo` +- `invoiceCode` +- `invoiceNo` +- `deliveryPhone` +- `deliveryEmail` + +响应: +- `deliveryStatus` +- `deliveryMessage` +- `deliveryTime` + +### 发票作废 + +#### 接口 +`nuonuo.OpeMplatform.invoiceCancellation` + +#### 请求字段 +- `invoiceId` +- `invoiceCode` +- `invoiceNo` +- `invalidReason` +- `specificReason` + +其中: +- `invalidReason` 在全电纸票作废时需要传,取值为 `1` 销货退回、`2` 开票有误、`3` 服务中止、`4` 其他 +- `specificReason` 在作废原因为“其他”时填写具体原因 + +#### 响应字段 +- `invoiceId` + +#### 建议内部映射 +请求: +- `platformInvoiceSerialNum` +- `invoiceCode` +- `invoiceNo` +- `cancelReasonCode` +- `cancelReasonText` + +响应: +- `platformInvoiceSerialNum` + +### 企业发票余量查询 + +#### 接口 +`nuonuo.OpeMplatform.getInvoiceStock` + +#### 请求字段 +- `departmentId` +- `extensionNums` +- `machineCode` +- `extMachineCodePairs` + +#### 响应字段 +- `extensionNumber` +- `terminalNumber` +- `invoiceLine` +- `machineCode` +- `remainNum` +- `invoiceNumStart` +- `invoiceNumEnd` +- `updateTime` + +#### 建议内部映射 +- `sellerTaxNo` +- `machineCode` +- `invoiceLine` +- `remainNum` +- `invoiceNumStart` +- `invoiceNumEnd` +- `lastSyncTime` + +### 客户端在线状态检测 + +#### 接口 +`nuonuo.OpeMplatform.GetClientStatus` + +#### 请求字段 +- `sellerTaxNo` +- `extensionNumber` +- `machineCode` + +#### 响应字段 +- `sellerTaxNo` +- `sellerName` +- `extensionNumber` +- `machineCode` +- `clientVersion` +- `onlineStatus`:`0` 不在线,`1` 在线 +- `date` + +#### 建议内部映射 +- `sellerTaxNo` +- `machineCode` +- `extensionNumber` +- `clientVersion` +- `onlineStatus` +- `checkedAt` + +## 业务流程图 + +### 开票主流程 + +```mermaid +flowchart TD + A[业务订单满足开票条件] --> B[检查客户端在线状态] + B -->|不在线| B1[返回不可开票并告警] + B -->|在线| C[检查发票余量] + C -->|无余量或异常| C1[返回不可开票并告警] + C -->|正常| D[组装开票请求 order] + D --> E[调用 requestBillingNew] + E -->|失败| E1[记录失败原因] + E -->|成功| F[保存 invoiceSerialNum] + F --> G[调用 queryInvoiceList 或状态查询] + G -->|未开票完成| G1[轮询或等待回调] + G -->|开票完成| H[调用 getPDF] + H --> I[保存 pdfUrl] + I --> J[交付给用户] + J --> K[结束] +``` + +### 补发流程 + +```mermaid +flowchart TD + A[用户未收到发票] --> B[查到已开票记录] + B --> C[收集手机号或邮箱] + C --> D[调用 deliveryInvoice] + D -->|成功| E[记录补发成功] + D -->|失败| F[记录失败原因并转人工处理] +``` + +### 作废流程 + +```mermaid +flowchart TD + A[订单退款或撤销或开票错误] --> B[查询发票记录] + B --> C[确认 invoiceId invoiceCode invoiceNo] + C --> D[调用 invoiceCancellation] + D -->|成功| E[更新作废申请状态] + D -->|失败| F[记录失败原因] +``` + +## 错误码处理策略 + +### A 类:参数错误,直接拦截 +典型错误码: +- `E4000` +- `E9101` +- `E9102` +- `E9104` +- `E9106` + +处理建议: +- 不重试 +- 记录请求校验失败 +- 直接返回调用方明确提示 + +### B 类:资质或权限错误,升级处理 +典型错误码: +- `E9301` +- `E9302` +- `E9338` +- `E9513` +- `E9548` +- `E1001` + +处理建议: +- 不自动重试 +- 标记为配置或权限异常 +- 通知实施、运维或平台管理员处理 + +### C 类:业务状态异常,需要人工介入 +典型场景: +- 发票不存在 +- 发票不可重复冲红 +- 发票不能重新交付 +- 平台返回 `E9999` 且语义为业务错误 + +处理建议: +- 记录完整请求参数与上下文 +- 进入人工处理队列 + +### D 类:环境与设备状态异常 +典型场景: +- 客户端不在线 +- 分机号错误 +- 票源余量不足 + +处理建议: +- 在开票前即拦截 +- 不进入正式开票流程 +- 发出运行告警 + +### 建议错误处理表 + +| 错误类型 | 是否重试 | 是否告警 | 是否人工介入 | +| --- | --- | --- | --- | +| 参数错误 | 否 | 否 | 否 | +| 企业资质/权限错误 | 否 | 是 | 是 | +| 发票不存在 | 否 | 否 | 是 | +| 客户端离线 | 否 | 是 | 是 | +| 库存不足 | 否 | 是 | 是 | +| 平台系统错误 | 有限重试 | 是 | 视情况 | + +### 建议重试策略 +仅对明显的平台瞬时失败做有限重试: +- 最多 2~3 次 +- 使用指数退避 +- 对参数错误、资质错误、业务状态错误不重试 + +## 沙箱测试清单 + +### 环境准备 +- [ ] 获取沙箱 `appKey` +- [ ] 获取沙箱 `appSecret` +- [ ] 获取沙箱 `accessToken` +- [ ] 确认沙箱测试税号 +- [ ] 确认已开通 API 开票权限 +- [ ] 确认测试设备、分机号、机器编号 + +### 接口连通性 +- [ ] 成功调用统一网关 +- [ ] 签名计算正确 +- [ ] `accessToken` 可用 +- [ ] `userTax` 配置正确 + +### 开票前检查 +- [ ] `GetClientStatus` 返回在线 +- [ ] `getInvoiceStock` 返回库存信息 +- [ ] 分机号与机器编号识别正确 + +### 开票测试 +- [ ] 成功开具一张蓝票 +- [ ] 返回 `invoiceSerialNum` +- [ ] 发票列表可查到该票 +- [ ] PDF 地址获取成功 +- [ ] 邮箱交付成功 +- [ ] 手机交付成功 + +### 异常测试 +- [ ] 缺少必填字段触发 `E4000` +- [ ] 错误税号触发资质或权限异常 +- [ ] 错误发票号获取 PDF 失败 +- [ ] 错误发票号重新交付失败 +- [ ] 错误发票号作废失败 + +### 作废测试 +- [ ] 正常作废成功 +- [ ] 返回新的 `invoiceId` +- [ ] 作废后列表状态与平台侧一致 + +### 结果核验 +- [ ] 业务订单号与平台流水号绑定成功 +- [ ] PDF 地址成功保存 +- [ ] 错误日志与请求日志完整 +- [ ] 所有请求报文可追踪 +- [ ] 沙箱字段模型与正式环境字段模型保持一致 + +## 建议的数据落库字段 + +### 发票主表 +- `order_no` +- `seller_tax_no` +- `buyer_name` +- `buyer_tax_no` +- `invoice_type` +- `invoice_code` +- `invoice_no` +- `platform_invoice_serial_num` +- `invoice_status` +- `invoice_status_text` +- `pdf_url` +- `total_amount` +- `tax_amount` +- `invoice_time` +- `created_at` +- `updated_at` + +### 平台交互日志表 +- `request_id` +- `method` +- `request_headers_masked` +- `request_body` +- `response_body` +- `response_code` +- `success_flag` +- `error_message` +- `created_at` + +### 交付记录表 +- `invoice_id` +- `delivery_type` +- `delivery_target` +- `delivery_status` +- `delivery_message` +- `delivery_time` + +## 实施建议 + +### 第一阶段 +优先打通: +- 在线状态检测 +- 余量查询 +- 请求开票 +- 列表查询 +- PDF 获取 + +### 第二阶段 +补齐: +- 重新交付 +- 作废 + +### 第三阶段 +再扩展: +- 回调与轮询优化 +- 自动重试 +- 监控与告警 +- 对账与审计 + +## 当前明确结论 + +福建水务营收系统对接诺税通 saas 时,应以以下方法名作为首期实施主入口: +- `nuonuo.OpeMplatform.requestBillingNew` +- `nuonuo.OpeMplatform.queryInvoiceList` +- `nuonuo.OpeMplatform.getPDF` +- `nuonuo.OpeMplatform.deliveryInvoice` +- `nuonuo.OpeMplatform.invoiceCancellation` +- `nuonuo.OpeMplatform.getInvoiceStock` +- `nuonuo.OpeMplatform.GetClientStatus` + +不再以通用 `ElectronInvoice` 接口组作为主实施口径。

T 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