使用嵌入式结账表单时,如果电子邮件与 Stripe 客户关联,则阻止结账

问题描述 投票:0回答:1

我正在尝试在我的应用程序中实现该图(在本文底部找到它)。除了红色的两个块之外,整个流程已经实现。需要它们是为了防止用户意外多次购买相同的产品。

我希望能够创建一个结帐会话,在其中我可以指定我不想允许现有客户进行购买,例如:

// I'm using the Node.JS and JavaScript SDK
stripe.checkout.sessions.create({
  line_items: [{
    price: priceId,
    quantity: 1,
  }],
  mode: "payment",
  ui_mode: "embedded",
  redirect_on_completion: "never",

  // I would like something like this:
  forbid_returning_customers: true,
});

只有当未登录的访问者创建结帐会话时,我才会将其设置为

true
,并且一旦用户插入与现有 Stripe 客户电子邮件匹配的电子邮件,它就会阻止结帐。

对于登录的访问者,我会将其设置为

false
并且我会预先填充客户 ID,以便为他们预先填写电子邮件。

如果它允许我指定自定义错误消息或以编程方式处理事件的方法,那就更好了。

不幸的是,我在 Stripe API 文档中找不到任何满足我需求的内容。我错过了什么?


这是整个流程的图表,我提供它以防其他解决方案可以适用于我的请求。

diagram

stripe-payments
1个回答
0
投票

这是不可能的,因为您在结账会话期间没有可以侦听的事件,然后对会话采取操作,API 中也没有任何内容提供此行为。

相反,您希望使用用户的 email

创建一个 Customer 对象
(听起来您可能已经在这样做了)。然后,您将此客户对象传递给您的结帐会话创建请求,这将导致结帐会话中的电子邮件被预填充。

您基本上需要在创建结帐会话之前执行身份验证,以便您检查是否已使用该电子邮件创建了一个客户对象,如果没有创建一个新对象,如果是,您可以重新使用客户对象并可能阻止如果他们尝试这样做,就会购买相同的产品。

© www.soinside.com 2019 - 2024. All rights reserved.