电子发票 | 数电发票 Python SDK | 发票接口 | 开票api |开票、验真、红冲一站式集成
电子发票/数电发票 Python SDK | 开票、验真、红冲一站式集成发票 Python SDK专为电子发票、数电发票全电发票场景设计支持开票、红冲、版式文件下载等核心功能快速对接税务平台API。关键词: 电子发票SDK,数电票Python,开票接口,发票api,发票开具,发票红冲,全电发票集成 核心功能基础认证✅获取授权- 快速接入税务平台身份认证✅人脸二维码登录- 支持数电发票平台扫码登录✅认证状态查询- 实时获取纳税人身份状态发票开具数电蓝票开具- 支持增值税普通/专用电子发票版式文件下载- 自动获取销项发票PDF/OFD/XML文件发票红冲红冲前蓝票查询- 精确检索待红冲的电子发票红字信息表申请- 生成红冲凭证负数发票开具- 自动化红冲流程 快速安装pipinstalltax-invoice 查看pypi地址 查看中文文档 为什么选择此SDK精准覆盖中国数电发票标准- 严格遵循国家最新接口规范开箱即用- 无需处理XML/签名等底层细节专注业务逻辑企业级验证- 已在生产环境处理超100万张电子发票 支持的开票类型发票类型状态数电发票普通发票✅ 支持数电发票增值税专用发票✅ 支持数电发票铁路电子客票✅ 支持数电发票航空运输电子客票行程单✅ 支持数电票二手车销售统一发票✅ 支持数电纸质发票增值税专用发票✅ 支持数电纸质发票普通发票✅ 支持数电纸质发票机动车发票✅ 支持数电纸质发票二手车发票✅ 支持from tax.invoiceimportInvoiceClientimporttimeimporttraceback# 新增导入importjsonimportredisimportqrcodeimportioimportbase64 from PILimportImageimporttimefrom inputimeoutimportinputimeout, TimeoutOccurred# pip install inputimeoutfrom datetimeimportdatetime, timedelta APP_KEYAPP_SECRET# 配置信息nsrsbh# 统一社会信用代码title# 名称营业执照username# 手机号码电子税务局password# 个人用户密码电子税务局type6#6基础7标准 xhdwdzdh重庆市渝北区龙溪街道丽园路2号XXXX 1325580XXXX# 地址和电话 空格隔开xhdwyhzh工商银行XXXX 15451211XXXX#开户行和银行账号 空格隔开tokendebugTrue# 连接Redis 安装pip install redisrredis.Redis(host127.0.0.1,port6379,passwordtest123456,# 如果有密码填写密码db0,# 使用第0个数据库decode_responsesTrue# 自动将Redis返回的字节转为字符串)# 初始化客户端clientInvoiceClient(app_keyAPP_KEY,app_secretAPP_SECRET,base_urlhttps://api.fa-piao.com,debugdebug)#字符串转二维码图片base64def str_to_qr_base64(data: str)-str:# 创建二维码对象qrqrcode.QRCode(version1,error_correctionqrcode.constants.ERROR_CORRECT_L,box_size10,border4,)qr.add_data(data)qr.make(fitTrue)# 生成图像PIL Imageimgqr.make_image(fill_colorblack,back_colorwhite)# 将图像保存到内存中的字节流bufferio.BytesIO()img.save(buffer,formatPNG)# 获取 Base64 编码img_base64base64.b64encode(buffer.getvalue()).decode(utf-8)returnimg_base64#字符串转二维码图片 在命令行打印def print_qr_code(data):# 创建二维码对象qrqrcode.QRCode(version1,error_correctionqrcode.constants.ERROR_CORRECT_L,# 低容错率生成的图案更稀疏box_size1,# 字符画中通常设为1border1,# 边框宽度)qr.add_data(data)qr.make(fitTrue)# 使用终端输出模式# qrcode 库支持将二维码输出为 ANSI 字符qr.print_ascii(invertTrue)# invertTrue 会让背景变黑码变白适合深色背景终端def blue_invoice():# 开票税额计算demoinvoice_params{fpqqlsh:APP_KEY str(int(time.time()*1000)),# 建议用你的订单号fplxdm:82,kplx:0,xhdwsbh:nsrsbh,username:username,xhdwmc:title,xhdwdzdh:xhdwdzdh,xhdwyhzh:xhdwyhzh,ghdwmc:个人,# ghdwsbh: 91330100563015xxxx,zsfs:0,bz:,# 添加商品明细fyxm:[{fphxz:0,spmc:*研发和技术服务*技术服务费,je:114.68,sl:0.01,se:1.14,hsbz:1,spbm:3040105000000000000}],# 合计金额hjje:113.54,hjse:1.14,jshj:114.68}# 数电蓝票开具接口 文档returnclient.invoice.blue_invoice(**invoice_params)def get_pdf_ofd_xml(fphm): pdf_params{downflag:4,nsrsbh:nsrsbh,username:username,fphm:fphm}# 获取销项数电版式文件 文档 PDF/OFD/XMLpdf_responseclient.invoice.get_pdf_ofd_xml(**pdf_params)ifpdf_response.get(code)200: print(pdf_response.get(data))def get_token(force_updateFalse): keynsrsbh username TOKENifforce_update:# 获取授权Token文档auth_responseclient.auth.get_authorization(nsrsbh,type)# auth_response client.auth.get_authorization(nsrsbh,type,username,password)ifauth_response.get(code)200: print(f授权成功Token: {auth_response.get(data, {}).get(token)})tokenauth_response.get(data,{}).get(token)r.set(key, token,ex3600*24*30)# 过期时间30天client.auth.set_token(token)else: tokenr.get(key)iftoken: client.auth.set_token(token)else: get_token(force_updateTrue)try:# 一 获取授权token 可从缓存redis中获取Tokenget_token()# 前端模拟数电发票/电子发票开具 (蓝字发票)# 二 开具蓝票invoice_responseblue_invoice()match invoice_response.get(code):case200: print(获取pdf/ofd/xml)print(fdata: {invoice_response.get(data)})# 三 获取pdf/ofd/xmlget_pdf_ofd_xml(invoice_response.get(data,{}).get(Fphm))case420: print(登录(短信认证))# 登录数电发票平台 短信# 1 发短信验证码login_responseclient.auth.login_dppt(nsrsbhnsrsbh,usernameusername,passwordpassword)iflogin_response.get(code)200: deadline(datetime.now() timedelta(seconds300)).strftime(%Y-%m-%d %H:%M:%S)try:# 设置 timeout300 表示 300 秒smsinputimeout(promptf请在300秒内({deadline}前)输入验证码: ,timeout300)print(f\n你输入了: {sms})# 2 输入验证码login_response2client.auth.login_dppt(nsrsbhnsrsbh,usernameusername,passwordpassword,smssms)iflogin_response2.get(code)200: print(login_response2.get(data))print(\n短信验证成功)print(\n再次调用blue_invoice)invoice_responseblue_invoice()get_pdf_ofd_xml(invoice_response.get(data,{}).get(Fphm))except TimeoutOccurred: print(\n短信认证输入超时!)case430: print(人脸认证)# 1 获取人脸二维码qr_code_responseclient.face.get_face_img(nsrsbhnsrsbh,usernameusername,type1)ewmlyqr_code_response.get(data,{}).get(ewmly)ifewmlyswj:print(\n请使用电子税务局app扫码)print(\n成功做完人脸认证,请输入数字 1)# ewm自己生成二维码 安装pip install qrcode[pil]ifqr_code_response.get(data,{}).get(ewm)is not None and len(qr_code_response.get(data,{}).get(ewm))500:# ewm qr_code_response.get(data, {}).get(ewm)# qr_base64 str_to_qr_base64(ewm)# qr_code_response.get(data, {}).update({ewm: qr_base64})# print(qr_base64)# 前端使用示例: base64Uri data:image/png;base64, qr_base64print_qr_code(qr_code_response.get(data,{}).get(ewm))deadline(datetime.now() timedelta(seconds300)).strftime(%Y-%m-%d %H:%M:%S)try:# 设置 timeout300 表示 300 秒input_numinputimeout(promptf请在300秒内({deadline}前)输入: ,timeout300)print(f\n你输入了: {input_num})# 2 认证完成后 获取人脸二维码认证状态rzidqr_code_response.get(data,{}).get(rzid)face_status_responseclient.face.get_face_state(nsrsbhnsrsbh,rzidrzid,usernameusername,type1)print(code: str(face_status_response.get(code)))print(data: str(face_status_response.get(data)))ifface_status_response.get(data)is not None: slztface_status_response.get(data,{}).get(slzt)ifslzt1:print(\n人脸未认证)elifslzt2:print(\n人脸认证成功)print(\n请再次调用blue_invoice)invoice_responseblue_invoice()get_pdf_ofd_xml(invoice_response.get(data,{}).get(Fphm))elifslzt3:print(\n人脸认证二维码过期--重新获取人脸二维码)except TimeoutOccurred: print(\n人脸认证输入超时!)elifewmlygrsds:print(个人所得税app扫码)# ewm是二维码的base64case401:# 重新授权print(f{invoice_response.get(code)}授权失败:{invoice_response.get(msg)})print(重新授权 获取token 缓存到redis)get_token(True)invoice_responseblue_invoice()get_pdf_ofd_xml(invoice_response.get(data,{}).get(Fphm))case_: print(f{invoice_response.get(code)}异常: {invoice_response.get(msg)})except Exception as e:# 打印完整堆栈信息包含行号traceback.print_exc()# 新增堆栈跟踪# 添加上下文信息可选print(f\n错误发生时参数状态)print(f当前时间戳: {int(time.time())})

