2026年9月27日

2026年9月27日

WooCommerce の Stripe プラグインで決済エラーが出るときの原因と対処|接続状態・Webhook・テストモード・3D セキュア・ログの見方

WooCommerce の Stripe プラグイン(WooCommerce Stripe Payment Gateway)で決済エラーが出るとき、原因の多くは Stripe との接続・Webhook の状態、テスト用と本番用の取り違え、カード側の認証(3D セキュア)の失敗、そして他のプラグインやテーマとの競合 のどれかです。やみくもに設定を触る前に、WooCommerce 側のログと Stripe ダッシュボードの記録で「どこで止まったか」を見ると、短い時間で原因にたどり着けます。

結論を先にまとめます。

  • まず WooCommerce → 設定 → 決済 → Stripe の「アカウント詳細」で、支払い・入金・Webhook・同期が有効になっているかを見ます。Webhook が「設定済み」でなければ、注文の状態が Stripe の結果と食い違います。
  • 「ログイン情報は正しいのに決済できない」場合は、テスト用アカウントに本番のカードを使っている、またはその逆が多いです。
  • エラーの内容は、Stripe プラグインの詳細設定で エラーメッセージの記録 を有効にし、WooCommerce → ステータス → ログ で注文番号を検索して読みます。
  • カードが拒否されたとき(card_declined など)は、サイトの不具合ではなくカード発行会社の判断です。購入者に別のカードを案内します。
WooCommerce の Stripe 決済エラーを切り分ける 5 段階。接続と Webhook の状態、テストと本番の確認、ログの確認、カード側の原因、プラグイン競合の順に見る

Stripe プラグインの決済はどこで失敗するか

WooCommerce の Stripe 決済は、おおまかに次の順で進みます。どの段階で止まったかで、見る場所が変わります。

段階 起きること 止まったときの見え方
1. カード入力欄の表示 ブラウザーが Stripe の JavaScript を読み込み、入力欄を描く 入力欄が出ない、読み込み中のまま回り続ける
2. 支払いの作成 サイトが Stripe に PaymentIntent(支払いの予約)を作る 「決済処理中にエラーが発生しました」などの汎用メッセージ
3. カード側の認証 3D セキュア(本人認証)が必要なら購入者が認証する 認証画面の後にエラー、または認証がキャンセルされる
4. 支払いの確定 Stripe が結果を返し、注文が「処理中」などになる 決済は成功したのに注文が「保留中」のまま
5. Webhook での通知 Stripe からサイトに非同期で結果が届く 返金や後日の確定が注文に反映されない

1 と 2 はサイト側の設定や競合、3 はカード側、4 と 5 は Webhook の問題であることが多いです。

手順 1: 接続と Webhook の状態を確認する

管理画面で WooCommerce → 設定 → 決済 → Stripe → 設定 を開き、「アカウント詳細」の「接続を設定」を見ます。公式ドキュメントでは、ここで支払い(Payment)・入金(Payout)・Webhook・同期(Sync)が有効になっていることを確認するよう案内されています。

Webhook はプラグインの 8.6.1 以降、Stripe に接続した時点で自動的に作られます(2026年11月現在)。古い版から更新したサイトや、Stripe ダッシュボードで Webhook を消してしまったサイトでは、「本番」と「テスト」の両方のタブで Webhook の再設定 を押すと作り直されます。プラグインが使う Webhook の宛先は次の形だけです。

https://www.example.com/?wc-api=wc_stripe

Stripe ダッシュボードの「開発者 → Webhook」に他の宛先が並んでいる場合、それは別のプラグインや外部サービスのものです。アカウントの状態が「未完了」と表示されるときは、Stripe への再認証が必要です。

手順 2: テスト用と本番用を取り違えていないか確かめる

Stripe には、実際にお金が動かないテスト環境(サンドボックス)と本番環境があり、それぞれ別の API キーを持ちます。テスト環境につないだままでは本番のカードは通りませんし、本番環境ではテスト用のカード番号は使えません。

