3.开票接口文档
## 3.1 个体户开票申请
>d 该接口用于个体户开票申请,获取开票的订单号开票金额等信息
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 注意
>d 1.在调用开票申请接口前,需要调用 [个体户信息查询接口](https://easydoc.net/doc/38214856/sLYGhH4w/zozXPLbL)查询
返回的taxStatus - 税务状态的状态变更为“已实名”,只有变更后,才能提交该个体户的开票申请;仅限新注册的个体户。
>2. 如果是老的个体户只需调用一次,保存在本地,后续可以不需要再去查询该个体户的税务状态信息。
#### 接口地址:
/open/api/v1/qs/invoice/selfInvoicesApply
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|idCard|个体户身份证号|String| 是|示例:4104221993XXXX1278|
|invoiceClassification| 开票类型|int| 是|0.普票 1.专票|
|mainstayId|主体id|int| 否|示例:1|
|remark| 备注|String| 否|示例:"XX"|
#### 接口响应参数data字段解密后的参数说明:
>d 注意:该接口响应参数是list集合数据
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|allTotalInvoiceAmount|开票金额(汇总)|BigDecimal| 是|此参数与list为同级|
|allShouldInvoiceAmount|应开票金额(汇总)|BigDecimal| 是|此参数与list为同级|
|nonInvoicedAmount|不可开票金额|BigDecimal| 是|此参数与list为同级|
|provisionalInvoiceNo|确认号|String| 是|该参数用于下个确认接口,此参数与list为同级|
|list|开票信息集合|List<QsOpenApiSelfInvoicesApply>|是|
#### QsOpenApiSelfInvoicesApply:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|invoiceAmount|开票金额|BigDecimal| 是|示例:11.05|
|totalIncomeTaxAmount|个体户已缴纳个税|BigDecimal| 是|示例:1.05|
|totalTaxableAmount|应纳税金额|BigDecimal| 是|示例:11.05|
|totalInvoiceAmount|发放前开票金额|BigDecimal| 是|示例:2.05|
|invoiceStatus|开票状态|Integer| 是|参看[系统编码 - 开票状态码](https://easydoc.net/doc/75132717/8V9YDbr8/6Riyzg63)|
|name|个体户姓名|String| 是|示例:"王某某"|
|idCard|个体户身份证号|String| 是|示例:"4104221993XXXX1278"|
|mainstayId|主体id|Integer| 是|示例:1|
|invoiceContent|发票内容|String| 是|示例:"信息技术服务*技术服务费"|
|purchaserInvoiceTitle|购买方发票抬头|String| 是|示例:"xx"|
|purchaserTaxNumber|购买方税号|String| 是|示例:"91990512MA2B6AME1N"|
|purchaserAddressPhone|购买方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|purchaserBankAccount|购买方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
|sellerInvoiceTitle|销售方发票抬头|String| 是|示例:"xx"|
|sellerTaxNumber|销售方税号|String| 是|示例:"4104221993XXXX1278"|
|sellerAddressPhone|销售方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|sellerBankAccount|销售方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
## 3.2 个体户开票申请确认
>d 该接口用于个体户开票申请后查看信息无误后确认开票
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/qs/invoice/selfInvoicesApplyConfirm
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|provisionalInvoiceNo|确认号,上个接口获取|String| 是|示例:"20211515151515151"|
|settlementCertUrl|结算单证明链接|String| 否||
|settlementCertCustomUrl|自定义模板链接|String| 否|直营模式:(1)结算前配置:结算时必填,开票申请时就非必填(2)开票前配置:开票申请时必填,结算时非必填|
#### 接口响应参数data字段解密后的参数说明:
>d 注意:该接口响应参数是list集合数据
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|invoiceBillNo|成功开票订单编号|String| 是||
|invoiceStatus|发票状态|Integer| 是|参看[开票状态码](doc:jcSiyTv1),如果是待审核中状态说明已成功提交|
## 3.3.1 服务费开票申请
>d 该接口用于商户服务费开票申请,获取开票的订单号开票金额等信息
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/qs/invoice/serviceInvoicesApply
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|mainstayId|主体id|int| 否|该参数在商户合作模式为众包模式的时候为必填选项|
|invoiceCode|发票code|String| 否|该参数在商户合作模式为众包模式的时候为必填选项|
|invoiceClassification| 开票类型|int| 是|0.普票 1.专票|
|remark| 备注|String| 否|示例:"XX"|
#### 接口响应参数data字段解密后的参数说明:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|provisionalInvoiceNo|确认单号|String| 是|示例:"2020091720135423517696",下个确认接口需要用到|
|invoiceAmount|开票金额|BigDecimal| 是|示例:11.05|
|mainstayId|主体id|Integer| 是|示例:1|
|invoiceContent|发票内容|String| 是|示例:"信息技术服务*技术服务费"|
|purchaserInvoiceTitle|购买方发票抬头|String| 是|示例:"xx"|
|purchaserTaxNumber|购买方税号|String| 是|示例:"91990512MA2B6AME1N"|
|purchaserAddressPhone|购买方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|purchaserBankAccount|购买方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
|sellerInvoiceTitle|销售方发票抬头|String| 是|示例:"xx"|
|sellerTaxNumber|销售方税号|String| 是|示例:"4104221993XXXX1278"|
|sellerAddressPhone|销售方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|sellerBankAccount|销售方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
## 3.3.2 服务费开票申请(批量订单号)
>d 需保证同一批订单号对应订单的“主体”与“开票类目”一致
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/qs/invoice/serviceInvoices/applyByBillNo
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|thirdOrderNos|商户订单号集合|List<String>(50)|是||
|invoiceClassification| 开票类型|Integer(2)| 是|0.普票 1.专票|
|remark| 备注|String(64)| 否|示例:"XX"|
#### 接口响应参数data字段解密后的参数说明:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|provisionalInvoiceNo|确认单号|String| 是|示例:"2020091720135423517696",下个确认接口需要用到|
|invoiceAmount|开票金额|BigDecimal| 是|示例:11.05|
|mainstayId|主体id|Integer| 是|示例:1|
|invoiceContent|发票内容|String| 是|示例:"信息技术服务*技术服务费"|
|purchaserInvoiceTitle|购买方发票抬头|String| 是|示例:"xx"|
|purchaserTaxNumber|购买方税号|String| 是|示例:"91990512MA2B6AME1N"|
|purchaserAddressPhone|购买方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|purchaserBankAccount|购买方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
|sellerInvoiceTitle|销售方发票抬头|String| 是|示例:"xx"|
|sellerTaxNumber|销售方税号|String| 是|示例:"4104221993XXXX1278"|
|sellerAddressPhone|销售方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|sellerBankAccount|销售方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
## 3.4 服务费开票申请确认
>d 该接口用于商户服务费开票申请后查看信息无误后确认开票
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/qs/invoice/serviceInvoicesApplyConfirm
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|provisionalInvoiceNo|确认单号|String| 是|示例:"2020092115145251556096"|
#### 接口响应参数data字段解密后的参数说明:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|invoiceBillNo|发票单号|String| 是||
|invoiceStatus|发票状态|Integer| 是|参看[系统编码 - 开票状态码](https://easydoc.net/doc/75132717/8V9YDbr8/6Riyzg63),如果是待审核中状态说明已成功提交,等待审核即可|
## 3.5 开票结果查询
>d 该接口用于个体户开票和服务费开票结果查询
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
#### 接口地址:
/open/api/v1/qs/invoice/queryServiceInvoicesResult
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|invoiceBillNo|开票订单号|String| 是|示例:"2020092115145251556096"|
#### 接口响应参数data字段解密后的参数说明:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|invoiceBillNo|开票订单编号|String| 是|示例:"2020091720135423517696"|
|invoiceClassification| 开票类型|Integer| 是|0.普票 1.专票|
|invoiceStatus|开票状态|Integer| 是|参看[5.开票状态码](https://easydoc.net/doc/75132717/8V9YDbr8/6Riyzg63)|
|mainstayId|主体id|Integer| 是|示例:1|
|invoiceAmount|开票金额|BigDecimal| 是|示例:11.05|
|invoiceContent|发票内容|String| 是|示例:"信息技术服务*技术服务费"|
|remark| 备注|String| 否|示例:"XX"|
|purchaserInvoiceTitle|购买方发票抬头|String| 是|示例:"xx"|
|purchaserTaxNumber|购买方税号|String| 是|示例:"91990512MA2B6AME1N"|
|purchaserAddressPhone|购买方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|purchaserBankAccount|购买方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
|addressee| 收件人|String| 是|示例:"王某某"|
|phone| 联系电话|String| 是|示例:"1862687xxxx"|
|area| 所在地区|String| 是|所在地区(省市县\区) 示例:"浙江省绍兴市"|
|detailAddress| 详细地址|String| 是|示例:"浙江省绍兴市XX区XX街道XX小区XX单元XX楼"|
|email| 电子邮件|String| 是|示例:"2411XX429@qq.com"|
|sellerInvoiceTitle|销售方发票抬头|String| 是|示例:"xx"|
|sellerTaxNumber|销售方税号|String| 是|示例:"4104221993XXXX1278"|
|sellerAddressPhone|销售方地址、电话|String| 是|示例:"xx省xx市xx县xx区xx路 xx号xx大厦 xx 楼 xx 层 xx 室 17794xx5001"|
|sellerBankAccount|销售方开户行及账号|String| 是|示例:"xx银行xx分行xx部 15000xx8626431"|
|settlementCertUrl|结算单证明|String| 是|示例:"https://xxxx/xxxx.pdf"|
|settlementCertCustomUrl|自定义证明|String| 是|示例:"https://xxxx/xxxx.pdf"|
|expressCompany|快递公司|String| 是|示例:"xx物流有限公司"|
|expressNo|快递单号|String| 是|示例:"2020221993XXXX1278"|
|postStatus|邮寄状态0:未邮寄 1.已邮寄|Integer| 是|示例:1|
|failReason|失败原因|String| 否|示例:"xx"|
|invoiceDetailList|发票明细列表|List<InvoiceDetail>| 否|注意:已发票审核状态变为:(已开票)后的发票订单明细详情为准|
#### InvoiceDetail发票明细列表字段:
|参数名称| 参数含义|数据类型| 是否必有| 参数备注|
|-|-|-|-|-|
|requestNo|明细订单编号|String| 是|示例:"xx"|
|parentRequestNo|关联作废订单的明细编号|String| 否|只有在有已作废订单时才会有|
|invoiceCode|发票代码|String| 否|示例:"xx"|
|invoiceNumber|发票号码|String| 否|示例:"xx"|
|billingTime|开票时间|Date| 是|示例:"yyyy-MM-dd HH:mm:ss"|
|invoiceAmount|汇总开票金额(含税金额)|BigDecimal| 是|示例:101|
|totalAmount|不含税金额|BigDecimal| 是|示例:100|
|taxRate|税率|BigDecimal| 是|示例:0.1|
|taxAmount|税额|BigDecimal| 是|示例:1|
|drawer|开票人|String| 否|示例:"xx"|
|operator|收款人|String| 否|示例:"xx"|
|reviewer|复核人|String| 否|示例:"xx"|
|invoiceStatus|发票状态 -1:已作废 0:未开票 1:已开票|Integer| 是|示例:"xx"|
|invoiceContent|开票内容|String| 是|示例:"xx"|
|purchaserInvoiceTitle|购买方发票抬头|String| 是|示例:"xx"|
|purchaserTaxNumber|购买方税号|String| 是|示例:"xx"|
|purchaserAddressPhone|购买方地址、电话|String| 是|示例:"xx"|
|purchaserBankAccount|购买方开户行及账号|String| 是|示例:"xx"|
|sellerInvoiceTitle|销售方发票抬头|String| 是|示例:"xx"|
|sellerTaxNumber|销售方税号|String| 是|示例:"xx"|
|sellerAddressPhone|销售方地址、电话|String| 是|示例:"xx"|
|sellerBankAccount|销售方开户行及账号|String| 是|示例:"xx"|
## 3.6.个体工商户完税证明接口
开发环境:https://pay-dev.lx-rhino.com
生产环境:https://api.lx-rhino.com
>d 注意:个体工商户完税是按季度申报的,在获取的时候是在次季度第一个月的20号左右(遇到节假日时间会顺延)才能获取到上一个季度的完税证明
#### 接口地址:/open/api/v1/qs/invoice/queryServiceInvoicesEndResultDetails
#### 请求方式:POST
#### 请求参数说明:
|参数名称|参数含义|数据类型|是否必填|参数备注|
|-|-|-|-|-|
|idCard|个体户身份证号|String|是||
|mainstayId|主体ID|String|是|该参数值由[4.4 查询发票信息与主体信息接口](https://easydoc.net/doc/75132717/8V9YDbr8/isqoAlKW)|
#### 接口响应参数说明:
>d 响应的data是一个数组
```json
[
{
"incomeFromProductionAndOperation":"***.jpg",
"selfEmployedId":***,
"taxCycle":"2021.04~2021.06",
"valueAddedTax":"***.jpg"
},
...
]
```
>d 注意:selfEmployedId(个体工商户ID)是为了区分已注销后又注册的个体工商户的完税信息;
同一个注册地、同一个身份证信息,注销后又注册,这里的个体工商户的id就会有两个;
|参数名称|参数含义| 数据类型|是否必有|参数备注|
|-|-|-|-|-|
|selfEmployedId|个体工商户ID|String|是|个体工商户的id是为了区分已注销后又注册的个体工商户的信息|
|taxCycle|报税周期|String|是|例:2021.04~2021.06|
|incomeFromProductionAndOperation|个税URL|String|是|例:***.jpg|
|valueAddedTax|增值税附加税URL|String|是|例:***.jpg|