如何在 Stripe Element JS 上请求电子邮件

Riq*_*ara 5 stripe-payments

我正在使用 stripe 元素创建付款意图,但是我确实需要捕获客户的电子邮件和姓名,以便在购买后授予对产品的访问权限,这是我的代码:

async function initialize() {
  const { clientSecret } = await fetch("../create.php", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ items }),
  }).then((r) => r.json());

  elements = stripe.elements({ clientSecret });

  const paymentElement = elements.create("payment", {
    fields: {
      billingDetails: {
        name: 'auto',
        email: 'auto',
      }
    }
  });
  paymentElement.mount("#payment-element");
}
Run Code Online (Sandbox Code Playgroud)

付款元素已创建并获取 CC 信息,选项设置为自动或关闭,文档中没有选项使字段成为必填项,我如何仍然获得有关付款意图的信息?

小智 10

不幸的是,目前无法将付款元素本身配置为需要电子邮件等详细信息。

目前获得此功能的最佳方法可能是禁用付款元素中的这些字段,创建电子邮件字段,并在允许提交表单之前检查它是否已填写。然后您可以将电子邮件传递给参数payment_method_data.billing_details[1]

const {error} = await stripe.confirmPayment({
  //`Elements` instance that was used to create the Payment Element
  elements,
  confirmParams: {
    return_url: 'https://my-site.com/order/123/complete',
    payment_method_data: {
      billing_details: {
        email: 'test@example.com',
      }
    }
  },
});
Run Code Online (Sandbox Code Playgroud)

[1] https://stripe.com/docs/js/ payment_intents/confirm_ payment# confirm_ payment_intent-options-confirmParams- payment_method_data-billing_details