Commerce Stripe
Stripe決済処理のためのDrupal Commerce統合を提供し、3Dセキュア、Webhook、Stripe Connectなどの機能を備えた最新のPayment Elementとレガシーの Card Elementの両方をサポートします。
commerce_stripe
インストール
composer require 'drupal/commerce_stripe:^2.1'
composer require 'drupal/commerce_stripe:8.x-1.3'
概要
Commerce StripeはDrupal CommerceをStripeの決済処理プラットフォームと統合し、マーチャントがStripeの安全な決済インフラを通じてクレジットカード、デジタルウォレット(Apple Pay、Google Pay)、代替決済手段(Klarna、Affirm、Alipayなど)を受け付けることを可能にします。
このモジュールは2つの決済ゲートウェイプラグインを提供します:推奨されるStripe Payment Elementは、複数の決済手段をサポートするStripeの最新の完全ホスト型決済フォームをレンダリングし、レガシーのStripe Card Elementはクレジットカードのみの統合用です。両方ともPSD2準拠のためのStrong Customer Authentication(3Dセキュア)をサポートしています。
主な機能には、注文合計が変更された際の自動決済インテント同期、リアルタイム決済ステータス更新のためのWebhookサポート、マーチャントアカウント設定を簡素化するStripe Connect OAuthが含まれます。このモジュールはStripe.jsを使用して、機密カードデータがサーバーに触れないようにし、PCIコンプライアンスの範囲を縮小します。
Features
- クレジットカード、デジタルウォレット、後払いオプションを含む複数の決済手段をサポートするStripe Payment Element統合
- クレジットカードのみのチェックアウトフロー用のレガシーStripe Card Element
- PSD2準拠のためのStrong Customer Authentication(SCA)と3Dセキュア2.0サポート
- 完全な決済ライフサイクル管理:承認、キャプチャ、取消、返金操作
- 手動でのキー入力なしでAPI設定を簡素化するStripe Connect OAuth
- StripeとDrupal間のリアルタイム決済同期のためのWebhookサポート
- カート合計が変更された際の自動決済インテント金額更新
- オプションのユーザーインタラクションシグナル収集による高度な不正検出
- 決済方法ロゴサポート付きのカスタマイズ可能なチェックアウト表示ラベル
- Webhookイベントのログ記録とトラブルシューティング用のオプションサブモジュール
Use Cases
標準的なEコマースチェックアウト
クレジットカード、Apple Pay、Google Pay、その他の決済方法をサポートする最新のチェックアウト体験のためにStripe Payment Elementを使用します。即時決済収集には「自動」キャプチャ方法を、単発購入シナリオには「オンセッション」使用を設定します。
サブスクリプションコマース
顧客の積極的な参加なしにサイトが定期サブスクリプションの課金を行えるように「オフセッション」決済方法使用を設定します。決済方法は保存され、将来の課金に再利用可能になります。
承認とキャプチャのワークフロー
「手動」キャプチャ方法を使用してチェックアウト時に顧客のカードにホールドを置き、注文が履行された後で資金をキャプチャします。注文管理インターフェースを通じて部分キャプチャと取消操作をサポートします。
多通貨国際販売
Stripe Payment Elementは通貨変換を自動的に処理し、顧客の場所と設定された通貨に基づいて適切な決済方法を表示します。
後払い
Stripe Payment ElementでKlarnaまたはAffirm決済方法を有効にして、顧客に分割払いオプションを提供します。これらは自動的に設定される単発使用の決済方法です。
大量Webhook処理
commerce_stripe_webhook_eventサブモジュールをAdvanced Queueと一緒にインストールして、Webhook処理を延期します。Webhookは即座にログに記録され、バックグラウンドで処理されるため、応答時間と信頼性が向上します。
Stripe Connectを使用したプラットフォーム/マーケットプレイス
Stripe Connect OAuth認証を使用して、マーケットプレイスの販売者がAPIキーを共有せずにStripeアカウントを接続できるようにします。モジュールはOAuthフローとトークンストレージを自動的に処理します。
Tips
- 本番APIクレデンシャルは$config['commerce_payment.commerce_payment_gateway.your_gateway']['configuration']['secret_key']を使用してsettings.phpに保存し、データベースに保存されないようにしてください。
- より簡単なキー管理とAPIキーを変更せずにアクセスを取り消す機能のために、Stripe Connect認証を使用してください。
- Webhook配信と処理の可視性のためにcommerce_stripe_webhook_eventサブモジュールをインストールしてください。開発とトラブルシューティング時に特に役立ちます。
- ローカル開発では、Stripe CLIを使用してWebhookを転送してください:stripe listen --forward-to your.ddev.site/payment/notify/your_gateway
- Payment ElementはCard Elementよりも多くの決済方法をサポートし、Stripeからの継続的な更新を受けるため、新しい統合には推奨されます。
- 同期キャプチャに比べてレイテンシが減少するため、チェックアウトパフォーマンスの向上には'capture_method'を'automatic_async'に設定してください。
- 特に高リスクビジネスでは、不正検出スコアを向上させるためにすべてのページでStripe.jsを読み込んでください(グローバル設定)。
Technical Details
Admin Pages 3
/admin/commerce/config/stripe
すべてのStripe決済ゲートウェイに適用されるグローバルなCommerce Stripe設定を構成します。
/admin/commerce/config/payment-gateways/manage/{gateway_id}
認証、Webhook設定、決済オプション、外観のカスタマイズを含むStripe Payment Element決済ゲートウェイを設定します。
/admin/commerce/config/stripe-webhook-events
Stripeからサイトに送信されたWebhookイベントを表示および管理します。決済の問題のトラブルシューティングとWebhook配信の監視に役立ちます。(commerce_stripe_webhook_eventサブモジュールが必要)
権限 2
Hooks 1
hook_js_settings_alter
初期化前にStripe要素に渡されるJavaScript設定のカスタマイズを可能にします。
Troubleshooting 7
/admin/commerce/config/checkout-flowsのチェックアウトフロー設定で「レビュー」ステップに「Stripe review」チェックアウトペインが有効になっていることを確認してください。
Card Element統合でもStripeレビューペインを有効にする必要があります。これがないと、3Dセキュアモーダル表示に必要なJavaScriptが読み込まれません。
WebhookエンドポイントURLが/payment/notify/[gateway_id]と一致することを確認し、署名シークレットがStripeダッシュボードから正しくコピーされていることを確認し、サーバーのファイアウォールがStripeのIP範囲からの受信リクエストを許可していることを確認してください。
APIキーが選択したモード(テスト vs 本番)と一致することを確認してください。プレースホルダーキーを使用する場合は、「フォーム送信時にAPIキーを検証する」のチェックを外してください。本番環境では、設定オーバーライドを使用してsettings.phpにキーを保存してください。
OrderPaymentIntentSubscriberがこれを自動的に処理します。モジュールが適切にインストールされ、イベントサブスクライバーサービスが登録されていることを確認してください。エラーがないかcommerce_stripeログを確認してください。
リターン失敗から回復するためにcommerce_stripe_webhook_eventサブモジュールを有効にしてください。payment_intent.succeeded Webhookは、リターンルートが失敗した場合に注文を完了できます。
Apple PayはStripeダッシュボードでドメイン検証が必要です。Webサーバーの/.well-known/apple-developer-merchantid-domain-associationに検証ファイルをアップロードしてください。
Security Notes 6
- このモジュールはStripe.jsを使用しており、機密カードデータがサーバーに触れないことを保証し、PCI DSSコンプライアンス要件を大幅に削減します。
- 本番環境では常にHTTPSを使用してください。Stripe.jsは安全でない接続では失敗します。
- データベースダンプや設定エクスポートでの露出を防ぐため、settings.phpの設定オーバーライドを使用して本番APIキーをデータベース外に保存してください。
- 偽装されたWebhookリクエストを防ぐため、Webhook署名シークレットを設定してWebhook署名検証を有効にしてください。
- 「administer commerce stripe」とWebhookイベント権限は、信頼できる管理者のみに制限する必要があります。
- 追加のベストプラクティスについては、https://stripe.com/docs/securityのStripeセキュリティドキュメントを確認してください。