確認の手がかりは次のとおりです。

  • プラグインの接続画面に「テスト」のタブや「テストアカウント」の表示があるか。
  • Stripe ダッシュボードの右上の環境の切り替えが、サイトの設定と同じ側になっているか。
  • テスト環境で動作確認をするなら、Stripe が公開しているテスト用カード番号を使います。基本のカードは 4242 4242 4242 4242、有効期限は未来の任意の月、CVC は任意の 3 桁です。

公開前の動作確認はテスト環境で済ませ、公開時に本番へ切り替えてから、少額の実決済とその返金で最終確認をするのが順当です。

手順 3: ログでエラーの内容を読む

Stripe プラグインの詳細設定(Advanced settings)に エラーメッセージの記録(Log error messages)があります。これを有効にして、エラーを再現したあと WooCommerce → ステータス → ログ を開き、注文番号で検索します。公式ドキュメントでは、カード決済の試行ごとに注文番号、支払い ID(ch_ で始まる)、PaymentIntent の ID(pi_)、顧客 ID(cus_)、そして拒否された場合の理由が記録されると説明されています。

同じ支払いは Stripe ダッシュボードの「支払い」や「開発者 → ログ」でも確認できます。サイト側のログに何も残らず、Stripe 側にも記録が無いなら、Stripe に届く前(手順 4・5)で止まっています。

よく見る記録と意味は次のとおりです。

ログや画面の表示 意味 対処
card_declined / insufficient_funds カード発行会社が拒否した サイトの問題ではない。購入者に別のカードを案内
incorrect_cvc / expired_card 入力の誤り、期限切れ 購入者に再入力を案内
authentication_required 3D セキュアの認証が完了していない 購入者が認証を途中で閉じていないか確認
「JavaScript を有効にしてください」 Stripe のスクリプトが読み込めない 手順 5(競合・最適化プラグイン)へ
支払いは成功、注文は「保留中」のまま Webhook が届いていない 手順 1 で Webhook を再設定

手順 4: カード側の原因と 3D セキュアを切り分ける

購入者から「エラーが出る」と言われても、カード発行会社が拒否したものはサイトでは直せません。拒否の理由はログの decline_code に残ります。拒否が特定のカードやブランドに偏っているなら、サイト側の問題ではないと判断できます。

3D セキュア(EU の SCA 要件に基づく本人認証)は、Stripe 側の判断で求められます。認証画面が開いた後に失敗するケースは、購入者が認証を完了していない、またはポップアップを閉じたことが多いです。テスト環境で認証の流れを確かめたいときは、Stripe が公開している 3D セキュア用のテストカード(たとえば 4000 0027 6000 3184 は常に認証を求めます)を使います。

手順 5: HTTPS と、プラグイン・テーマの競合を確認する

Stripe プラグインの要件として、サイトは SSL 証明書を備え HTTPS で公開されている必要があります。購入手続きページだけ HTTP になる、混在コンテンツの警告が出る、といった状態では決済欄が正しく動きません。

カード入力欄が表示されない、読み込み中のまま止まる、JavaScript のエラーが出る、という症状は、他のプラグインやテーマとの競合が多いです。公式のトラブルシューティングでも、ブラウザーの開発者ツールのコンソールでエラーを見ることが勧められています。切り分けの手順は次のとおりです。

  1. ブラウザーの開発者ツール(F12)→ コンソール を開いた状態で購入手続きページを表示し、赤いエラーを控える。
  2. JavaScript や CSS を結合・遅延読み込みする高速化プラグイン、キャッシュプラグインの対象から購入手続きページを外す。多くの高速化プラグインには除外設定があります。
  3. それでも直らなければ、検証用の環境(ステージング)で Stripe と WooCommerce 以外のプラグインを一時的に停止し、1 つずつ戻して原因を特定する。
  4. テーマを一時的に標準テーマ(Twenty Twenty-Five など)に切り替えて再現するか確認する。