相关新闻

和平精英地铁逃生偷袭战术:从失败到成功的实战指南

和平精英地铁逃生偷袭战术:从失败到成功的实战指南

最近在玩《和平精英》时,很多小伙伴都遇到过这种情况:地铁逃生模式中精心策划的偷袭,却因为各种原因功亏一篑。本文将从战术选择、装备搭配、实战操作三个维度,系统分析偷袭失败的常见原因,并提供一套完整的改进方案。…

2026/7/24 9:57:48 阅读更多 →
Pikachu之文件包含

Pikachu之文件包含

File Inclusion(Local)文件包含漏洞是程序根据用户输入去加载&#xff08;包含&#xff09;一个文件&#xff0c;但没有做好限制&#xff0c;导致攻击者可以让程序加载本不应该加载的文件。假设网站有三个文件index.php news.php about.phpindex.php里面有这样的代码<?php …

2026/7/24 9:42:08 阅读更多 →
技术平权——眨眼猫打造“一顿饭的会务智能体”,让每一场会务活动都能拥有自己的智能体小程序!

技术平权——眨眼猫打造“一顿饭的会务智能体”,让每一场会务活动都能拥有自己的智能体小程序!

关键词▪️一顿饭的成本&#xff1a;平均360元▪️一顿饭的时间&#xff1a;30分钟完成小程序搭建▪️高端会务功能&#xff1a;同样拥有会务报名、现场签到、查座、资料下载、日程、手册等全面功能眨眼猫会务智能体前身是“眨眼猫智慧会务”&#xff0c;从2018年起&#xff0c…

