接口说明
开通了诺税通saas的企业可以通过该接口对非增值税发票进行报销操作
根据传入非增值税发票信息,操作发票信息。
根据传入的参数判断是否进行各种信息的操作
根据invoiceNumber+ invoiceLine+税号 判断此发票是否已存在,如果是已存在发票放弃传入的票面信息。
如果发票类型为出租车发票或定额发票,通过invoiceLine+invoiceCode+invoiceNumber判断此发票是否存在。
API 方法名:nuonuo.OpeMplatform.nonVatInvoiceOperate 版本:V2.0
请求地址
| 环境 | 请求地址 |
|---|
| 正式环境 | https://sdk.nuonuo.com/open/v1/services |
| 沙箱环境 | https://sandbox.nuonuocs.cn/open/v1/services |
公共请求参数(消息头)
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| Content-type | String | 否 | - | MIME类型【消息头】 | - |
公共请求参数(消息体)
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| senid | String | 否 | - | 唯一标识,由企业自己生成32位随机码【消息体】 | - |
私有请求参数
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| invoiceLine | String | 否 | 2 | 发票种类 hc火车票、qc客运汽车票、fj机票行程单、ky客运费、cz出租车票、de定额发票,jd通用机打发票,dz通用电子发票,pz完税凭证,fi 财政票据(电子) | fj |
| invoiceNumber | String | 是 | - | 发票号码 支持数字、大小写字母。可作为唯一识别,防重复,最大字符数放到20。 | strin13 |
| invoiceCode | String | 是 | - | 发票代码 只支持数字 出租车和定额发票,通用机打,通用电子发票必传 | - |
| taxNum | String | 否 | 20 | 企业税号 | 91330106MA2AYNWD8M |
| delete | String | 是 | - | 0:不删除,1:删除。默认值0。 存在归集人手机号时根据归集人手机号删除归集人记录不删除发票,不存在则删除发票 | 1 |
| collectionPhone | String | 是 | 64 | 归集人手机号 | 1888888888 |
| collectionName | String | 是 | 32 | 归集人名称 | 张三 |
| collectionTime | String | 是 | 20 | 归集时间 | 2021-02-02 00:00:00 |
| checkInfo | Object | 是 | - | 抵扣信息,为空时不处理抵扣动作 | - |
| └ checkState | Number | 是 | 1 | 抵扣状态:0:未抵扣 1:已抵扣, 默认为0(已勾选发票不能重复勾选) | 0 |
| └ deductiblePeriod | String | 是 | 8 | 抵扣属期 操作类型为已抵扣时为必填。格式:“yyyyMM” | 202101 |
| └ taxCredit | Number | 是 | 15 | 抵扣税额,保留小数点后两位。不能超出发票税额,不能小于0。jd机打发票,dz通用电子发票不能超过合计金额*10% | 0 |
| invoiceInfo | Object | 否 | - | 发票信息,发票不存在时使用传入的发票信息写入计算抵扣,已存在时不写入 | - |
| └ arrivalStation | String | 是 | 50 | 目的地 | string |
| └ departureStation | String | 是 | 50 | 出发地 | string |
| └ fileUrl | String | 是 | 255 | 源文件url | string |
| └ filePosition | String | 是 | 80 | 图像坐标 | string |
| └ fuelSurcharge | Number | 是 | 15 | 燃油附加费 机票行程单可填,其他为空,保留小数点后两位。 | 10 |
| └ invoiceLine | String | 否 | - | 发票种类 hc火车票、qc客运汽车票、fj机票行程单、ky客运费、cz出租车票、de定额发票,pz完税凭证,jd机打发票,dz通用电子发票 | fj |
| └ invoiceNumber | String | 是 | 20 | 发票号码 支持数字、大小写。可作为唯一识别,防重复,最大字符数放到20。发票种类为PZ时,此值为红字编码 | strin13 |
| └ invoiceCode | String | 是 | 12 | 发票代码 出租车票和定额发票,机打发票,通用电子发票必传,通过代码号码作为唯一识别 | - |
| └ invoiceTime | String | 否 | 10 | 乘车日期/开票日期(格式yyyy-MM-dd) | 2021-09-22 |
| └ passengerName | String | 是 | 50 | 旅客姓名和发票号码2选1 必填 | string3 |
| └ fare | String | 否 | 15 | 票价。保留小数点后两位(机票时fare为票价不包含基建、燃油费)。 | - |
| └ price | Number | 否 | 15 | 总价。保留小数点后两位(机票时price为总价包含基建、燃油费等)。发票种类为pz时,此值为计税金额 | 10 |
| └ taxNum | String | 是 | - | 企业税号 | 91330106MA2AYNWD8M |
| └ taxRate | String | 是 | 10 | 税率(税率或税额2选1必填) | 3% |
| └ taxAmount | String | 是 | - | 税额(税率或税额2选1必填) | - |
| └ toolsNumber | String | 是 | 50 | 车次/航班号 | string |
| └ mileage | String | 是 | 50 | 出租车票 里程 | - |
| └ boardingTime | String | 是 | 20 | 出租车票 上车时间yyyy-MM-dd HH:mm | 2021-01-01 10:11 |
| └ alightingTime | String | 是 | 20 | 出租车票 下车时间yyyy-MM-dd HH:mm | 2021-01-01 11:12 |
| └ customField1 | String | 是 | - | 50 | 自定义字段1 |
| └ customField2 | String | 是 | - | 50 | 自定义字段2 |
| └ customField3 | String | 是 | - | 50 | 自定义字段5 |
| └ customField4 | String | 是 | - | 50 | 自定义字段4 |
| └ customField5 | String | 是 | - | 50 | 自定义字段5 |
| └ customField6 | String | 是 | - | 50 | 自定义字段6 |
| └ customField7 | String | 是 | - | 50 | 自定义字段7 |
| └ customField8 | String | 是 | - | 50 | 自定义字段8 |
| └ customField9 | String | 是 | - | 50 | 自定义字段9 |
| └ customField10 | String | 是 | - | 50 | 自定义字段10 |
| reimbursementInfo | Object | 是 | - | 报销信息,为空时不处理报销动作 | - |
| └ operationTime | String | 是 | - | 报销时间,报销必填,大于等于发票的开票时间 小于等于当前时间 | 2021-09-23 00:00:00 |
| └ reimbursementAmount | Number | 是 | 15 | 报销金额,报销必填,大于等于0 小于等于发票金额 | 0.01 |
| └ reimbursementName | String | 是 | 50 | 报销人名称 | string |
| └ reimbursementNo | String | 是 | 30 | 报销单号 | string |
| └ departmentId | String | 是 | - | 报销部门id | string |
| └ reimbursementType | Number | 是 | - | 报销类型 | 1 |
| └ reimbursementTypeDesc | String | 是 | 100 | 报销类型描述 | 110 |
| └ reimbursementState | Number | 是 | 1 | 报销状态,0 取消报销,1报销(已报销发票不能重复报销),2编辑报销,默认值1 | 1 |
| └ remark | String | 是 | 100 | 报销备注 | string |
| └ voucherNo | String | 是 | 30 | 凭证号,凭证日期不为空时,凭证号也不能为空 | string |
| └ voucherCreateTime | String | 是 | 10 | 凭证日期 | 2021-01-01 |
| └ voucherTax | String | 是 | 15 | 凭证税额 | 100.25 |
| signInfo | Object | 是 | - | 签收信息,为空时不处理签收动作 | - |
| └ signVoucherNo | String | 是 | 60 | 记账凭证号:30个字或60个字符,凭证日期不为空时,凭证号也不能为空 | string |
| └ voucherCreateTime | String | 是 | 10 | 凭证日期 | 2021-01-01 |
| └ voucherTax | String | 是 | 15 | 凭证税额 | 100.25 |
| └ taxCalculationType | Number | 是 | 2 | 计税方式1:全额抵扣、2:不可抵扣、3:计算抵扣、4:加计抵扣 | 1 |
| └ callBackUrl | String | 是 | 255 | 回调地址 | - |
响应参数
| 参数名 | 类型 | 必填 | 长度 | 说明 | 示例 |
|---|
| code | String | 否 | - | | 200 |
| message | String | 否 | - | | 成功 |
| data | Object | 否 | - | | - |
| └ reimburseResponse | Object | 否 | - | | - |
| └ code | String | 否 | - | | 200 |
| └ message | String | 否 | - | | 成功 |
| └ deductibleResponse | Object | 否 | - | | - |
| └ code | String | 否 | - | | 200 |
| └ message | String | 否 | - | | 成功 |
| └ signInfo | Object | 否 | - | | - |
| └ code | String | 否 | - | | 200 |
| └ message | String | 否 | - | | 成功 |
| └ invoiceInfo | Object | 否 | - | | - |
| └ code | String | 否 | - | | 200 |
| └ message | String | 否 | - | | 成功 |
请求报文示例
NNOpenSDK sdk = NNOpenSDK.getIntance();
String taxnum = "23***789"; // 授权企业税号
String appKey = "Hn***XL";
String appSecret = "F65***65F";
String method = "nuonuo.OpeMplatform.nonVatInvoiceOperate"; // API方法名
String token = "2d484e**************pdui"; // 访问令牌
String content = "{
\"invoiceInfo\": {
\"customField5\": \"自定义字段5\",
\"passengerName\": \"string3\",
\"fare\": \"\",
\"customField6\": \"自定义字段6\",
\"customField7\": \"自定义字段7\",
\"customField8\": \"自定义字段8\",
\"invoiceTime\": \"2021-09-22\",
\"customField1\": \"自定义字段1\",
\"customField2\": \"自定义字段2\",
\"customField3\": \"自定义字段5\",
\"customField4\": \"自定义字段4\",
\"toolsNumber\": \"string\",
\"arrivalStation\": \"string\",
\"boardingTime\": \"2021-01-01 10:11\",
\"price\": 10,
\"invoiceNumber\": \"strin13\",
\"fileUrl\": \"string\",
\"invoiceLine\": \"fj\",
\"departureStation\": \"string\",
\"taxNum\": \"91330106MA2AYNWD8M\",
\"customField9\": \"自定义字段9\",
\"mileage\": \"\",
\"customField10\": \"自定义字段10\",
\"alightingTime\": \"2021-01-01 11:12\",
\"invoiceCode\": \"\",
\"taxRate\": \"3%\",
\"filePosition\": \"string\",
\"fuelSurcharge\": 10,
\"taxAmount\": \"\"
},
\"signInfo\": {
\"callBackUrl\": \"\",
\"taxCalculationType\": 1,
\"voucherTax\": \"100.25\",
\"voucherCreateTime\": \"2021-01-01\",
\"signVoucherNo\": \"string\"
},
\"collectionTime\": \"2021-02-02 00:00:00\",
\"invoiceNumber\": \"strin13\",
\"invoiceLine\": \"fj\",
\"checkInfo\": {
\"deductiblePeriod\": \"202101\",
\"checkState\": 0,
\"taxCredit\": 0
},
\"taxNum\": \"91330106MA2AYNWD8M\",
\"reimbursementInfo\": {
\"reimbursementType\": 1,
\"voucherNo\": \"string\",
\"reimbursementTypeDesc\": \"110\",
\"reimbursementNo\": \"string\",
\"departmentId\": \"string\",
\"voucherTax\": \"100.25\",
\"voucherCreateTime\": \"2021-01-01\",
\"reimbursementAmount\": 0.01,
\"remark\": \"string\",
\"reimbursementName\": \"string\",
\"reimbursementState\": 1,
\"operationTime\": \"2021-09-23 00:00:00\"
},
\"invoiceCode\": \"\",
\"delete\": \"1\",
\"collectionPhone\": \"1888888888\",
\"collectionName\": \"张三\"
}";
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);
响应报文示例
{
"code": "200",
"message": "成功",
"data": {
"reimburseResponse":{ //报销结果
"code": "200",
"message": "成功"
},
"deductibleResponse":{ // 抵扣结果
"code": "200",
"message": "成功"
},
"signInfo":{ // 签收结果
"code": "200",
"message": "成功"
},
"invoiceInfo":{ // 发票信息结果
"code": "200",
"message": "成功"
}
}
}
返回码说明
| 返回码 | 说明 | 处理建议 |
|---|
200 | 成功 | |
4419 | 红字发票不支持报销 | |
4420 | 该发票已是取消状态 | |
4421 | 该发票已报销,不能重复报销 | |
4422 | 报销金额必须大于等于零且小于等于开票金额 | |
4423 | 报销日期必须大于等于开票日期且小于等于当前日期 | |