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

已传入CustomerId但Stripe付款仍显示未知客户问题求助

Stripe付款完成后付款归属客户显示为未知的解决方案

核心问题:你在后端创建PaymentIntent时,没有将其与对应的Stripe Customer ID关联,导致Stripe无法识别该付款所属的客户,默认标记为访客。

查看你的后端代码,无论是新创建客户还是使用已有客户的分支,stripe.paymentIntents.create方法都只传入了amount和currency参数,缺少关键的customer字段。

修改后的后端代码

const user = await strapi.entityService.findOne(
  "plugin::users-permissions.user",
  ctx.state.user.id
);

if (user.stripeCustomerId == null) {
  const customer = await stripe.customers.create({ email: user.email });
  const result = await strapi.entityService.update(
    "plugin::users-permissions.user",
    ctx.state.user.id,
    {
      data: {
        stripeCustomerId: customer.id,
      },
    }
  );

  const ephemeralKey = await stripe.ephemeralKeys.create(
    { customer: customer.id },
    { apiVersion: "2024-06-20" }
  );

  // 新增customer字段关联到PaymentIntent
  const paymentIntent = await stripe.paymentIntents.create({
    amount: 4444,
    currency: "usd",
    customer: customer.id
  });

  return {
    ephemeralKey: ephemeralKey.secret,
    paymentIntent: paymentIntent.client_secret,
    customerId: customer.id,
  };
} else {
  const ephemeralKey = await stripe.ephemeralKeys.create(
    { customer: user.stripeCustomerId },
    { apiVersion: "2024-06-20" }
  );

  // 新增customer字段关联到PaymentIntent
  const paymentIntent = await stripe.paymentIntents.create({
    amount: 4444,
    currency: "usd",
    customer: user.stripeCustomerId
  });

  return {
    ephemeralKey: ephemeralKey.secret,
    paymentIntent: paymentIntent.client_secret,
    customerId: user.stripeCustomerId,
  };
}

说明

前端传递customerId和临时密钥只是用于Payment Sheet的客户身份验证和信息展示,但付款与客户的绑定逻辑必须在后端创建PaymentIntent时完成。只有当PaymentIntent明确关联了Customer ID,Stripe后台才会将该付款归属到对应的客户名下。

内容的提问来源于stack exchange,提问作者James Tian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 10:35:08