电子发票 | 数电发票 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/18 4:15:25 阅读更多 →
Pikachu之文件包含

Pikachu之文件包含

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

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

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

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

2026/7/18 4:14:25 阅读更多 →

最新新闻

春晚机器人秀技术拆解:从多智能体协同到工程化落地挑战

春晚机器人秀技术拆解:从多智能体协同到工程化落地挑战

1. 从春晚舞台到技术巅峰&#xff1a;一场机器人秀背后的硬核拆解今年春晚&#xff0c;相信不少朋友和我一样&#xff0c;被一个瞬间“震”住了&#xff1a;一群形态各异的机器人&#xff0c;在舞台上整齐划一地起舞、奔跑&#xff0c;甚至完成高难度的后空翻。这个来自宇树科技…

2026/7/18 5:04:44 阅读更多 →
windows网络适配器驱动开发-移动宽带 (MBB) WDF 类扩展 (MBBCx)

windows网络适配器驱动开发-移动宽带 (MBB) WDF 类扩展 (MBBCx)

从下一个版本的 Windows 10 开始&#xff0c;Windows 驱动程序工具包 (WDK) 包括移动宽带 (MBB) WDF 类扩展&#xff0c;可与 NetAdapterCx 配合使用。 MBB-NetAdapter客户端驱动程序首先是完全完善的 WDF 客户端驱动程序&#xff0c;然后是 NetAdapterCx 客户端驱动程序&#…

2026/7/18 5:04:44 阅读更多 →
C++循环结构深度解析:for、while、do...while实战指南与避坑

C++循环结构深度解析:for、while、do...while实战指南与避坑

1. 项目概述&#xff1a;为什么循环是C的“发动机”&#xff1f;如果你刚开始学C&#xff0c;或者已经写过一些简单的打印、计算程序&#xff0c;可能会觉得代码是一行一行往下走的&#xff0c;像一条直线。但当你真正想解决点实际问题&#xff0c;比如计算全班50个同学的平均分…

2026/7/18 5:04:44 阅读更多 →
Web安全基石:访问控制模型、RBAC实战与纵深防御体系

Web安全基石:访问控制模型、RBAC实战与纵深防御体系

1. 项目概述&#xff1a;为什么访问控制是Web安全的基石做Web安全这些年&#xff0c;我处理过太多因为访问控制没做好而引发的安全事件。从普通的企业官网到复杂的金融交易系统&#xff0c;几乎每一个被攻破的案例背后&#xff0c;都能找到访问控制失效的影子。很多人一提到Web…

2026/7/18 5:04:44 阅读更多 →
Unity Android异步纹理加载优化:ETC2压缩与缓存策略实战

Unity Android异步纹理加载优化:ETC2压缩与缓存策略实战

1. 项目概述&#xff1a;为什么异步加载纹理在Android上是个“老大难”&#xff1f;做移动端开发&#xff0c;尤其是Unity游戏&#xff0c;在Android平台上处理纹理加载&#xff0c;说多了都是泪。你肯定遇到过这种场景&#xff1a;玩家进入一个新场景&#xff0c;或者打开一个…

2026/7/18 5:04:43 阅读更多 →
走进 Gang of Four 设计模式:享元模式

走进 Gang of Four 设计模式:享元模式

走进 Gang of Four 设计模式&#xff1a;享元模式 说明&#xff1a;不仅告诉你"怎么用"&#xff0c;更告诉你"为什么这样设计" 前置知识&#xff1a;Java 面向对象基础&#xff08;接口、HashMap、不可变对象&#xff09;、内存管理基本概念 &#x1f4ca;…

2026/7/18 5:03:43 阅读更多 →

日新闻

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

从模糊意图到可执行指令:Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;从模糊意图到可执行指令&#xff1a;Claude PRD中Prompt Engineering与需求颗粒度的5级映射法则 在Claude驱动的产品需求文档&#xff08;PRD&#xff09;生成实践中&#xff0c;原始业务意图往往以自然语言片…

2026/7/18 0:00:38 阅读更多 →
Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

Cursor配置生成失效?3大隐藏陷阱+4行修复代码,资深工程师连夜整理的紧急补救清单

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Cursor配置生成失效&#xff1f;3大隐藏陷阱4行修复代码&#xff0c;资深工程师连夜整理的紧急补救清单 Cursor 配置生成突然失效&#xff0c;是近期高频报障场景。表面看是 cursor.config.json 未更新或 LSP…

2026/7/18 0:00:38 阅读更多 →
某智驾大牛创业

某智驾大牛创业

作者&#xff1a;钟声编辑&#xff1a;Mark出品&#xff1a;红色星际头图&#xff1a;智能驾驶图片据悉&#xff0c;国内某头部智驾公司端到端模型技术大牛Z投身创业&#xff0c;并且已经拿到融资。Z不仅是该头部公司内部最年轻的对标阿里P10级别技术负责⼈&#xff0c;更是业内…

2026/7/18 0:00:38 阅读更多 →

周新闻

月新闻