如何通过Stripe API获取非Stripe支付发票的Receipt URL?
解决方案:获取Stripe线下支付发票的收据PDF链接
当发票通过Stripe以外渠道完成支付时,Invoice对象的charge_id会为空,无法通过Charge对象获取收据URL,但可以通过以下两种方式通过API获取收据:
方式1:直接生成PDF临时URL
Stripe提供了专门的API端点用于生成已支付发票的PDF文件,返回的URL为临时链接(有效期约24小时),可直接下载或转发给用户。
替换原代码的else部分:
else: # 针对线下支付的发票,生成PDF收据临时URL try: # 调用Stripe API生成发票PDF pdf_result = stripe.Invoice.create_pdf(invoice.id) # 提取PDF链接 receipt_pdf_url = pdf_result.url print(receipt_pdf_url) except stripe.error.StripeError as e: print(f"生成PDF失败:{e.user_message}")
方式2:获取托管发票页面链接
如果需要让用户自行查看并下载收据,可以使用Invoice对象自带的hosted_invoice_url属性,该链接为永久有效,用户打开页面后可直接下载PDF收据。
代码示例:
else: # 获取托管发票页面链接 hosted_receipt_url = invoice.get('hosted_invoice_url') if hosted_receipt_url: print(hosted_receipt_url)
注意事项
- 仅当发票状态为
paid时,才能成功生成PDF或访问托管页面 - 临时PDF URL有效期为24小时,若需长期保存建议下载文件后自行存储
- 使用API时需确保你的Stripe密钥拥有足够权限(至少包含
invoices:read权限)
内容的提问来源于stack exchange,提问作者Daniel Marcus
相关产品推荐
相关产品推荐

