3D セキュアの支払いを回収する前に注文を行う方法
3DS 認証が必要な場合の Stripe モジュールのデフォルトの動作を変更します。
このガイドでは、3DS 認証が必要な場合に Stripe モジュールのデフォルトの動作を変更するカスタマイズについて説明します。デフォルトの設計では、3DS が必要な場合、3DS 認証が成功すると、注文が確定される前に支払いが回収されます。
このカスタマイズを使用すると、まず注文は Pending Payment
ステータスになり、3DS モーダルが開きます。3DS が成功すると、顧客は成功ページにリダイレクトされます。Stripe は、charge.succeeded Webhook イベントを非同期でお客様のウェブサイトに送信します。これにより、注文のステータスは Processing
または Complete
に変わります。
顧客が 3DS 認証に失敗した場合、または支払いプロセスを途中で破棄した場合、注文は 2 ~ 3 時間後に cron を介して自動的にキャンセルされます。この間、在庫はリザーブされたままになります。注文をすぐにキャンセルする必要がある場合は、管理エリアで保留中の支払い注文の有効期間を使用して設定できます。
新しいモジュールを作成
Create a new module with the following directory structure. Replace Vendor
with your preferred vendor name.
app/code/Vendor/StripeCustomizations/ ├── etc/ │ ├── module.xml │ └── config.xml ├── registration.php
registration.
内で、モジュールを Magento に登録します。
<?php \Magento\Framework\Component\ComponentRegistrar::register( \Magento\Framework\Component\ComponentRegistrar::MODULE, 'Vendor_StripeCustomizations', __DIR__ );
etc/module.
内でモジュールを定義し、依存関係を設定して、Stripe モジュールの後に確実に読み込まれるようにします。
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd"> <module name="Vendor_StripeCustomizations" setup_version="1.0.0"> <sequence> <module name="StripeIntegration_Payments"/> </sequence> </module> </config>
etc/config.
内で、Stripe モジュールの以下の設定を上書きします。
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd"> <default> <stripe_settings> <manual_authentication> <rest_api></rest_api> <!-- Setting rest_api to empty will achieve the desired behavior --> </manual_authentication> </stripe_settings> </default> </config>
注
The single x
value for <rest_
is a placeholder character that forces Magento to respect the override. If you leave the value empty, Magento ignores it and wont override the value.
モジュールを有効化します。
php bin/magento module:enable Vendor_StripeCustomizations php bin/magento setup:upgrade php bin/magento cache:clean php bin/magento cache:flush
GraphQL に関する考慮事項
REST API は、コアの Luma テーマに基づく Magento テーマの大半で使用されています。REST API の代わりに GraphQL を使用するカスタムのストアフロントを使用している場合、これはデフォルトであり、上記の変更を行う必要はありません。
ただし、支払いの成功後に GraphQL ベースのストアフロントで注文を行う場合は、etc/config.
内の以下の設定を使用して同様の方法でカスタマイズできます。
<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd"> <default> <stripe_settings> <manual_authentication> <graphql_api>card,link</graphql_api> </manual_authentication> </stripe_settings> </default> </config>