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

如何在Stripe嵌入式结账中预填邮箱且允许用户编辑?

解决方案:预填可编辑邮箱到Stripe Embedded Checkout

你遇到的问题根源在于setCustomerEmail的作用是将Checkout Session与特定邮箱绑定(视为已验证的客户身份),因此字段会被锁定不可编辑。要实现预填可编辑的邮箱默认值,需要改用Stripe Embedded Checkout的表单预填功能,通过前端配置传递默认值,而非后端设置customer_email参数。

步骤1:修改后端代码(移除setCustomerEmail)

后端不再设置customer_email,因为这个参数会锁定邮箱字段:

public Session createCheckoutSession(CreateCheckoutSessionParams createCheckoutSessionParams) {
    return Session.create(SessionCreateParams.builder()
            .setUiMode(SessionCreateParams.UiMode.EMBEDDED)
            // 移除setCustomerEmail调用
            // other params...
            .build());
}

步骤2:前端配置预填邮箱

在Next.js的EmbeddedCheckoutProvider中,通过options传入prefilledCustomer对象,设置预填的邮箱地址。这个值会作为表单默认值,同时允许用户编辑:

// 假设你已获取到用户的建议邮箱地址,比如从上下文或API获取
const userEmail = "user@example.com";

const options = {
  clientSecret: "你的Session客户端密钥",
  prefilledCustomer: {
    email: userEmail,
  },
};

<EmbeddedCheckoutProvider stripe={stripePromise} options={options}>
  <EmbeddedCheckout/>
</EmbeddedCheckoutProvider>

原理说明

  • setCustomerEmail:用于关联已存在的Stripe客户或创建新客户,邮箱字段会被标记为已验证,因此不可编辑。
  • prefilledCustomer:属于表单预填配置,仅提供默认输入值,不绑定客户身份,用户可以自由修改邮箱内容,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Gustavo Steinmetz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 08:30:02