2026/7/23 7:36:22 阅读更多 →

最新新闻

2026年跨境电商选品,千万别踩这5个“伪爆款”坑!(附利润测算表)

2026年跨境电商选品,千万别踩这5个“伪爆款”坑!(附利润测算表)

一、趋势迷雾&#xff1a;当“风口”变成“深坑” 跨境电商的选品&#xff0c;犹如一场充满机遇与陷阱的探险。每年&#xff0c;都有无数卖家追逐着“爆款”的幻影涌入赛道&#xff0c;却往往在喧嚣过后&#xff0c;只留下一地库存与亏损的教训。进入2026年&#xff0c;市场信息…

2026/7/24 12:36:20 阅读更多 →
2026年跨境电商还能做吗?我踩了3个大坑后,发现了这2条出路(血泪复盘)

2026年跨境电商还能做吗?我踩了3个大坑后,发现了这2条出路(血泪复盘)

风口变迁&#xff0c;跨境之路何去何从&#xff1f; 时间步入2026年&#xff0c;跨境电商的讨论热度似乎已不复前几年的狂热。身边不时传来“市场饱和了”、“红利期过了”的声音&#xff0c;让不少观望者心生疑虑&#xff1a;这条赛道&#xff0c;真的还能入场吗&#xff1f; …

