【问题标题】:Stripe checkout autofill of disable customer name禁用客户名称的条带结帐自动填充
【发布时间】:2022-01-20 15:31:48
【问题描述】:

我正在使用条带结帐。我已经收集了一些用户数据,我不希望客户填写他们的名字两次。如何自动填充或禁用名称字段?

const session = await stripe.checkout.sessions.create({
        customer_email: !customerFound ? data.email : undefined,
        customer: customerFound ? customer.id : undefined,
        customer_update: customerFound
          ? {
              address: 'auto',
              name: 'auto',
            }
          : undefined,
        line_items: lineItems,
        client_reference_id: data.userId,
        payment_method_types: ['card', 'bancontact'],
        mode: 'payment',
        success_url: `${domain}/betaling-gelukt?session_id={CHECKOUT_SESSION_ID}`,
        cancel_url: `${domain}/betaling-mislukt`,
        locale: 'nl',
        billing_address_collection: 'auto',
        metadata: {
          reservation: data.reservatieId,
        },
      });

【问题讨论】:

  • 这是打字稿吗?

标签: javascript node.js typescript stripe-payments


【解决方案1】:

As per the documentation:

在付款模式下,将使用客户最近的银行卡付款方式在结帐页面上预填电子邮件、姓名、银行卡详细信息和帐单地址。

在订阅模式下,如果是卡,将使用客户的默认付款方式,否则将使用最近的卡。 Checkout 需要一个有效的帐单地址才能预填客户的信用卡详细信息。

这可能适合您的情况,也可能不适合您的情况。


或者,您可以完全取消 Stripe Checkout,并在 Stripe 提供的后端 API 旁边使用 Stripe.js。这种方法有其优点/缺点:

优点:

  • 对元素和元素流的完全控制
  • 根据您自己的选择自定义/样式元素

缺点

  • 您必须手动创建后端并处理PaymentIntentSubscription

我们遇到了与您类似的问题,虽然从 Stripe Checkout 到 Stripe.js 的初始更改有点学习曲线,但它给了我们更多的控制权,让我们无需重定向到外部站点即可进行付款。

注意:我故意省略了代码,因为 Stripe.js 的实现可能会根据您的需要而有所不同,但如果需要,我可以提供一些示例。

【讨论】:

  • 谢谢,下一个项目我将使用 Stripe.js (=elements?)
【解决方案2】:

请注意,结帐会话的 name 字段不一定是您客户的姓名,而是他们使用的付款方式上的姓名。

除非customer 已经附加了可以与​​setup_future_usage 一起使用的付款方式,否则无法预填充此name 字段。

  • 对于 bancontact 付款方式,这是不可能的,因为它只适用于一次性付款。
  • 对于卡付款方式,这是可能的。这将预先填写Stripe documentation 中提到的电子邮件、姓名、卡详细信息和帐单地址。

一般来说,我建议让 Stripe Checkout 收集所有信息,然后据此更新您的系统,而不是反过来。

【讨论】:

  • 该名称不是付款方式的名称,而是客户名称。我需要一些额外的自定义字段,所以我必须在结帐前收集一些信息,所以我不妨收集所有信息。
猜你喜欢
  • 2019-12-22
  • 1970-01-01
  • 2018-05-14
  • 2013-03-22
相关资源
最近更新 更多