verify_image_vat_invoice
1.接口描述
该 API 用于对税票的影像进行验真,并返回验真后的结构化数据
请求方式
POST
http://cloudapi.deepfinch.com/data/verify_image_vat_invoice
2.请求参数
2.1 请求头域
字段 |
类型 |
必需 |
描述 |
X-DF-API-ID |
string |
是 |
API调用凭证信息,详细信息请参考API调用 |
X-DF-API-SECRET |
string |
是 |
API调用凭证信息,详细信息请参考API调用 |
2.2 请求体
字段 |
类型 |
必需 |
描述 |
file |
file |
见下方注释 |
需上传的图片文件,上传本地图片进行检测时选取此参数 |
url |
string |
见下方注释 |
图片网络地址,采用抓取网络图片方式时需选取此参数 |
请求参数 file
与url
必须选择其中的一个。
url 中含有特殊字符,若将 URL 放入 Query String 中则需要对这些字符进行转义,所有中文和特殊字符必需以UTF-8编码转义。
目前支持 http/https 协议的网络地址。下载限时 5s,超时后仍未下载完成则属于失败。
参数 file
需把图片文件的内容以 multipart/form-data 的形式放到 POST 消息体中。
3.返回参数
字段 |
类型 |
说明 |
request_id |
string |
本次请求的id |
status |
string |
状态,正常为 OK |
data |
object |
票据信息验真结果 |
error_code |
int |
验真错误码,仅当status 为VERIFY_FAILED 时返回 |
reason |
string |
错误原因 |
3.1 data 字段的参数:
字段 |
类型 |
说明 |
check_time |
string |
本次核验时间 |
invoice_status |
string |
本次请求票据状态,0-正常、1-被冲红、2-已作废 |
tax_tick_main_info |
object |
本次请求票据信息 |
3.2 tax_tick_main_info 字段的参数:
字段 |
类型 |
说明 |
invoice_code |
string |
发票代码 |
invoice_no |
string |
发票号码 |
invoice_total_price |
string |
合计金额(不含税) |
invoice_total_price_tax |
string |
合计金额(含税) |
invoice_total_tax |
string |
合计税额 |
invoicing_party_code |
string |
销售方统一社会信用代码 |
invoicing_party_name |
string |
销售方名称 |
issue_date |
string |
开票日期 |
payer_party_code |
string |
购货方统一社会信用代码 |
payer_party_name |
string |
购货方名称 |
random_number |
string |
校验码(全) |
random_number6 |
string |
校验码(后6位) |
remarks |
string |
备注 |
tick_type |
string |
发票类型 |
tax_charge_items |
array |
收费项目列表 |
expands |
array |
扩展信息列表 |
medical_expands |
object |
医疗类增值税扩展信息 |
3.2.1 tax_charge_items 字段的参数:
字段 |
类型 |
说明 |
amt |
string |
金额(不含税) |
amt_tax |
string |
金额(含税) |
charge_code |
string |
货物或应税劳务编码 |
charge_name |
string |
货物或应税劳务名称 |
num |
string |
数量 |
specification_model |
string |
规格型号 |
std |
string |
单价(不含税) |
tax |
string |
税额 |
tax_rate |
string |
税率 |
unit |
string |
单位 |
3.2.2 `expands ` 字段的参数:
字段 |
类型 |
说明 |
code |
string |
扩展字段代码 |
name |
string |
扩展字段名称 |
value |
string |
扩展字段值 |
3.2.3 tick_type 字段的类型列表:
编码 |
类型 |
说明 |
备注 |
01 |
税票 |
增值税专用发票 |
|
02 |
税票 |
货运运输业增值税专用发票 |
|
03 |
税票 |
机动车增值税专用发票 |
暂不支持 |
04 |
税票 |
增值税普通发票 |
|
09-10 |
税票 |
全电票普票 |
|
09-20 |
税票 |
全电票专票 |
|
10 |
税票 |
增值税电子普通发票 |
|
11 |
税票 |
增值税普通发票(卷式) |
|
14 |
税票 |
增值税电子普通发票(通行费) |
|
15 |
税票 |
二手车销售统一发票 |
|
20 |
税票 |
增值税电子专用发票 |
|
91 |
税票 |
区块链电子发票 |
目前仅支持深圳 |
3.2.4 `medical_expands ` 字段的参数:
字段 |
类型 |
说明 |
patient_name |
string |
姓名 |
note_no |
string |
票据号码 |
note_code |
string |
票据代码 |
check_code |
string |
票据校验码 |
billing_date |
string |
开票日期 |
total_cost |
float |
总金额 |
hospital_name |
string |
医院名称 |
treatment_date |
string |
就诊日期 |
start_hospital_date |
string |
住院开始时间 |
end_hospital_date |
string |
住院结束时间 |
payments_info |
array |
支付信息列表 |
cost_categories |
array |
大类信息列表 |
cost_detail_list |
array |
明细信息列表 |
3.2.4.1 `payments_info ` 字段的参数:
字段 |
类型 |
说明 |
name |
string |
名称 |
cost |
float |
金额 |
3.2.4.2 `cost_categories ` 字段的参数:
字段 |
类型 |
说明 |
name |
string |
大类名称 |
cost |
float |
大类金额 |
3.2.4.3 `cost_detail_list ` 字段的参数:
字段 |
类型 |
说明 |
ocr_name |
string |
明细名称 |
class |
string |
明细所属大类 |
amount |
float |
明细数量 |
cost |
float |
明细金额 |
3.2.4.4 payments_info 中name
的取值:
以下字段如票面中不包含或未提取到,不做输出
字段 |
医保统筹基金支付 |
其他支付 |
个人账户支付 |
个人现金支付 |
本次医保范围内金额 |
部分自付 |
个人自费 |
超限自付 |
以上字段不同地区票面打印内容不一致,我方将含义一致的词进行了统一化处理,不同增值税发票相同含义词均按以下词表中的词固定输出,如需对应的词库请联系商务索取
返回结果示例
{
"data": {
"check_time": "2022-10-26 16:52:41",
"invoice_status": "0",
"tax_tick_main_info": {
"expands": [
{
"code": "100001",
"name": "销方地址、 电话(税票)",
"value": "北京市海淀区中关村环保科技园锦带路66号院0101-83055000"
},
{
"code": "100002",
"name": "销方开户行、账号(税票)",
"value": "民生 银行北京环保园支行 161377953"
}
],
"invoice_code": "011002200211",
"invoice_no": "53817869",
"invoice_total_price": "8.00",
"invoice_total_price_tax": "8.00",
"invoice_total_tax": "0.00",
"invoicing_party_code": "9111***************",
"invoicing_party_name": "北京谱尼医学检验实验室有限公司",
"issue_date": "2022-04-11",
"payer_party_code": "9111***************",
"payer_party_name": "深源恒际科技有限公司",
"random_number": "69970033660035186106",
"random_number6": "186106",
"remarks": "",
"tax_charge_items": [
{
"amt": "8.00",
"amt_tax": "8.00",
"charge_code": "3070202000000000000",
"charge_name": "核酸检测",
"num": "1.00",
"specification_model": "",
"std": "8.00000000",
"tax": "0.00",
"tax_rate": "0.000000",
"unit": ""
}
],
"tick_type": "10",
"medical_expands": {
"patient_name": "深智",
"note_no": "711196782",
"note_code": "021111100104",
"check_code": "0279911113719152212",
"billing_date": "2024-04-26",
"total_cost": 216.0,
"hospital_name": "自营医院有限公司",
"treatment_date": "2024-04-26",
"payments_info": [
{
"name": "个人现金支付",
"cost": 216.0
}
],
"start_hospital_date": null,
"end_hospital_date": null,
"cost_categories": [
{
"name": "医疗服务",
"cost": 216.0
}
],
"cost_detail_list": [
{
"ocr_name": "X线计算机体层(CT)螺旋扫描(4-64层,不含64层)",
"class": "医疗服务",
"amount": 1.0,
"cost": 216.0
}
]
}
}
},
"request_id": "TID6d74b8ced57748d39f3fa204e418edde",
"status": "OK"
}
4.错误码
4.1 服务错误码
HTTP状态码 |
status 字段 |
说明 |
400 |
INVALID_ARGUMENT |
请求参数错误 |
400 |
DETETION_FAILED |
图片检测失败 |
400 |
DOWNLOAD_ERROR |
网络地址图片获取失败 |
401 |
UNAUTHORIZED |
未授权或授权失败 |
401 |
KEY_EXPIRED |
账号过期 |
403 |
NO_PERMISSION |
无调用权限 |
403 |
OUT_OF_QUOTA |
调用次数超出限额 |
403 |
RATE_LIMIT_EXCEEDED |
调用频率超出限额 |
404 |
NOT_FOUND |
请求路径错误 |
500 |
INTERNAL_ERROR |
服务器内部错误 |
备注: 以上40X系列错误描述请参考reason
字段
4.2 验真错误码
当验真失败时(status
=VERIFY_FAILED
),我们通过返回的error_code
字段可以区分不同的错误原因:
error_code 字段 |
reason 字段 |
说明 |
100 |
network error |
请求网络错误 |
198 |
result parse failed |
解析结果失败 |
300 |
invoice not exist |
发票查询不到 |
301 |
note_no is required |
发票号码缺少 |
302 |
check_code is required |
校验码缺少 |
303 |
note_code is required |
票据代码缺少 |
304 |
billing_date is required |
日期缺少 |
305 |
total_cost is required |
总金额缺少 |
306 |
billing_date error |
日期错误 |
307 |
total_cost error |
总金额错误 |
308 |
check_code error |
校验码错误 |
309 |
note_code error |
票据代码错误 |
310 |
note_no error |
票据号码错误 |
311 |
bill query exception |
查询地方票据异常 |
312 |
e-invoice verify request params format error |
请求格式错误 |
313 |
e-invoice verify rate limit count |
超过该张票据当天核验次数 |
314 |
financial system error |
财政内部异常 |
315 |
e-invoice no circulation |
该电子票据禁止流通 |
316 |
province system maintain |
该省份系统维护中 |
317 |
access data source time out |
数据源访问超时 |
318 |
auth failed |
身份验证失败 |
319 |
area not support |
不支持该地区查询 |
320 |
invalid bill |
无效的电子票 |
321 |
unknown error |
未知错误 |
322 |
params error |
请求参数错误 |
323 |
invoice not match |
票据信息不匹配 |
324 |
party_code is required |
销货方纳税人识别号缺少 |
325 |
billing_date format error |
日期格式错误 |
输出样例
{
"error_code": 303,
"status": "VERIFY_FAILED",
"reason": "note_code is required",
"request_id": "TID8bf47ab6eda64476973cc5f5b6ebf57e",
"qrcode_scan_result": 1
}
5.输入示例