2026/7/24 12:36:20 阅读更多 →
AI在医用超声设备合规检测中的应用与突破

AI在医用超声设备合规检测中的应用与突破

1. 项目背景与核心价值医用超声设备的声输出参数检测报告是医疗器械安全监管中的关键文档。这类报告需要严格遵循IEC 60601-2-37等国际标准&#xff0c;包含空间峰值时间平均声强(Ispta)、机械指数(MI)、热指数(TI)等30余项关键参数。传统人工审核方式存在三个痛点&#xff1a;…

2026/7/24 12:36:20 阅读更多 →
FDA正式批准T-DXd(Enhertu)用于HER2阳性早期乳腺癌新辅助与辅助治疗

FDA正式批准T-DXd(Enhertu)用于HER2阳性早期乳腺癌新辅助与辅助治疗

2026年5月15日&#xff0c;美国FDA正式通过常规审批通道&#xff0c;全面批准HER2靶向抗体药物偶联物T-DXd&#xff08;通用名fam-trastuzumab deruxtecan-nxki&#xff0c;商品名Enhertu&#xff0c;中文通用名德曲妥珠单抗&#xff09;的两项全新适应症&#xff0c;覆盖HER2阳…

2026/7/24 12:36:20 阅读更多 →
AI知识库≠把文档扔给大模型——我在集团建AI知识库的真实经验

AI知识库≠把文档扔给大模型——我在集团建AI知识库的真实经验

很多人以为建知识库就是"把 PDF 传给大模型&#xff0c;让它自己看"&#xff0c;我不但见过这么干的&#xff0c;还见过把 10 万份合同直接扔进去然后问 AI"我们的违约金条款都有什么"的&#xff1b;今天说说我在一个制造集团从头建 AI 知识库的经验&#…

2026/7/24 12:36:20 阅读更多 →
UE5蓝图Sequence节点实战:从原理到5大应用场景详解

UE5蓝图Sequence节点实战:从原理到5大应用场景详解

1. 项目概述&#xff1a;从“乱连”到“精通”的Sequence节点实战指南 在虚幻引擎5的蓝图世界里&#xff0c;Sequence节点就像一把功能强大的瑞士军刀&#xff0c;但很多开发者&#xff0c;尤其是刚接触蓝图不久的朋友&#xff0c;常常把它用成了“万能胶”——不管三七二十一&…

2026/7/24 12:35:20 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化&#xff0c;核心特色&#xff1a;三维 X/Y/Z 三轴空间&#xff0c;所有散点分布在 0~10 立方体空间内&#xff1b;散点使用径向渐变实现立体 3D 圆球质感&#xff1b;支持鼠标 / 触屏拖拽画布&#xff0c;…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls&#xff1a;进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值&#xff0c;并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好&#xff0c;我是一名编程初学者&#xff0c;同时这也是我编程学习之路上的第一篇博客。在这里&#xff0c;我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手&#xff0c;目前在学习c语言&#xff0c;我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中&#xff0c;我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源&#xff0c;还是配置文件、证书等&#xff0c;都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下&#xff0c;但这…

2026/7/24 3:59:20 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP&#xff08;轻量级目录访问协议&#xff09;作为企业级身份认证的黄金标准&#xff0c;已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时&#xff0c;发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/24 1:23:39 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”&#xff0c;而是以可解释、可审计、可迭代的方式&#xff0c;赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