本番サイトでプラグインを止めると購入中のお客様に影響します。ホスティングのステージング機能か、複製したテスト環境で行ってください。

WordPress の運用の観点

決済まわりの不具合は、売り上げに直結するうえ、再現が購入者の環境に依存します。日常の運用で次の点を押さえておくと、障害のときに切り分けが早くなります。

  • 更新は検証環境で先に試す。WooCommerce・Stripe プラグイン・PHP の版の組み合わせで動かなくなることがあります。公式ドキュメントも、PHP・WordPress・WooCommerce は新しい版を使うことを要件としています。
  • エラーメッセージの記録は普段から有効にしておく。障害が起きてから有効にすると、肝心の記録が残っていません。
  • テスト環境の接続情報をサイトに残さない。公開後にテスト用のまま運用していた、という事故が起きます。
  • 自分で直せる範囲を決める。ログを読んで Webhook の再設定や除外設定までは管理者で対応できますが、テーマや他のプラグインの PHP に手を入れる段階になったら、頼むか自分で直すかの判断基準を参考に外部へ相談する方が復旧が早いことが多いです。

よくある質問

Stripe の決済エラーで「決済処理中にエラーが発生しました」とだけ出ます。原因はどこで分かりますか

この文言は WooCommerce 側の汎用メッセージで、原因は含まれていません。Stripe プラグインの詳細設定でエラーメッセージの記録を有効にし、WooCommerce → ステータス → ログ を注文番号で検索してください。Stripe ダッシュボードの「開発者 → ログ」にも同じ支払いの記録が残ります。

決済は成功しているのに注文が「保留中」のままです

Stripe からの Webhook がサイトに届いていないときに起きます。WooCommerce → 設定 → 決済 → Stripe → 設定 の「接続を設定」で、本番とテストの両方の Webhook が「設定済み」になっているか確認し、違えば「Webhook の再設定」を押します。セキュリティプラグインや WAF が ?wc-api=wc_stripe への外部からのアクセスを遮っていないかも確認してください。

テスト用のカード番号で本番サイトを確認できますか

できません。テスト用のカード番号はテスト環境(サンドボックス)でだけ使えます。本番環境の確認は、少額の実決済とその返金で行います。

WooCommerce の Stripe プラグインで Webhook のシークレットを手で入れる必要はありますか

8.6.1 以降は接続時に自動で設定されるため、通常は不要です(2026年11月現在)。手で作った古い Webhook が残っていると二重に届くことがあるので、「Webhook の再設定」で作り直す方が確かです。

特定のお客様だけエラーになります

カード発行会社の拒否や 3D セキュアの認証失敗が考えられます。ログの拒否理由を確認し、サイト側の記録に問題が無ければ、別のカードや別の決済手段を案内してください。

まとめ

  • Stripe の決済エラーは、接続と Webhook の状態、テストと本番の取り違え、カード側の認証、プラグイン競合の順に切り分けます。
  • 原因は WooCommerce のログ(注文番号で検索)と Stripe ダッシュボードの記録で読めます。記録は普段から有効にしておきます。
  • 本番でプラグインを止める切り分けは避け、検証環境で行います。テーマや他プラグインの修正が必要な段階なら外部への相談も選択肢です。

関連記事

参考: WooCommerce Stripe – Setup and configuration、Setting up webhooks、Connecting to a Stripe account、Troubleshooting、Stripe – Testing

更新履歴: 2026-11-09 全面改訂(接続・Webhook の確認手順、ログの読み方、テスト用カード、3D セキュアと競合の切り分けを公式ドキュメントに沿って書き直し)。この記事はワードプレス博士(ライトセンド株式会社)が運営しています。

お気軽にご相談ください

お見積りへ お問い合わせへ
▲