如何通过Stripe API发送PDF发票邮件并直接获取发票PDF文件?
解决方案:通过Stripe API获取发票PDF并发送邮件
当然有可行的方案!Stripe API本身就提供了直接获取发票PDF的能力,甚至还能帮你自动完成邮件发送的步骤,下面我分几种场景给你详细说明:
1. 获取Stripe生成的发票PDF链接
当发票处于**已定稿(finalized)**状态时,Stripe会自动生成对应的PDF文件,并提供一个临时访问链接。你只需要调用「获取发票」API就能拿到这个链接:
举个Python代码示例:
import stripe stripe.api_key = "sk_your_secret_key" # 替换为你的实际发票ID invoice = stripe.Invoice.retrieve("in_XXXXXXXXXXXX") # 提取PDF临时链接,有效期约7天 pdf_url = invoice.invoice_pdf
拿到这个pdf_url后,你可以直接把它插入到自定义邮件中发给客户,或者下载到本地后作为附件发送。
2. 直接下载PDF文件内容
如果需要把PDF保存到自己的服务器再发送,你可以向上面拿到的pdf_url发送GET请求,带上你的Stripe密钥作为授权头,就能获取二进制的PDF内容:
import requests response = requests.get( pdf_url, headers={"Authorization": f"Bearer {stripe.api_key}"} ) # 将PDF保存到本地服务器 with open("customer_invoice.pdf", "wb") as file: file.write(response.content)
3. 让Stripe自动发送发票邮件(最省心的方式)
其实你完全不用自己处理邮件和PDF的生成——Stripe内置了发票邮件发送功能,调用API就能让Stripe自动把带PDF附件的发票邮件发给客户:
# 给已定稿的发票发送邮件 stripe.Invoice.send_invoice("in_XXXXXXXXXXXX")
你也可以在创建发票时直接设置send_invoice=True,让Stripe在发票定稿后自动触发邮件:
invoice = stripe.Invoice.create( customer="cus_XXXXXXXXXXXX", collection_method="send_invoice", days_until_due=30, send_invoice=True, # 开启自动发送邮件 # 其他发票参数(如商品、金额等)... )
邮件的模板可以在Stripe后台的「设置→发票设置→邮件模板」里自定义样式和内容,完全适配你的品牌需求。
关键注意事项
- 只有已定稿的发票才会生成
invoice_pdf链接,草稿状态的发票无法获取; invoice_pdf链接是临时的,有效期约7天,若需要长期存储建议下载到自己的服务器;- 确保你的Stripe账户已经完善了发票模板的公司信息、Logo等配置,这样生成的PDF才会符合你的品牌规范。
内容的提问来源于stack exchange,提问作者Kamal Sanghavi




