Elements の初期化時に、特定の状態にある Intent の Client Secret を再利用できないようにしました互換性に関わる変更
新機能
Elementsインスタンスを作成する場合に、分割できない支払い方法(Boleto、knet、Oxxo、us_cash_voucher)で、成功済み
、キャンセル済み
、処理中
、requires_
またはrequires_
の状態にあるPayment Intents またはSetup Intentsの Client Secret が再利用されないようにするための検証を導入します。
この変更により互換性が失われる理由
以前の Elements では、関連する PaymentIntent や SetupIntent の状態に関係なく、有効な Client Secret でインスタンスを初期化することができました。現在、Elements は、インスタンスの作成を許可する前に、Intent が適切な状態であることを検証します。つまり、完了したインテントや処理中のインテントから Client Secret を再利用していた導入は、Elements インスタンスの作成に成功する代わりに、検証エラーが表示されるようになります。
影響
この変更により、Elementsがフォームを壊れた状態でレンダリングしないようにすることで、顧客に壊れた支払いフォームが表示されないようになります。以前は、完了または処理中の Intent から Client Secret を持つ Elements インスタンスを作成することはできましたが、顧客による支払いの試みは失敗していました。現在では、Elements は事前に Intent の状態を検証し、機能しない支払いフォームをレンダリングする代わりに、エラーを導入する側に返します。
導入を確実に継続するために:
- 新しいバリデーションエラーに対処してください: Elements インスタンスの作成時にこれらのバリデーションエラーをキャッチするように、エラー処理 を更新してください。
- 新しい PaymentIntent または SetupIntent を作成します: バリデーションエラーが発生したら、新しい PaymentIntent または SetupIntent を作成し、そのClient Secret を使用して Elements を初期化します。
- Client Secret の再利用は避けてください: 新しい決済フローには常に新しい Client Secret を使用するか、関連するインテントが有効な状態であることを検証してください(通常、
requires_
またはpayment_ method requires_
)。confirmation
この検証は、API バージョン2025-09-30.
以降を使用する場合にのみ適用されます。したがって、それ以前の API バージョンを使用する既存の導入は影響を受けません。