已传入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
相关产品推荐
相关产品推荐

