使用Stripe创建无订阅发票后自动发送邮件的技术咨询
解决Stripe无订阅发票自动发送的问题
嘿,我之前也碰到过一模一样的情况——用API创建完无订阅发票后,默认确实不会自动推送到客户邮箱,只能在控制台手动点发送。不过有两种实用的方法能搞定自动发送的需求:
1. 创建发票后直接调用发送API
这是最直接的方式:当你通过API完成发票创建后,紧接着调用Stripe的发送发票接口就能触发邮件推送。给你几个主流编程语言的示例:
Node.js 示例
const stripe = require('stripe')('你的测试密钥'); // 先创建无订阅发票 const invoice = await stripe.invoices.create({ customer: 'cus_xxxxxx', collection_method: 'send_invoice', days_until_due: 14, // 按需添加发票项等参数 }); // 立即触发邮件发送 await stripe.invoices.sendInvoice(invoice.id);
Python 示例
import stripe stripe.api_key = "你的测试密钥" # 创建发票 invoice = stripe.Invoice.create( customer='cus_xxxxxx', collection_method='send_invoice', days_until_due=14, # 按需添加发票项等参数 ) # 发送发票邮件 stripe.Invoice.send_invoice(invoice.id)
小提示:如果你的发票是先创建为
draft(草稿)状态,需要先调用finalize_invoice接口将其定稿,再执行发送操作。
2. 通过Webhook自动触发发送
如果你的发票是自动生成的(比如定时任务批量创建),可以用Stripe的Webhook监听发票状态变化,当发票变为finalized(已定稿)状态时,自动调用发送接口。
具体步骤:
- 登录Stripe控制台,在Webhook设置中添加
invoice.finalized事件的监听地址 - 你的后端服务接收该Webhook事件后,提取发票ID,调用
send_invoice接口完成发送
这种方式更适合全自动化场景,不需要在创建发票的代码里额外插入发送逻辑。
测试模式的小提醒
测试环境下Stripe不会真的发送邮件到真实邮箱,但你可以在控制台的测试数据 > 邮件日志里查看模拟推送的邮件内容。另外,记得给客户填写有效的测试邮箱(比如test@example.com这类标准测试地址)。
内容的提问来源于stack exchange,提问作者Sam




