# Adobe Commerce のトラブルシューティング Adobe Commerce 向け Stripe プラグインのトラブルシューティング方法をご紹介します。 [開発者モードを有効化](https://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-mode.html)して、エラーを見つけやすくします。 ## インストールの問題 Composer を使用しているときに、インストールプロセスで最も発生しやすい問題は、以下のエラーの発生です。 ``` Composer package not found: Could not find a matching version of package stripe/stripe-payments ``` この問題が発生した場合は、以下のステップを実行してください。 1. [Adobe マーケットプレイス](https://marketplace.magento.com/stripe-stripe-payments.html) からモジュールを注文します。 1. 入力した Adobe Commerce API キーに誤りがあった場合は、`~/.composer/auth.json` にあるファイルを削除します。 1. 再度 Composer コマンドを実行します。ユーザー名とパスワードの入力が必要な場合があります。必ず、注文したときに使用したアカウントの Adobe Commerce API キーを入力してください。Adobe Commerce から[認証キーを取得](https://devdocs.magento.com/guides/v2.4/install-gde/prereq/connect-auth.html)できます。 ## アップグレードとキャッシュの問題 モジュールをアップグレードしても何らかの原因で新たな変更が表示されない場合は、一連のディレクトリーを削除することで Adobe Commerce のキャッシュを手動でクリアできます。[Adobe Commerce 2.3](https://devdocs.magento.com/guides/v2.3/howdoi/php/php_clear-dirs.html)、および [Adobe Commerce 2.4](https://devdocs.magento.com/guides/v2.4/howdoi/php/php_clear-dirs.html) のそれぞれで削除が必要なディレクトリーについては、Adobe Commerce の公式ドキュメントをご覧ください。 対象のディレクトリーを削除してから、以下のコマンドを実行します。 ```bash php bin/magento setup:upgrade php bin/magento cache:flush ``` 本番環境で稼働している場合は、静的アセットをコンパイルしてデプロイする必要があります。 ```bash php bin/magento setup:di:compile php bin/magento setup:static-content:deploy ``` Varnish を実行している場合は、var/cache/* ファイルを削除した後に Varnish も再起動する必要があります。一部のブラウザーでは Adobe Commerce のリクエストもキャッシュされています。キャッシュの問題が続く場合は、別のブラウザーで試してみてください。 ## 決済時に支払い方法が表示されない 決済時に決済手段が表示されない場合、いくつかの原因が考えられます。 - Stripe PHP ライブラリが存在しないか、以前のバージョンを使用している場合があります。このディペンデンシーは、[インストール手順](https://docs.stripe.com/use-stripe-apps/adobe-commerce/payments/install.md)のステップ 3 に従ってインストールできます - 古いバージョンの Stripe PHP ライブラリーを使用している別の Stripe モジュールがインストールされている場合があります。他の有効な Stripe モジュールはすべて、無効にするかアンインストールしてください。 - [Stripe API キーの設定](https://docs.stripe.com/use-stripe-apps/adobe-commerce/payments/configuration.md#general-settings)が正しく行われていません。 - 一部の特定の国や通貨に対して利用できる支払い方法を制限している場合があります。 ## Apple Pay または Google Pay が表示されない [Express Checkout を設定しても](https://docs.stripe.com/use-stripe-apps/adobe-commerce/payments/configuration.md#express-checkout)ウォレットが表示されない場合は、トラブルシューティングのためにいくつかのチェックが必要です。 ### ダッシュボードのチェック - Apple Pay と Google Pay が[支払い方法設定](https://dashboard.stripe.com/settings/payment_methods)で有効になっていることを確認する。 - [ドメインが登録され、有効になっている](https://dashboard.stripe.com/settings/payment_method_domains)ことを確認します。 - Web サイトのドメインが `www` で始まる場合は、ドメインが `www.example.com` であり、`example.com` ではないことを確認してください。両方が有効な場合は、両方のドメインを登録する必要があります。 ### デバイスチェック - Apple Pay と Google Pay が[支払い方法設定](https://dashboard.stripe.com/settings/payment_methods)で有効になっていることを確認する。 - Apple Pay の場合は、iOS 10 以上を実行している iPhone の Safari を使用してください。 - Google Pay の場合は、Google アカウントでログインして、Chrome Desktop または Chrome Mobile を使用してください。 - ウォレットに少なくとも 1 枚のカードが存在することを確認します。 - iOS では、**設定** > **ウォレット** > **Apple Pay** に移動してカードを追加できます。 - Chrome では、**設定** > **自動入力** > **お支払い方法** > **新しいクレジットカードを追加**と移動してカードを追加できます。 - [デモを試し](https://docs.stripe.com/elements/express-checkout-element.md#try-demo)、デバイスが正しく構成されていることを確認します。 ### 構成チェック - モジュールの構成セクションで **Express Checkout** を有効にしていることを確認してください。 - 既定のフォールバック国 ( **店舗** > **構成** > **一般** > **国オプション** > **既定の国** ) が構成されていることを確認してください。 ### 技術チェック - Web サイトがファイアウォールまたは基本認証の内側にある場合、ドメインの検証が失敗する可能性があります。ブラウザのコンソールで関連する警告がないか確認してください。 - Web サイトは、有効な *TLS* (TLS refers to the process of securely transmitting data between the client—the app or browser that your customer is using—and your server. This was originally performed using the SSL (Secure Sockets Layer) protocol) 1.2 証明書を使用し、HTTPS を介して配信する必要があります。これはブラウザーまたは [SSL Labs](https://www.ssllabs.com/ssltest/) から確認してください。 - HTTPS ページに安全でないイメージ、CSS、JavaScript が読み込まれていないことを確認します。これは、ブラウザーの URL バーで南京錠のマークをクリックして確認できます。 ### 商品ページのチェック 決済時にウォレットが表示されても、商品ページに表示されない場合は、次の理由が考えられます。 - Adobe Commerce 管理でゲストチェックアウトが無効化されています。 - Web サイトで提供している商品ページに有効な TLS 1.2 証明書がありません。 - テーマの **カートに追加** ボタンテンプレートを上書きしました。 ### あまり一般的ではない理由 - 古い Stripe API キーを使用していないことを確認してください。Apple Pay には、`pk_live_` または `pk_test_` で始まる最新の API キーが必要です。公開キーは、ダッシュボードの[開発者セクション](https://dashboard.stripe.com/apikeys)で作成できます。 - OneStepCheckout モジュールを使用している場合は、ゲスト顧客が請求先住所を送信したときに支払いフォームを更新するように OSC モジュールを構成する必要がある場合があります。ほとんどの場合、これは必要ありません。 - Stripe.js を初期化しているときに JavaScript エラーが発生する。この場合は、ブラウザーのコンソールで Stripe.js に関連する JavaScript エラーがないかを確認してください。 ## 保留中の注文が滞っている場合 注文を作成すると、初期ステータスは `Pending Payment` になります。これは、顧客の銀行による支払いのオーソリがまだ保留中であることを示します。リダイレクトベースの支払い方法の場合はすべて、オーソリが発生すると、 Stripe は *Webhook* (A webhook is a real-time push notification sent to your application as a JSON payload through HTTPS requests) を使用してお客様のウェブサイトに通知します。注文が `Pending Payment` から `Processing` に変化しない場合は、Webhook が欠落しているか、誤っている可能性があります。 [Webhooks 設定](https://dashboard.stripe.com/webhooks)にアクセスして、ストア URL が指定された Webhook エンドポイントが存在するかどうかを確認します。存在しない場合は、Magento のルートディレクトリーから次のコマンドを実行して手動で作成することができます。 ```bash bin/magento stripe:webhooks:configure ``` Webhook エンドポイントがすでに存在する場合は、**Error Rate** を確認して、失敗した Webhook を特定します。Webhook エンドポイントをクリックすると、エラーメッセージが表示されます。サーバー設定の誤りが原因ではない Webhook の問題についてサポートが必要な場合は、[Stripe サポート](https://support.stripe.com)のフォームからお問い合わせのうえ、発生したエラーの詳細をお知らせください。 Webhook の問題を修正したら、ウェブサイトに正常に配信されなかった`charge.succeeded` イベントを再送信する必要があります。モジュールには再送信のコマンドが 3 つ用意されており、単一のイベント、特定の範囲のイベント、特定の日付範囲のイベントを再送信できます。 ``` bin/magento stripe:webhooks:process-event [-f|--force] bin/magento stripe:webhooks:process-events-range bin/magento stripe:webhooks:process-events-date-range [] ``` > 完全な日時 (`2021-12-21 11:22:33+0200`) を設定することも、英語のテキストで記述した日時 (`last Monday`) を使用することもできます。明示的に指定しない限り、Magento のデフォルトのタイムゾーンが使用されます。 > > サポートされるすべての日付形式については、[strtotime](https://www.php.net/strtotime) でご確認ください。 Stripe ダッシュボードの[開発者セクション](https://dashboard.stripe.com/events?type=charge.succeeded&delivery_success=false)ですべての失敗した `charge.succeeded` イベントのリストを取得し、上記のコマンドを使用して再送信するイベントを決定できます。 ## エラーのログ記録とサーバー側のエラー (HTTP 500) Adobe Commerce はアプリケーションのランタイムに発生したあらゆるエラーと例外を `var/log` ディレクトリーに記録します。これらのエラーは、以下の 2 つのファイルにあります。 ``` var/log/system.log var/log/exception.log ``` SSH にアクセスできる場合は、以下のコマンドでエラーメッセージを絞り込むことができます。 ```bash grep -i Stripe var/log/system.log ``` コンソールでは発生するエラーをリアルタイムで (または特定のページを更新したときに) 表示できます。エラーをモニタリングするには、以下のコマンドを実行して、エラーログを監視します。 ```bash tail -f var/log/* ``` シェルにアクセスできない場合は、このファイルをダウンロードして、テキストエディターで Stripe のエラーを探すことができます。