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