发票识别
# 发送识别请求(URL)
### 请求URL
- `/openapi/identify/sendByImageUrl`
### 请求方式
- POST
### 请求参数说明
| 名称 | 类型 | 必填 | 说明 |
| ------------ | ------- | ---- | ------------------------- |
| imageUrl | String |是| 发票图片URL(目前只支持普票、专票、电票) |
* 滴滴出行单仅支持PDF类型
### 请求示例
```json
{
"imageUrl":"http://s.yipiaoyun.com/enh"
}
```
### 返回参数说明
|参数名|类型|说明|
|:----- |:-----|----- |
|code|int|状态码|
|message |string |错误信息,code!=0时有值|
|data| String | 返回核查ID |
### 返回示例
- 成功示例
```json
{
"code": 0,
"data": "3c35fc8eb3b2466397c5d3abd580730c"
}
```
- 失败示例
```json
{
"code":-1,
"message":"图片URL不能为空"
}
```
# 发送识别请求(文件)
### 请求URL
- `/openapi/identify/sendByImageFile`
### 请求方式
- POST
- 签名认证参数及图片文件需要以form-data方式发送
- Content-Type:multipart/form-data
### 请求参数说明
| 名称 | 类型 | 必填 | 说明 |
| ------------ | ------- | ---- | ------------------------- |
| imageFile | File |是| 发票图片文件(目前只支持普票、专票、电票) |
* 支持的图片类型: jpg, jpeg, png及pdf(pdf只支持识别第一页内容). 图片最大支持1M.
* 建议分辨率过大的图片进行压缩
* 滴滴出行单仅支持PDF类型
### 返回参数说明
|参数名|类型|说明|
|:----- |:-----|----- |
|code|int|状态码|
|message |string |错误信息,code!=0时有值|
|data| String | 返回核查ID |
### 返回示例
- 成功示例
```json
{
"code": 0,
"data": "3c35fc8eb3b2466397c5d3abd580730c"
}
```
- 失败示例
```json
{
"code":-1,
"message":"图片文件类型不支持"
}
```
# 获取识别结果
### 请求URL
- `/openapi/identify/result`
### 请求方式
- POST
### 请求参数说明
| 名称 | 类型 | 必填 | 说明 |
| ------------ | ------- | ---- | ------------------------- |
| identifyId | String |是| 请求唯一主键 |
### 请求示例
```json
{
"identifyId": "3c35fc8eb3b2466397c5d3abd580730c"
}
```
### 返回参数说明
|参数名|类型|说明|
|:----- |:-----|----- |
|code|int|状态码|
|message |string |错误信息,code!=0时有值|
|data| IdentifyResultDto | 返回的发票识别结果 |
### 发票类型
|发票类型|描述| 发票类型|描述|发票类型|描述|
|:----- |:-----|:----- |:-----|:----- |:-----|
|1000|增值税专用发票|2000|定额发票 |5003|航空运输电子客票行程单 |
|1001|增值税普通发票|2001|国际小票|5004|过路费发票|
|1002|增值税电子普通发票 |4000|机打发票 |6000|可报销其他发票|
|1003|增值税普通发票(卷票) |5000|出租车发票 |6001|完税证明|
|1004|机动车销售统一发票 |5001|火车票 |0000|其他|
|1005|二手车销售统一发票 |5002|客运汽车 |||
### 电票、纸票、专票
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|date|String|开票日期|
|amountWithoutTax|String|发票不含税金额|
|taxAmount|String|发票总税额|
|totalAmount|String|发票总金额|
|checkCode|String|校验码|
|purchaserTaxNo|String|购方税号|
|purchaserName|String|购方名称|
|sellerTaxNo|String|销方税号|
|sellerName|String|销方名称|
|companySeal|String|是否有公司印章(0:没有; 1: 有)|
|formType|String|发票是第几联|
|formName|String|发票联次|
|ciphertext|String|密码区,四行密码,每行以逗号隔开|
|payee|String|收款人||
|reviewer|String|复核人||
|ticketHolder|String|开票人||
| province |String|省|
| city |String|市|
|remark|String|备注|
| itemNames |String|商品名称,每个以逗号隔开|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "10102",
"invoiceCode": "050003521107",
"invoiceNo": "89050020",
"date": "2019年07月06日",
"amountWithoutTax": "2.91",
"taxAmount": "0.09",
"amountWithTax": "3.00",
"checkCode": "07452879925677728392",
"purchaserTaxNo": "9131010563178864XK",
"purchaserName": "换了丑章",
"sellerTaxNo": "11010120181016022",
"sellerName": "测试22",
"companySeal": "1",
"formType": "",
"ciphertext": "03>98/-7<1-7688*0053->1+6<-,7+1631485>+*88*+605472+4488*,184/75+*0-*<21-8/>7>22-55<>3,1919+-8>9001764<197845+1803+",
"payee": "张果老",
"reviewer": ":南极翁",
"ticketHolder": "铁头娃",
"province": "重庆市",
"city": "",
"remark": "",
"itemNames": "*软饮料*可乐"
}
}
```
### 出租车发票
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|date|String|乘车日期|
|timeGetOn|String|上车时间|
|timeGetOff|String|下车时间|
| mileage |String|里程|
|totalAmount|String|总金额|
|place|String|发票所在地|
|province|String|省|
|city|String|市|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "5000",
"invoiceCode": "050003521107",
"invoiceNo": "89050020",
"date": "2019年07月06日",
"timeGetOn": "11:23",
"timeGetOff": "11:39",
"mileage": "3.2",
"totalAmount": "23.30",
"place": "浙江省杭州市",
"province": "浙江省",
"city": "杭州市"
}
}
```
### 火车票
|参数名|类型|说明|
|:----- |:-----|-----
|invoiceType|String|发票类型|
|invoiceNo|String|火车票号码|
|date|String|乘车日期|
|time|String|乘车时间|
|stationGetOn|String|上车站|
|stationGetOff|String|下车站|
|trainNumber |String|车次|
|seat|String|二等座|
|totalAmount|String|总金额|
|serialNumber|String|序列号|
|idNumber|String|身份证号|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "5001",
"invoiceNo": "80K015233",
"date": "2019年05月10日",
"totalAmount": "73.00",
"time": "08:42",
"stationGetOn": "上海虹桥",
"stationGetOff": "杭州东",
"trainNumber": "G1509",
"seat": "二等座",
"serialNumber": "66103212100511K013431",
"idNumber": "3101061994****0492"
}
}
```
### 机打发票
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|date|String|日期|
|time|String|时间|
|checkCode|String|校验码|
|category|String|种类|
|totalAmount|String|总金额|
|purchaserTaxNo|String|购方税号|
|purchaserName|String|购方名称|
|sellerTaxNo|String|销方税号|
|sellerName|String|销方名称|
|province|String|省|
|city|String|市|
|companySeal|String|是否有公司印章(0:没有; 1: 有)|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "6001",
"invoiceCode": "050003521107",
"invoiceNo": "89050020",
"date": "2019年07月06日",
"time": "11:23:45",
"checkCode": "07452879925677728392",
"category": "oil",
"totalAmount": "23.34",
"purchaserTaxNo": "9131010563178864XK",
"purchaserName": "测试公司",
"sellerTaxNo": "11010120181016022",
"sellerName": "小白鼠",
"province": "浙江省",
"city": "杭州市",
"companySeal": "1"
}
}
```
### 增值税普通发票(卷票)
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|date|String|开票日期|
|checkCode|String|校验码|
|purchaserTaxNo|String|购方税号|
|purchaserName|String|购方名称|
|sellerTaxNo|String|销方税号|
|sellerName|String|销方名称|
|category|String|种类|
|totalAmount|String|发票总金额|
|province|String|省|
|city|String|市|
|companySeal|String|是否有公司印章(0:没有; 1: 有)|
|serviceName|String|服务类型|
|itemNames |String|商品名称,每个以逗号隔开|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "1003",
"invoiceCode": "050003521107",
"invoiceNo": "89050020",
"date": "2019年07月06日",
"checkCode": "07452879925677728392",
"purchaserTaxNo": "9131010563178864XK",
"purchaserName": "测试公司",
"sellerTaxNo": "11010120181016022",
"sellerName": "小白鼠",
"category": "oil",
"totalAmount": "300.00",
"province": "浙江省",
"city": "杭州市",
"companySeal": "1",
"serviceName": "汽油",
"itemNames": "*95#汽油"
}
}
```
### 定额发票
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|totalAmount|String|发票总金额|
|province|String|省|
|city|String|市|
|companySeal|String|是否有公司印章(0:没有; 1: 有)|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "2000",
"invoiceCode": "050003521107",
"totalAmount": "300.00",
"province": "浙江省",
"city": "杭州市",
"companySeal": "1"
}
}
```
### 过路费发票
IdentifyResultDto
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|date|String|日期|
|time|String|时间|
| entrance |String|入口|
| exit |String|出口|
|totalAmount|String|发票总金额|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "5004",
"invoiceCode": "131001860207",
"invoiceNo": "20790117",
"date": "",
"totalAmount": "20.00",
"time": "",
"entrance": "康桥",
"exit": "嘉闵高架"
}
}
```
### 客运汽车
|参数名|类型|说明|
|:----- |:-----|-----
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|date|String|乘车日期|
|time|String|乘车时间|
|stationGetOn|String|上车站|
|stationGetOff|String|下车站|
|totalAmount|String|总金额|
|name|String|姓名|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "5002",
"invoiceCode": "39320323",
"invoiceNo": "49302323",
"date": "2019年05月10日",
"totalAmount": "73.00",
"time": "08:42",
"stationGetOn": "杭州东",
"stationGetOff": "上海虹桥",
"name": "小白鼠"
}
}
```
### 航空运输电子客票行程单
|参数名|类型|说明|
|:----- |:-----|-----
|invoiceType|String|发票类型|
|invoiceNo|String|电子客票号码|
|checkCode|String|校验码|
|name|String|乘机人姓名|
|idNumber|String|身份证号|
|date|String|乘车日期|
| agentCode |String|销售单位代号|
| issueUnit|String|填开单位|
| fareAmount|String|票价|
|taxAmount|String|税费|
|fuelSurcharge|String|燃油附加费|
|caacDevelopmentFund|String|民航发展基金|
|insuranceAmount|String|保险费|
|totalAmount|String|总金额|
|internationalFlag|String|国内国际标签|
|flightInfos|`List<Object>`|航班信息|
|flightInfos[#].startPoint|String|出发站|
|flightInfos[#].endPoint|String|到达站|
|flightInfos[#].flightNumber|String|航班号|
|flightInfos[#].date|String|乘机日期|
|flightInfos[#].time|String|乘机时间|
|flightInfos[#].seat|String|座位等级|
|flightInfos[#].carrier|String|承运人|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "5003",
"invoiceNo": "4792345930496",
"date": "2019年03月04日",
"taxAmount": "10.00",
"totalAmount": "1420.00",
"checkCode": "0034",
"name": "小白鼠",
"idNumber": "530492199402239932",
"agentCode": "SZH888,08676032",
"issueUnit": "上海华程西南国际旅行社有限公司",
"fareAmount": "1370.00",
"fuelSurcharge": "0.00",
"caacDevelopmentFund": "50.00",
"flightInfos": [
{
"startPoint": "T3深圳",
"endPoint": "杭州",
"flightNumber": "ZH9883",
"date": "2019年01月25日",
"time": "18:05",
"seat": "Y",
"carrier": "深航"
}
],
"internationalFlag": "国内(D)"
}
}
```
### 二手车销售统一发票
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|date|String|开票日期|
|totalAmount|String|发票总金额|
|sellerName|String|卖方单位/个人|
|sellerNumber|String|卖方单位代码/个人身份证号|
|purchaserName|String|买方单位/个人|
|purchaserNumber|String|买方单位代码/个人身份证号|
|companyName|String|二手车市场|
|companyTaxNo|String|二手车市场纳税人识别号|
|licensePlate|String|车牌号|
|registrationNumber|String|登记证号|
|carCode|String|车架号/车辆识别代码|
|carModel |String|厂牌型号|
| province |String|省|
| city |String|市|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "1005",
"invoiceCode": "050003521107",
"invoiceNo": "89050020",
"date": "2019年07月06日",
"totalAmount": "112300.00",
"sellerName": "测试公司",
"sellerNumber": "9131010563178864XK",
"purchaserName": "小白鼠",
"purchaserNumber": "11010120181016022",
"companyName": "二手车交易管理有限公司",
"companyTaxNo": "TEST34056KS43064XK",
"licensePlate": "浙A123456",
"registrationNumber": "32031231254",
"carCode": "SLDOEOSJ8FG349582",
"carModel": "大众牌LKS3232N4",
"province": "浙江省",
"city": "杭州市"
}
}
```
### 机动车销售统一发票
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|invoiceCode|String|发票代码|
|invoiceNo|String|发票号码|
|machineCode|String|机打代码|
|machineNo|String|机打号码|
|date|String|开票日期|
|amountWithoutTax|String|税前金额|
|totalAmount|String|发票总金额|
|sellerName|String|销售单位|
|sellerNumber|String|销售单位纳税人识别号|
|purchaserName|String|买方单位/个人|
|purchaserNumber|String|买方单位代码/个人身份证号|
|taxAuthoritiesName|String|主管税务机关|
|taxAuthoritiesCode|String|主管税务机关代码|
|carCode|String|车架号/车辆识别代码|
|carEngineCode|String|发动机号码|
|carModel |String|厂牌型号|
|certificateNumber |String|合格证号|
|taxAmount |String|税额|
|taxRate |String|税率|
| province |String|省|
| city |String|市|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "1004",
"invoiceCode": "144001724660",
"invoiceNo": "01005461",
"date": "2018年04月18日",
"taxAmount": "1278.63",
"totalAmount": "8800.00",
"sellerName": "测试公司",
"sellerTaxNo": "9144152157012358X0",
"purchaserName": "小白鼠",
"purchaserNumber": "11010120181016022",
"carCode": "ODKSLSZG5J8049341",
"carModel": "索市牌ZS452ZH-7C",
"machineCode": "231231723023",
"machineNumber": "49229461",
"taxAuthoritiesName": "国家税务局办税服务厅",
"taxAuthoritiesCode": "144152302",
"carEngineCode": "8J101041",
"certificateNumber": "YK0708170645023",
"taxRate": "17%",
"province": "广东省",
"city": "广州市"
}
}
```
### 小票
|参数名|类型|说明|
|:----- |:-----|----- |
|invoiceType|String|发票类型|
|date|String|开票日期|
|time |String|时间|
|amountWithoutTax|String|税前金额|
|taxAmount |String|税额|
|totalAmount|String|总金额|
| storeName |String|店名|
| discountAmount |String|折扣金额|
| tipAmount |String|小费|
| currencyCode |String|币种, 使用 ISO 4217 Currency Codes 标准|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "2001",
"date": "2014年01月13日",
"amountWithoutTax": "1009.00",
"taxAmount": "0.00",
"totalAmount": "913.00",
"time": "",
"storeName": "测试酒店",
"discountAmount": "96.00",
"tipAmount": "0.00",
"currencyCode": "CNY"
}
}
```
### 完税证明
|参数名|类型|说明|
|:----- |:-----|-----
|invoiceType|String|发票类型|
|invoiceNo|String|发票号码|
|date|String|日期|
|totalAmount|String|总金额|
|purchaserTaxNo|String|购买方纳税人识别号|
|purchaserName|String|购买方名称|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "6001",
"invoiceNo": "00427046",
"date": "2019年04月23日",
"totalAmount": "122.40",
"purchaserTaxNo": "1101012018101602Y",
"purchaserName": "小白鼠"
}
}
```
### 滴滴出行行程单
|参数名|类型|说明|
|:----- |:-----|-----
|invoiceType|String|发票类型|
|date|String|申请日期|
| startDate |String|行程开始时间|
| endDate|String|行程结束时间|
| phone|String|行程人手机号|
|totalAmount|String|总金额|
|tripInfos|`List<Object>`|行程信息|
|tripInfos[#].carType|String|车型|
|tripInfos[#].timeGetOn|String|上车时间|
|tripInfos[#].city|String|城市|
|tripInfos[#].stationGetOn|String|起点|
|tripInfos[#].stationGetOff|String|终点|
|tripInfos[#].mileage|String|里程(公里)|
|tripInfos[#].amount|String|金额|
- 成功示例
```json
{
"code": 0,
"data": {
"invoiceType": "2002",
"date": "2018年07月10日",
"totalAmount": "56.53",
"startDate": "2018年01月19日",
"endDate": "2018年07月10日",
"phone": "13944433849",
"tripInfos": [
{
"carType": "专车",
"timeGetOn": "01-19 08:32 周五",
"city": "深圳市",
"stationGetOn": "金地金谷公寓",
"stationGetOff": "大冲国际中心",
"mileage": "4.8",
"amount": "33.63"
},
{
"carType": "快车",
"timeGetOn": "04-13 08:38 周五",
"city": "深圳市",
"stationGetOn": "金地金谷公寓",
"stationGetOff": "大冲国际中心",
"mileage": "5.2",
"amount": "22.90"
}
]
}
}
```
### 失败示例
```json
{
"code":-1,
"message":"未查询到对应识别请求"
}
```