具有 Checkout Sessions API Beta 更改日志的 Element
通过 Checkout Sessions API Beta 集成应用跟踪对 Element 的更改。
警告
本文档包含与具有 Checkout Sessions API 的 Element Beta 测试版相关的更改日志。
如果您已经在使用具有 Checkout Sessions API 的 Basil 版 Element,则此文档不适用于您。
迁移到 Basil
更改
- Breaking 异步方法(如 confirm 或 applyPromotionCode)使用不同的架构进行解析:
- 如果成功,更新的会话状态将填充在
session
密钥下。以前是在success
密钥下。
- 如果成功,更新的会话状态将填充在
- Breaking 现在,如果 Checkout Session 上已设置了 return_url,那么在 confirm 上传入 returnUrl 时会抛出错误。
- Breaking 确认成功后重定向到的返回 URL 之前具有不一致的查询参数。现在删除了额外的参数,URL 仅包含在 confirm 上的 returnUrl 或 Checkout Session 上的 return_url 中提供的内容。
- Breaking 改进了订阅模式 Session 的 Checkout Session API 延迟,并修复了阻止客户在首次尝试付款后更新会话的错误
- The change creates the subscription after the user has completed the payment, so
checkout_
andsession. invoice checkout_
are null until the Checkout Session completes.session. subscription - If you currently rely on the deprecated
payment_
field, we recommend using theintent. invoice checkout_
webhook, which ensures an invoice is present, andsession. completed checkout_
or Invoice Payment list to find the associated invoice.session. invoice - 要了解更多信息,请阅读 API 更改日志。
- The change creates the subscription after the user has completed the payment, so
- 将 percentOff 添加到 discountAmounts 作为显示折扣的选项。
升级
在迁移到 Basil 之前,首先将您的集成更新到 custom_
。
- 如果您使用的是任何 Stripe NPM 软件包,则必须先将
@stripe/stripe-js
和@stripe/react-stripe-js
分别至少升级到7.
和0. 0 3.
。6. 0 - 如果您通过脚本标签加载 Stripe.js,请通过替换标签来更新脚本标签以使用已确定版本的 Stripe.js,如下所示:
checkout.html
<head> <title>Checkout</title> <script src="https://js.stripe.com/v3"></script> <script src="https://js.stripe.com/basil/stripe.js"></script> </head>
- 初始化 Stripe.js 时删除 Stripe.js beta 标头。
- 删除 API 版本 Beta 标头,并在后端集成指定 API 版本,至少为
2025-03-31.
。basil
升级前
升级后
Beta 更改日志
具有 Checkout Sessions API Beta 的 Elements 使用两种 Beta 测试版本:
- Stripe.js Beta 头(例如
custom_
),在前端集成上设置。checkout_ beta_ 6 - API 版本 Beta 头(例如,
custom_
),在后端集成上设置。checkout_ beta=v1
前端 Beta 测试版
在初始化 Stripe.js时指定前端 Beta 测试版本。
custom_checkout_beta_6
如果您使用的是任何 Stripe NPM 软件包,则必须先将 @stripe/stripe-js
和 @stripe/react-stripe-js
至少升级到 6.
和 3.
。
- Breaking total.appliedBalance 的符号已被翻转。现在,正数会增加支付金额,负数会减少支付金额。
- Breaking 将
clientSecret
替换成了 fetchClientSecret。更新您的集成,将解析的异步函数传递到客户端私钥,而不是传递静态值。 - Breaking Elements 方法已重命名。
- 如果您使用的是 React Stripe.js,除了升级
@stripe/react-stripe-js
之外,不需要进行任何操作。 - 如果您使用的是 HTML/JS:
- 使用
createPaymentElement()
而非createElement('payment')
。 - 使用
createBillingAddressElement()
而非createElement('address', {mode: 'billing'})
。 - 使用
createShippingAddressElement()
而非createElement('address', {mode: 'shipping'})
。 - 使用
createExpressCheckoutElement()
而非createElement('expressCheckout')
。 - 使用
getPaymentElement()
而非getElement('payment')
。 - 使用
getBillingAddressElement()
而非getElement('address', {mode: 'billing'})
。 - 使用
getShippingAddressElement()
而非getElement('address', {mode: 'shipping'})
。 - 使用
getExpressCheckoutElement()
而非getElement('expressCheckout')
。
- 使用
- 如果您使用的是 React Stripe.js,除了升级
- Breaking 更新了与确认相关的字段,以更准确地反映会话状态。
- canConfirm 现在会响应任何挂载的 Billing Address Element 或 Shipping Address Element。
- canConfirm 在有进行中的确认操作时,现在会变为
false
。 - 删除了
confirmationRequirements
。
- Breaking 如果在创建 Checkout Session 时提供了 customer_email,则 updateEmail 现在会引发错误。如果您打算预填充客户可以更新的电子邮件地址,请在页面加载后立即调用
updateEmail
,而不是传递customer_
。email - Breaking returnUrl 必须是绝对 URL(例如,以
https://
开头,而不是以相对 URL 开头,例如/success
)。 - Breaking 将定价字段更新为嵌套对象,以便于呈现。
- 将数值替换为包含
amount
(格式化的货币字符串,例如$10.
)和00 minorUnitsAmount
(表示货币最小单位值的整数)的对象。如果您已经在读取金额,请改为从minorUnitsAmount
读取。- 例如,将
total.
替换为total total.
。total. minorUnitsAmount
- 例如,将
- 您必须从
checkout
对象中读取total.
或total. amount total.
和total. minorUnitsAmount currency
和minorUnitsAmountDivisor
中的每一个,并显示在 UI 中,否则会引发错误。这有助于在 CheckoutSession 更新时保持结账页面同步,包括添加未来的 Stripe 功能,且只需最少的 UI 代码更改即可。
- 将数值替换为包含
- 现在可以收集客户税号了。了解如何收集税号。
- 现在,结账页面底部提供了一个仅限在测试模式使用的助手,为您提供集成指导,并为常见测试场景提供快捷方式。
custom_checkout_beta_5
- Breaking
initCustomCheckout
函数已被重命名为 initCheckout- 在 React Stripe.js 中,
CustomCheckoutProvider
被已重命名为CheckoutProvider
,useCustomCheckout
并被已重命名为useCheckout
。
- 在 React Stripe.js 中,
- Breaking 要确认 Express Checkout Element,调用 confirm,并将 confirm 事件 作为
expressCheckoutConfirmEvent
传入。- 以前,Express Checkout Element 通过调用
event.
来确认。confirm()
- 以前,Express Checkout Element 通过调用
- Breaking 调用 confirm 时,Payment Element 和 Address Element 将验证表单输入并呈现任何错误。
- Breaking 错误消息已进行标准化和改进。
- 函数解决的返回错误/表示已知情况,例如无效的付款详情或资金不足。这些是可预测的问题,可以通过在结账页面上显示
message
来传达给您的客户。 - 被函数拒绝的错误/表示集成本身的错误,例如无效的参数或配置。不应向客户显示这些错误。
- 函数解决的返回错误/表示已知情况,例如无效的付款详情或资金不足。这些是可预测的问题,可以通过在结账页面上显示
- Breaking 异步方法(如 confirm 或 applyPromotionCode)使用不同的架构进行解析:
- 添加了
type="success"|"error"
鉴别器字段。 - 如果成功,更新的会话状态将填充在
success
密钥下。以前是在session
密钥下。 - 否则,错误将继续填充在
error
密钥下。
- 添加了
- 向 confirm 添加了
email
、phoneNumber
、billingAddress
和shippingAddress
选项。 - Breaking Address Element 不再自动更新 Session 上的 billingAddress 或 shippingAddress 字段。
custom_checkout_beta_4
- 向 Session 对象添加的 images。
- 在创建 Payment Element 时添加的字段选项。
- 在创建 Express Checkout Element 时添加的 paymentMethods 选项。
- Breaking 现在,将无效选项传递给 createElement 会引发错误。以前,无法识别的选项将被静默忽略。
- Breaking updateEmail 和 updatePhoneNumber 异步应用更改。在客户完成输入完整的值之前调用这些方法可能会导致性能不佳。
- 不要在每个输入的更改事件上调用
updateEmail
或updatePhoneNumber
,而应等到客户完成输入时,例如在模糊输入时或提交表单进行付款时。 updateEmail
现在验证输入的信息是否为格式正确的电子邮件地址,如果使用了无效的输入,则返回错误。updatePhoneNumber
仍然不对输入字符串执行任何验证。
- 不要在每个输入的更改事件上调用
custom_checkout_beta_3
- 以下字段已添加到 Session 对象:
- 现可复用保存的银行卡。了解如何保存和复用支付方式。
- Breaking Payment Element 的默认 layout 已更改为
accordion
。- 要继续使用以前的默认布局,必须显式指定
layout='tabs'
。
- 要继续使用以前的默认布局,必须显式指定
- Breaking confirm 的默认行为已更改为在成功确认后始终重定向到您
return_
。url - 以前,仅当客户选择基于重定向的支付方式时才会重定向
confirm
。要继续使用原行为,必须将 redirect=‘if_required’ 传递到confirm
。
- 以前,仅当客户选择基于重定向的支付方式时才会重定向
custom_checkout_beta_2
- Breaking
lineItem.
字段已被删除并替换为 lineItem.recurring.intervalCount。recurring. interval_ count - Breaking
lineItem.
字段已被删除并替换为以下内容:amount
custom_checkout_beta_1
这是最初的前端测试版。
后端更改日志
在设置服务器端库时指定后端 Beta 测试版本。
后端 Beta 测试版没有变化。