价格:
接口地址: https://登录后显示/pyi/185/359(支持:http/https)
返回格式:json,xml,jsonp调用
请求方式:GET,POST
POST 请求需要设置Header头:Content-Type: application/x-www-form-urlencoded;charset=utf-8
Api测试工具请求说明:
名称 | 必填 | 类型 | 说明 | 示例 参数另存 |
---|---|---|---|---|
appid | 是 | String | 应用ID,在后台我的应用查看或者添加 | 1 |
format | 否 | String | 返回数据格式类型,每个接口已经说明支持返回格式:json,xml, jsonp调用方法说明 | json |
sign | 是 | String | 1.使用Md5方式验证,参数按一定规则md5后返回的字符串,详情点击这里阅读 2.使用Hash验证方式,直接跟上密钥即可。如何设置hash验证 通过我的应用里面修改验证方式 |
52a9dbe274a5c537bbf7a53e2d66c09f |
time | 否 | String | 请求时传递的当前服务器时间戳 | 1545829466 |
url_image | 是 | String | 支持URL地址或者base64编码数据: 1. 使用base64编码图像数据时,base64编码后进行urlencode,要求base64编码和urlencode后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式 2. 使用URL地址时,图片完整URL,URL长度不超过1024字节,URL对应的图片base64编码后大小不超过4M,最短边至少15px,最长边最大4096px,支持jpg/jpeg/png/bmp格式, 请注意关闭URL防盗链 |
Md5验证方式-加密顺序
返回参数说明:
名称 | 必填 | 类型 | 说明 | 示例 参数另存 |
---|---|---|---|---|
amount_in_figuers | 否 | String | 价税合计(小写) | 7.99 |
amount_in_words | 否 | String | 价税合计(大写) | 柒圆玖角玖分 |
check_code | 否 | String | 校验码。增值税专票无此参数 | 61084601970281760289 |
checker | 否 | String | 复核 | 张三 |
city | 否 | String | 所属城市 | 厦门市 |
codeid | 否 | Integer | 状态码,返回10000状态都会进行计费。具体说明可查看状态码说明 | 10000 |
commodity_amount | 否 | Array | 金额 | |
commodity_end_date | 否 | Array | 通行日期止。仅通行费增值税电子普通发票含有此参数 | |
commodity_name | 否 | Array | 货物名称 | |
commodity_num | 否 | Array | 数量 | |
commodity_plate_num | 否 | Array | 车牌号。仅通行费增值税电子普通发票含有此参数 | |
commodity_price | 否 | Array | 单价 | |
commodity_start_date | 否 | Array | 通行日期起。仅通行费增值税电子普通发票含有此参数 | |
commodity_tax | 否 | Array | 税额 | |
commodity_tax_rate | 否 | Array | 税率 | |
commodity_type | 否 | Array | 规格型号 | |
commodity_unit | 否 | Array | 单位 | |
commodity_vehicle_type | 否 | Array | 类型。仅通行费增值税电子普通发票含有此参数 | |
invoice_code | 否 | String | 发票代码 | 035022200111 |
invoice_code_confirm | 否 | String | 发票代码的辅助校验码,一般业务情景可忽略 | 035021100111 |
invoice_date | 否 | String | 开票日期 | 2022年12月13日 |
invoice_num | 否 | String | 发票号码 | 17230518 |
invoice_num_confirm | 否 | String | 发票号码的辅助校验码,一般业务情景可忽略 | 17230518 |
invoice_tag | 否 | String | 增值税发票左上角标志。 包含:通行费、销项负数、代开、收购、成品油、其他 | 其他 |
invoice_type | 否 | String | 发票种类。不同类型发票输出:普通发票、专用发票、电子普通发票、电子专用发票、通行费电子普票、区块链发票、通用机打电子发票、电子发票(专用发票)、电子发票(普通发票) | 电子普通发票 |
invoice_type_org | 否 | String | 发票名称 | 厦门增值税电子普通发票 |
is_agent | 否 | String | 是否代开 | 否 |
machine_code | 否 | String | 机器编号。仅增值税卷票含有此参数 | 661927300875 |
message | 否 | String | 请求状态说明 | 返回成功 |
note_drawer | 否 | String | 开票人 | 李四 |
online_pay | 否 | String | 电子支付标识。仅区块链发票含有此参数 | |
password | 否 | String | 密码区 | 29>9*4<>4450/036+*4>05/6/6908+*2309><><+>54>1<01<02*<7+565/1+1-1-45/*8+09<479681>357+8*--69/>--*3747/76106 |
payee | 否 | String | 收款人 | 李四 |
province | 否 | String | 银行卡所属省份 | 福建省 |
purchaser_address | 否 | String | 购方地址及电话 | |
purchaser_bank | 否 | String | 购方开户行及账号 | |
purchaser_name | 否 | String | 购方名称 | 天津****机电科技有限公司 |
purchaser_register_num | 否 | String | 购方纳税人识别号 | 911201****05M9C29R |
remarks | 否 | String | 备注 | |
retdata | 否 | Array | 回数据集合,可能是数据、对象或者字符串 | |
row | 否 | String | 行号 | 1 |
seller_address | 否 | String | 销售方地址及电话 | 厦门市湖里区观日西二里32号801室 |
seller_bank | 否 | String | 销售方开户行及账号 | 中国工商银行厦门江头支行4100022909200254537 |
seller_name | 否 | String | 销售方名称 | 厦门挖码信息技术有限公司 |
seller_register_num | 否 | String | 销售方纳税人识别号 | 91350206MA32JUL977 |
service_type | 否 | String | 发票消费类型。不同消费类型输出:餐饮、电器设备、通讯、服务、日用品食品、医疗、交通、其他 | 服务 |
sheet_num | 否 | String | 联次信息。专票第一联到第三联分别输出:第一联:记账联、第二联:抵扣联、第三联:发票联;普通发票第一联到第二联分别输出:第一联:记账联、第二联:发票联 | |
time | 否 | String | 请求时传递的当前服务器时间戳 | 1675049940 |
total_amount | 否 | String | 合计金额 | 7.99 |
total_tax | 否 | String | 合计税额 | *** |
word | 否 | String | 内容 | 7.99 |
JSON返回示例:
服务器状态码:
状态码 | 说明 |
---|---|
10000 | 返回成功 |
10001 | appid必须指定,可以我的应用里面查看 |
10002 | sign值必须指定,加密规则请前往帮助中心查看 |
10003 | sign值验证不通过,加密规则请前往帮助中心查看 |
10004 | 时差不能超过10分钟,可以不传递这个参数,注意时间戳单位是秒 |
10005 | appid错误,请检查appid值,前往会员中心->我的应用查看或添加 |
10006 | 当前IP地址未授权,请前往用户中心->我的应用添加ip{@info} |
10007 | 应用被禁用,请联系客服处理 |
10008 | 应用内没有该接口,请到我的应用里面添加这个接口 |
10009 | api接口不存在 |
10010 | 您没有添加该api接口 |
10011 | api已经到期 |
10012 | 没有订购任何api,请前往购买后再操作 |
10013 | 该接口已经暂停使用 |
10014 | 未知的错误,可以联系客服处理 |
10015 | 参数个数错误 |
10019 | {@info} |
10017 | time必须是整型 |
10018 | 次数不足 |
10020 | 子接口不存在,可能已经被关闭 |
10021 | 服务器发生错误 |
10022 | 帐户余额不足,请充值! |
10023 | 订单提交成功,等待回调结果 |
10024 | 调试模式数据 |
10025 | 查无数据 |
请选择开发语言:
$method = 'GET'; //请求方式 GET,POST $secretType = 'MD5'; //验证方式MD5,Hash 通过后台 我的应用去修改 $api_url = 'https://登录后显示/pyi/185/359'; $appid = '应用id';// 在后台我的应用查看; $secret = '应用密钥';// 在后台我的应用查看; $data = array( 'appid'=> '1', 'format'=> 'json', 'time'=> '1545829466', 'url_image'=> '', ); $data['appid'] = $appid; $data['time'] = time();//当前服务器时间 if('MD5' == $secretType){ ksort($data); //按照键名对数组排序,为数组值保留原来的键。 $md5String = ''; foreach($data as $key=>$val){ if(strlen($val)>0){ //过滤空值 $md5String.=$key.$val; } } $secret = md5($md5String.$secret); } $data['sign'] = $secret; if('GET'==$method){ $sendUrl = $api_url.'?'.http_build_query($data); //把数据转换成url参数形式,a=b&c=d&e=f $result = file_get_contents($sendUrl); }else{ $header = ['Content-Type: application/x-www-form-urlencoded;charset=utf-8']; $ch = curl_init(); if(is_array($data))$data = http_build_query($data); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_POST, true);//POST curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_AUTOREFERER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); curl_setopt($ch, CURLOPT_ENCODING,'gzip,deflate'); $result = curl_exec($ch); } $result = json_decode($result,true); print_r($result);
#!/usr/bin/python3 # -*- coding: UTF-8 -*- #该代码为python3.7示例代码 import ssl,time,hashlib,string from urllib import request,parse,error; from urllib.parse import quote api_url = 'https://登录后显示/pyi/185/359'; appid = '应用id';#在后台我的应用查看; secret = '应用密钥';#在后台我的应用查看; data = { 'appid':'1', 'format':'json', 'time':'1545829466', 'url_image':'', }; data['appid'] = appid; data['time'] = round(time.time());#当前服务器时间 keysArr = list(data.keys()) #取出字典key keysArr.sort()#对字典key进行排序 md5String = ''; params = [] for key in keysArr: if data[key]: val = str(data[key]) md5String+=key+val params.append(key + "=" + val ) md5String += secret; m = hashlib.md5() b = md5String.encode(encoding='utf-8') m.update(b) sign = m.hexdigest() params.append('sign='+sign)#加入计算后的sign值去请求 params = '&'.join(tuple(params)); #把列表转成元组后用&分隔,最终转换成字符串 a=b&c=d&e=f ssl._create_default_https_context = ssl._create_unverified_context url = api_url+'?'+params; url = quote(url, safe=string.printable) req = request.Request(url) opener = request.build_opener() r = opener.open(fullurl=req) doc = r.read(); print(doc.decode('utf-8'))