You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Stripe的payment_intent_data实现付款成功后向客户发送邮件

配置未生效的常见原因和修复方案

你当前的配置未生效通常由几个常见问题导致,按优先级排查修改即可:

  1. 未开启Stripe后台自动发件开关
    这是最常见的遗漏项,Stripe默认不会自动发送付款收据,需要手动开启:登录Stripe管理后台,依次进入「设置」-「客户通信」-「收据」板块,打开「付款成功后自动发送收据」的开关。
  2. 测试模式限制
    Stripe测试环境下,使用测试卡号完成的付款默认不会触发自动邮件发送。你可以切换到生产环境验证,或者在Stripe后台找到对应测试交易的Payment Intent详情页,点击「发送收据」按钮手动触发,验证邮箱可正常收件。
  3. 邮箱被拦截
    先检查收件邮箱的垃圾邮件、推广邮件分类文件夹,确认收据邮件没有被服务商拦截。
  4. 不需要硬编码固定邮箱
    如果你的需求是将收据发送到用户在结账页面填写的邮箱,不需要在payment_intent_data.receipt_email写死固定地址,只要开启后台开关,Stripe会自动获取用户结账时输入的邮箱作为收件地址,无需额外配置。

如果你确实需要指定固定收件邮箱,或者动态传入客户预留在你站点的邮箱,修改后的参考代码如下:

app.post('/create-checkout-session', async (req, res) => {
  try {
    // 可从前端请求体中获取当前登录用户的预留邮箱
    const { customerEmail } = req.body;
    const session = await stripe.checkout.sessions.create({
      payment_method_types: ['card'],
      payment_intent_data: {
        // 优先使用用户预留邮箱,没有的话填充默认值
        receipt_email: customerEmail || "test@test.com"
      },
      // 可选配置:传入customer_email参数,结账页会自动填充该邮箱,减少用户输入
      customer_email: customerEmail,
      shipping_rates: ['shr_1JgbJxAuqIBxGbL5lCkeLyfu'],
      shipping_address_collection: {
        allowed_countries: ['FI'],
      },
      line_items: [
        {
          price_data: {
            currency: 'eur',
            product_data: {
              name: 'book',
            },
            unit_amount: 6200,
          },
          quantity: 2,
        },
      ],
      mode: 'payment',
      success_url: 'http://localhost:4200/myynti/success',
      cancel_url: 'http://localhost:4200/myynti/cancel',
    });
    res.json({ id: session.id });
  } catch (err) {
    res.status(400).json({ error: err.message })
  }
});

内容的提问来源于stack exchange,提问作者M.Y.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 01:06:02