接口说明
用于诺税通Saas订单开票模块的企业原始订单创建,创建成功的订单,可人工在诺税通销项应用页面中进行原始订单拆分合并开具发票。
API 方法名:nuonuo.OpeMplatform.saveOrder 版本:V2.0
请求地址
| 环境 | 请求地址 |
|---|
| 正式环境 | https://sdk.nuonuo.com/open/v1/services |
| 沙箱环境 | https://sandbox.nuonuocs.cn/open/v1/services |
公共请求参数(消息头)
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| Content-type | String | 否 | - | MIME类型【消息头】 | - |
公共请求参数(消息体)
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| senid | String | 否 | - | 唯一标识,由企业自己生成32位随机码【消息体】 | - |
私有请求参数
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| orderType | String | 否 | 1 | 订单类型:1销售单,2退货单 | 1 |
| autoInvoiceFlag | String | 是 | - | 是否自动开票(false:订单只入库; true:订单入库后自动完成开票全流程 ;只能传false或true,不传默认false) | false |
| repeatCall | String | 是 | - | 订单号重复时的处理方式(0:报错 1:覆盖原订单,仅订单状态为待处理时可以覆盖;不传默认0) | 1 |
| orderInfo | Object | 否 | - | 订单基础信息 | - |
| └ originalOrderNo | String | 否 | 64 | 订单编号:支持字母、数字、英文符号 | 1234567890 |
| └ addDate | String | 是 | 50 | 下单时间(年月日时分秒 格式yyyy-MM-dd HH:mm:ss)若无下单时间自动添加当前时间 | 2022-03-25 14:20:30 |
| └ invoiceLine | String | 否 | 2 | 发票种类(只能传 p:普通发票(电票) c:普通发票(纸票) s:专用发票(纸票) b:专用发票(电子) e:收购发票(电票) f:收购发票(纸质) r:普通发票(卷式) bs:数电专票(电子) pc:数电普票(电子) es:数电专票(纸质) ec:数电普票(纸质)中的 一种) | p |
| └ specificFactor | String | 是 | 2 | 0普通发票(默认)、1 成品油、4 货物运输、05不动产销售、6 不动产租赁、26 金银首饰批发、27 金银首饰零售、35 矿产品 | 0 |
| └ saleTaxNum | String | 是 | 20 | 销方税号(字母+数字 6-20字符),与companyCode不能同时为空 | 1234567890111111 |
| └ saleAddress | String | 是 | 80 | 销方地址,不传时去开票默认取系统内开票信息中配置的 | - |
| └ salePhone | String | 是 | 20 | 销方电话,不传时去开票默认取系统内开票信息中配置的 | - |
| └ saleAccount | String | 是 | 100 | 销方开户行及账号,不传时去开票默认取系统内开票信息中配置的 | - |
| └ buyerName | String | 是 | 100 | 客户名称,和customerCode二者必需传1个,优先取buyerName | 大菠萝网络科技有限公司 |
| └ naturalPersonFlag | String | 是 | 2 | 购买方(客户)自然人标记,1是、0否,为空默认0,仅票种为pc时支持传入 | 1 |
| └ taxNum | String | 是 | 20 | 购方税号或个人证件号码 | 913303456M48F34532 |
| └ account | String | 是 | 150 | 开户行及账号 | - |
| └ address | String | 是 | 100 | 客户地址 | - |
| └ telephone | String | 是 | 20 | 客户电话 | - |
| └ phone | String | 是 | 20 | 交付手机,退货单开专票和数电发票时,固定取原蓝票的,可不传 | 18399887766 |
| └ email | String | 是 | 50 | 交付邮箱,退货单开专票和数电发票时,固定取原蓝票的,可不传 | nuonuowang@qq.com |
| └ ccPhone | String | 是 | 100 | 抄送手机,多个时用英文逗号隔开,最多支持5个,必须在phone字段有值时,才支持传入 | 18399887766,18399882211 |
| └ ccEmail | String | 是 | 250 | 抄送邮箱,多个时用英文逗号隔开,最多支持5个,必须在email字段有值时,才支持传入 | nuonuowang@qq.com,hahaha@qq.com |
| └ customerCode | String | 是 | 50 | 客户编码,和customerCode二者必需传1个,优先取buyerName | 12345678 |
| └ orderRemark | String | 是 | 200 | 订单备注 | - |
| └ remark | String | 是 | 230 | 发票备注,票种为数电票时为200字符 | - |
| └ relateSaleOrderNo | String | 是 | 64 | 原销售订单编号(退货单选填,销售单不生效) | - |
| └ salesperson | String | 是 | 20 | 销售员 | - |
| └ issuanceDate | String | 是 | - | 发货日期(年月日 yyyy-MM-dd) | 2022-05-25 |
| └ clerk | String | 是 | 20 | 开票员 | - |
| └ payee | String | 是 | 20 | 收款人 | - |
| └ checker | String | 是 | 20 | 复核人 | - |
| └ callbackUrl | String | 是 | - | 回调通知地址 | - |
| └ yfpdm | String | 是 | 12 | 原发票代码,退货单自动开票时,原发票代码不能为空 | - |
| └ yfphm | String | 是 | 8 | 原发票号码,退货单自动开票时,原发票号码不能为空 | - |
| └ oldAllElectronicInvoiceNumber | String | 是 | 20 | 原数电票号码,退货单自动开票且原蓝票为数电电票时,原数电票号码不能为空 | - |
| └ deptId | String | 是 | - | 订单所属部门id,传诺诺网的部门id | - |
| └ clerkId | String | 是 | - | 订单所属票员id,传诺诺网开票员id | - |
| └ bField1 | String | 是 | 200 | 自定义字段1,需开通自定义字段功能 | - |
| └ bField2 | String | 是 | 200 | 自定义字段2 | - |
| └ bField3 | String | 是 | 200 | 自定义字段3 | - |
| └ extensionNumber | String | 是 | 5 | 分机号(当autoInvoiceFlag为true时根据分机号,机器编号,终端号查找开票设备) | 1 |
| └ machineCode | String | 是 | 12 | 机器编号(当autoInvoiceFlag为true时根据分机号,机器编号,终端号查找开票设备 | 123456654321 |
| └ terminalNumber | String | 是 | 4 | 终端号(当autoInvoiceFlag为true时根据分机号,机器编号,终端号查找开票设备 | - |
| └ companyCode | String | 是 | 20 | 组织编码,saleTaxNum不传时,根据该字段匹配在诺税通工作台基础模块维护的组织编码,获得对应的销方税号;二者都传时,取saleTaxNum;有值时,topSaleTaxNum必传 | 123456 |
| └ deptCode | String | 是 | 50 | 部门编码,根据该字段匹配在诺税通工作台基础模块维护的部门编码,获取订单对应的所属部门;优先取deptId | 123 |
| └ userCode | String | 是 | 64 | 用户编码,根据该字段匹配在诺税通工作台基础模块维护的用户编码,获取订单对应的所属用户;优先取userId | 123456789 |
| └ topSaleTaxNum | String | 是 | 20 | 顶级公司税号,saleTaxNum不传,且companyCode有值时,必传 | 150301199811285326 |
| orderOriginalDetails | Array | 否 | - | 商品列表 | - |
| └ rowNo | String | 是 | 64 | 行编号(非序号,可与自身业务系统内唯一编号对应,订单内唯一) | - |
| └ goodsName | String | 否 | 90 | 商品名称 | - |
| └ spec | String | 是 | 40 | 规格型号 | - |
| └ unit | String | 是 | 22 | 单位(当成品油标志为1时,需为升或吨) | - |
| └ num | String | 是 | 16 | 数量,销售单传入正数,退货单传入负数 2、包含小数点最长不超过16位(小数点后最多13位),超出自动截取。数量、单价必须都不填,或者都必填。当数量、单价都不填时,金额必填 | 12 |
| └ price | String | 是 | 16 | 单价,包含小数点最长不超过16位(小数点后最多13位),超出自动截取。数量、单价必须都不填,或者都必填。当数量、单价都不填时,金额必填 | 12 |
| └ taxRate | String | 是 | - | 税率 | 0.13 |
| └ tax | String | 是 | 15 | 税额,若自行传入时,折扣zke有值,请传未扣除折扣前的税额,折扣减掉的税额系统自动根据税率计算 | 5.23 |
| └ taxAmount | String | 否 | 15 | 金额 1、不能为0 2、销售订单传入正数,退货单传入负数 3、当数量、单价都不填时,金额必填 | 22.34 |
| └ hsbz | String | 否 | - | 含税标志:(0:否,1:是) | - |
| └ spbm | String | 是 | - | 税收分类编码(没传,会根据商品名称和规格型号,去商品库匹配,若商品库未匹配成功,则会去税收分类编码表匹配) | - |
| └ yhzcbs | String | 是 | 1 | 是否享受优惠政策:(0:否,1:是) | - |
| └ zzstsgl | String | 是 | - | 优惠政策类型,当是否享受优惠政策为是时,优惠政策类型必填 | - |
| └ zke | String | 是 | 15 | 折扣金额(当该商品开折扣发票时传入;退货单时传入负数,且会用金额-折扣,跟税率重算税额后入库,建议退货单时不传,自行减掉折扣后传入) | 3.34 |
| └ discountTax | String | 是 | 15 | 折扣税额(当该商品开折扣发票时传入;如果不传入,系统会自动算出;如果传入值符合开票要求,则采用传入值) | 0.43 |
| └ lslbs | String | 是 | 1 | 零税率标识1-免税 ,2-不征税, 3-其他优惠政策(普通0税率); 1、当税率为:0%,且增值税特殊管理:为“免税”, 零税率标识:需传“1” 2、当税率为:0%,且增值税特殊管理:为"不征税" 零税率标识:需传“2” 3、当税率为:0%,且增值税特殊管理:为空 零税率标识:需传“3” | - |
| └ dField1 | String | 是 | 200 | 商品明细自定义字段1 | - |
| └ dField2 | String | 是 | 200 | 商品明细自定义字段2 | - |
| └ dField3 | String | 是 | 200 | 商品明细自定义字段3 | - |
| └ dField4 | String | 是 | 200 | 商品明细自定义字段4 | - |
| └ dField5 | String | 是 | 200 | 商品明细自定义字段5 | - |
| invoiceGoodsTransports | Array | 是 | - | 货物运输信息列表,specificFactor为4且为销售单时,以下字段必传 | - |
| └ transportTool | String | 是 | 1 | 运输工具种类:1 铁路运输、2 公路运输、3 水路运输、4 航空运输、5 管道运输、6 其他运输工具 | 1 |
| └ transportToolNum | String | 是 | 40 | 运输工具牌号 | 浙A12345 |
| └ origin | String | 是 | 80 | 起运地 | 浙江省杭州市西湖区xxxxx |
| └ destination | String | 是 | 80 | 到达地 | 浙江省杭州市余杭区xxxxx |
| └ goodsName | String | 是 | 80 | 运输货物名称 | 苹果 |
| realPropertyRentInfo | Object | 是 | - | 开具不动产租赁特定要素的数电票才需要传(specificFactor为6时),其他特定业务时不入库。 | - |
| └ realPropertyAddress | String | 是 | - | 不动产地址(传对应省市区中文名称--需与行政区划名称一致) | - |
| └ detailAddress | String | 是 | 120 | 详细地址(不动产地址+详细地址 总长度最大120字符,且必须包含 街、路、村、乡、镇、道 关键词) | - |
| └ rentStartDate | String | 是 | - | 租赁开始日期(不能晚于租赁结束日期) | 2023-01-01 |
| └ rentEndDate | String | 是 | - | 租赁结束日期(不能早于租赁开始日期) | 2023-01-30 |
| └ crossCityFlag | String | 是 | 2 | 跨地(市)标志(0-否 1-是) | - |
| └ realPropertyCertificate | String | 是 | 40 | 产权证书/不动产权证号 | - |
| └ unit | String | 是 | 2 | 面积单位(只能选其中一种:1 平方千米、2 平方米、3 公顷、4 亩、5 hm²、6 km²、7 m²) | - |
| realPropertySellInfo | Object | 是 | - | 开具不动产销售特定要素的数电票才需要传(specificFactor为05),其他特定业务时不入库。 | - |
| └ realPropertyAddress | String | 是 | - | 不动产地址(传对应省市区中文名称--需与行政区划名称一致) | - |
| └ detailAddress | String | 是 | - | 详细地址(不动产地址+详细地址 总长度最大120字符,且必须包含 街、路、村、乡、镇、道 关键词) | - |
| └ crossCityFlag | String | 是 | - | 跨地(市)标志(0-否 1-是) | - |
| └ realPropertyCertificate | String | 是 | - | 产权证书/不动产权证号 | - |
| └ unit | String | 是 | - | 面积单位(只能选其中一种:1 平方千米、2 平方米、3 公顷、4 亩、5 hm²、6 km²、7 m²) | - |
| └ realPropertyContractNumbe | String | 是 | - | 实际字段名称为realPropertyContractNumber,由于长度限制展示不全。不动产单元代码/网签合同备案编号 | - |
| └ incrementTaxNumber | String | 是 | - | 土地增值税项目编号 | - |
| └ price | String | 是 | - | 核定计税价格 | - |
| └ taxAmount | String | 是 | - | 实际成交含税金额(当核定计税价格有值时必填) | - |
| invoiceBuildingBaseInfo | Object | 是 | - | 开具建筑服务特定要素的数电票才需要传(specificFactor为03),其他特定业务时不入库。 | - |
| └ buildingAddress | String | 是 | - | 建筑服务发生地,传入省市区中文名称,需与行政区划名称一致 | - |
| └ detailedAddress | String | 是 | 120 | 详细地址(建筑服务发生地与详细地址的长度加起来不超过120个字符) | - |
| └ landVatItemNo | String | 是 | 16 | 土地增值税项目编号 | - |
| └ itemName | String | 是 | 80 | 项目名称 | - |
| └ crossCityFlag | String | 是 | 1 | 跨地(市)标志(0-否,1-是) | - |
| invoiceTravellerTransport | Object | 是 | - | 完整字段名:invoiceTravellerTransportInfoList,specificFactor传9时,需要传旅客运输服务相关信息 | - |
| └ traveller | String | 是 | 20 | 出行人 | 出行人1 |
| └ travelDate | String | 是 | 20 | 出行日期,必须满足XXXX-XX-XX格式 | 2022-12-12 |
| └ travellerCardType | String | 是 | 5 | 出行人证件类型,例如:201居民身份证 | 201 |
| └ travellerCardNo | String | 是 | 20 | 出行人证件号码 | - |
| └ travelPlace | String | 是 | 80 | 出发地 | 出发地 |
| └ arrivePlace | String | 是 | 80 | 到达地 | 到达地 |
| └ vehicleType | String | 是 | 1 | 交通工具类型, 1-飞机,2-火车,3-长途汽车,4-公共交通,5-出租车,6-汽车,7-船舶,9-其他 | 2 |
| └ vehicleLevel | String | 是 | 20 | 当vehicleType为1(飞机)时,vehicleLevel必传,只能是公务舱、头等舱、经济舱;当vehicleType为2(火车)时,vehicleLevel必传,只能是一等座、二等座、软席(软座、软卧)、硬卧(硬座、硬卧);当vehicleType为7(船舶)时,vehicleLevel必传,只能是一等舱、二等舱、三等舱 | 一等座 |
响应参数
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| status | String | 否 | - | 状态码 | 0000 |
| message | String | 否 | - | 描述信息 | 调用成功 |
请求报文示例
NNOpenSDK sdk = NNOpenSDK.getIntance();
String taxnum = "23***789"; // 授权企业税号
String appKey = "Hn***XL";
String appSecret = "F65***65F";
String method = "nuonuo.OpeMplatform.saveOrder"; // API方法名
String token = "2d484e**************pdui"; // 访问令牌
String content = "{
\"invoiceBuildingBaseInfo\": {
\"buildingAddress\": \"\",
\"crossCityFlag\": \"\",
\"itemName\": \"\",
\"landVatItemNo\": \"\",
\"detailedAddress\": \"\"
},
\"orderType\": \"1\",
\"invoiceGoodsTransports\": [
{
\"origin\": \"浙江省杭州市西湖区xxxxx\",
\"transportTool\": \"1\",
\"transportToolNum\": \"浙A12345\",
\"destination\": \"浙江省杭州市余杭区xxxxx\",
\"goodsName\": \"苹果\"
}
],
\"invoiceTravellerTransport\": {
\"travellerCardType\": \"201\",
\"arrivePlace\": \"到达地\",
\"travelDate\": \"2022-12-12\",
\"travelPlace\": \"出发地\",
\"vehicleLevel\": \"一等座\",
\"travellerCardNo\": \"\",
\"traveller\": \"出行人1\",
\"vehicleType\": \"2\"
},
\"autoInvoiceFlag\": \"false\",
\"realPropertySellInfo\": {
\"realPropertyAddress\": \"\",
\"crossCityFlag\": \"\",
\"realPropertyCertificate\": \"\",
\"unit\": \"\",
\"realPropertyContractNumbe\": \"\",
\"price\": \"\",
\"incrementTaxNumber\": \"\",
\"detailAddress\": \"\",
\"taxAmount\": \"\"
},
\"orderInfo\": {
\"terminalNumber\": \"\",
\"naturalPersonFlag\": \"1\",
\"salePhone\": \"\",
\"orderRemark\": \"\",
\"customerCode\": \"12345678\",
\"clerkId\": \"\",
\"remark\": \"\",
\"checker\": \"\",
\"userCode\": \"123456789\",
\"payee\": \"\",
\"yfphm\": \"\",
\"issuanceDate\": \"2022-05-25\",
\"yfpdm\": \"\",
\"invoiceLine\": \"p\",
\"callbackUrl\": \"\",
\"taxNum\": \"913303456M48F34532\",
\"topSaleTaxNum\": \"150301199811285326\",
\"specificFactor\": \"0\",
\"email\": \"nuonuowang@qq.com\",
\"companyCode\": \"123456\",
\"address\": \"\",
\"machineCode\": \"123456654321\",
\"ccEmail\": \"nuonuowang@qq.com,hahaha@qq.com\",
\"saleTaxNum\": \"1234567890111111\",
\"deptId\": \"\",
\"telephone\": \"\",
\"buyerName\": \"大菠萝网络科技有限公司\",
\"addDate\": \"2022-03-25 14:20:30\",
\"clerk\": \"\",
\"originalOrderNo\": \"1234567890\",
\"salesperson\": \"\",
\"bField1\": \"\",
\"phone\": \"18399887766\",
\"bField3\": \"\",
\"extensionNumber\": \"1\",
\"saleAccount\": \"\",
\"bField2\": \"\",
\"saleAddress\": \"\",
\"relateSaleOrderNo\": \"\",
\"oldAllElectronicInvoiceNumber\": \"\",
\"account\": \"\",
\"ccPhone\": \"18399887766,18399882211\",
\"deptCode\": \"123\"
},
\"realPropertyRentInfo\": {
\"realPropertyAddress\": \"\",
\"crossCityFlag\": \"\",
\"realPropertyCertificate\": \"\",
\"unit\": \"\",
\"rentEndDate\": \"2023-01-30\",
\"detailAddress\": \"\",
\"rentStartDate\": \"2023-01-01\"
},
\"repeatCall\": \"1\",
\"orderOriginalDetails\": [
{
\"rowNo\": \"\",
\"dField1\": \"\",
\"dField3\": \"\",
\"yhzcbs\": \"\",
\"zzstsgl\": \"\",
\"dField2\": \"\",
\"dField5\": \"\",
\"num\": \"12\",
\"dField4\": \"\",
\"tax\": \"5.23\",
\"discountTax\": \"0.43\",
\"spec\": \"\",
\"taxRate\": \"0.13\",
\"lslbs\": \"\",
\"unit\": \"\",
\"hsbz\": \"\",
\"zke\": \"3.34\",
\"price\": \"12\",
\"taxAmount\": \"22.34\",
\"goodsName\": \"\",
\"spbm\": \"\"
}
]
}";
String url = "https://sdk.nuonuo.com/open/v1/services"; // SDK请求地址
String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
System.out.println(result);
返回码说明
| 返回码 | 说明 | 处理建议 |
|---|
N9344 | 销方税号不能为空 | 检查参数请求头中businessTaxNum是否正确 |
N9302 | 身份认证与当前企业税号不相符 | 检查参数请求头中businessTaxNum是否正确 |
N9513 | 企业资质不存在或已关闭 | 检查参数请求头中businessTaxNum是否正确 |
N9559 | 发票类型不匹配或为空 | 检查发票类型是否配置正确 |
N9240 | 成品油标志只能为0和1 | 检查成品油标志是否正确配置 |
N9539 | 销方税号只支持15-20位 | 检查销方税号的长度是否正确 |
N9307 | 税号只能包含数字和字母 | 检查销方税号的格式是否正确 |
N9304 | 购方名称不能为空 | 检查购方名称是否正确 |
N9337 | 开票员长度不能超过20位 | |
N9320 | 收款员长度不能超过20位 | |
N9321 | 复核人长度不能超过20位 | |
N9376 | 优惠政策标识只能为:[0,1] | |
N9381 | 单价含税标志只能为0或1 | |
N9584 | (商品数量+含税单价)和含税金额选一必传 | |