简介:本文详细介绍了如何使用Python实现对接国家税务总局全国增值税发票查验平台,涵盖平台概述、技术准备、核心实现步骤及安全注意事项,助力开发者高效完成发票查验自动化。
国家税务总局全国增值税发票查验平台(以下简称“查验平台”)是官方提供的在线发票真伪查验服务,支持增值税专用发票、普通发票、电子发票等类型的实时验证。通过该平台,企业可快速确认发票信息真实性,规避税务风险。其核心功能包括:
对于开发者而言,通过Python实现自动化查验接口,可集成至企业财务系统或ERP中,实现发票查验的流程化与智能化。
requests:用于HTTP请求。hashlib:生成加密签名(如MD5)。json:处理返回的JSON数据。pandas:批量处理查验结果。安装命令:
pip install requests pandas
查验平台通常要求以下参数:
fpqlDm:发票代码(10位数字)。fphm:发票号码(8位数字)。kprq:开票日期(格式:YYYYMMDD)。kje:开票金额(不含税,单位:元)。sign:加密签名(用于身份验证)。
import hashlibimport requestsimport jsonfrom datetime import datetimedef generate_sign(app_id, secret_key, params):"""生成MD5签名"""sorted_params = sorted(params.items(), key=lambda x: x[0])param_str = "".join([f"{k}{v}" for k, v in sorted_params]) + secret_keyreturn hashlib.md5(param_str.encode("utf-8")).hexdigest()def check_invoice(app_id, secret_key, fpqlDm, fphm, kprq, kje):# 构造请求参数params = {"fpqlDm": fpqlDm,"fphm": fphm,"kprq": kprq,"kje": str(kje),"appId": app_id}# 生成签名params["sign"] = generate_sign(app_id, secret_key, params)# 发送请求(示例为模拟接口,实际需替换为查验平台URL)url = "https://inv-veri.chinatax.gov.cn/api/check" # 示例地址headers = {"Content-Type": "application/json"}response = requests.post(url, json=params, headers=headers, verify=True)# 解析结果if response.status_code == 200:result = response.json()if result.get("code") == "0":print("发票查验成功:", result["data"])else:print("查验失败:", result["message"])else:print("请求错误:", response.status_code)# 示例调用app_id = "your_app_id"secret_key = "your_secret_key"check_invoice(app_id, secret_key, "1234567890", "98765432", "20230101", 1000.00)
对于企业级应用,需处理大量发票查验请求。可通过多线程或异步IO提升效率:
import concurrent.futuresdef batch_check(invoices, app_id, secret_key):with concurrent.futures.ThreadPoolExecutor(max_workers=5) as executor:futures = [executor.submit(check_invoice, app_id, secret_key, **inv)for inv in invoices]for future in concurrent.futures.as_completed(futures):future.result() # 处理每个查验结果# 示例发票列表invoices = [{"fpqlDm": "1234567890", "fphm": "98765432", "kprq": "20230101", "kje": 1000.00},# 更多发票...]batch_check(invoices, app_id, secret_key)
查验结果通常包含发票状态、购方税号、销方税号等信息。建议将结果存储至数据库(如MySQL)或导出为Excel:
import pandas as pddef save_results(results, output_path):df = pd.DataFrame(results)df.to_excel(output_path, index=False)print(f"结果已保存至 {output_path}")
0表示成功,1表示发票不存在),针对性处理。通过Python实现查验平台对接,可显著提升企业财务效率。未来可扩展功能包括:
开发者应持续关注税务总局平台更新,确保代码兼容性。实际开发中,建议先在测试环境验证,再部署至生产环境。