トラブルシュート

Stripeの決済ボタンやCheckoutが表示されないときの対処

決済ボタンが出ない、Checkoutに進めない。Stripeの決済が表示されない原因は、Stripe.jsの読み込み失敗やドメイン設定、CSPによるブロックなどに集約されます。安全に切り分ける手順を、確認・共有の場面まで含めて整理します。

Stripe決済が表示される仕組み

Stripeの決済UIは、公式のStripe.jsライブラリをページに読み込み、公開可能キー(publishable key)で初期化して表示します。Checkoutはこの仕組みの上で、Stripeがホストする決済画面へ遷移させる方式です。

ライブラリの読み込み、キーの初期化、決済セッションの生成のいずれかが失敗すると、ボタンが出ない・Checkoutに進めないといった症状になります。

決済まわりは秘密鍵を扱う処理がサーバ側に必要で、フロントに置いてよいのは公開可能キーだけです。鍵の取り違えも表示不良やエラーの一因になります。

表示されない典型パターン

まず、Stripe.jsの読み込みに失敗しているケースです。scriptの記述ミスやネットワーク遮断、CSPでの不許可があると、ライブラリが読めず決済UIが描画されません。

次に、公開可能キーの誤り(コピー漏れやテスト/本番の取り違え)です。キーが不正だと初期化に失敗し、コンソールにエラーが出ます。

Checkoutへの遷移にはサーバ側でのセッション生成が必要なため、静的HTMLだけでは完結しない構成だと、ボタンを押しても進めないことがあります。これは設計上の制約で、フロントだけでは解決できません。

症状別チェック表

Stripeの決済ボタンやCheckoutが表示されないは、症状を分けずに直そうとすると原因探しが長引きます。まず「自分だけで起きるのか」「全員で起きるのか」「特定ブラウザだけか」「差し替え後だけか」を切り分けます。

確認順序を固定すると、相対パス、ファイル名、キャッシュ、認証、外部読み込みのどこで止まっているかが見えます。修正後はローカル確認だけで終わらせず、実際の共有URLで再表示して、相手と同じ条件で直ったことを確認します。

  • 自分だけ表示されない: キャッシュ、ログイン状態、ブラウザ拡張、端末幅を確認する
  • 全員で表示されない: ファイル構成、相対パス、大文字小文字、アップロード漏れを見る
  • 一部だけ崩れる: CSS/画像/JSごとに読み込みエラーを分ける
  • 差し替え後だけ古い: URL、キャッシュ、更新対象ファイルの取り違えを確認する

原因を切り分ける手順

読み込み・キー・遷移の三段階に分けて確認すると、どこで止まっているかが見えます。

  1. 開発者ツールのConsoleでStripe関連のエラーが出ていないか確認する
  2. NetworkタブでStripe.jsの取得が成功しているか確認する
  3. CSPでStripeの配信元スクリプトやフレームが許可されているか確認する
  4. 埋め込んだ公開可能キーが正しく、テスト/本番の取り違えがないか確認する
  5. ボタンは出るが進めない場合、サーバ側のセッション生成が動いているか確認する
  6. Stripeダッシュボードでドメインや決済設定が整っているか確認する

ドメイン設定とCSPの注意点

Stripeの一部機能(Apple Payなど)では、利用するドメインの登録が必要です。確認共有用のドメインが未登録だと、その機能だけ表示されないことがあります。利用機能ごとにドメイン要件を確認します。

CSPが厳しいと、Stripe.jsやCheckoutのフレーム読み込みがブロックされます。コンソールのCSP違反を手がかりに、必要な配信元を script-src や frame-src に限定的に許可します。

テスト環境ではテストキーとテストカードで挙動を確認し、本番キーは実決済が発生するため確認段階では使わないのが安全です。

確認共有の場面での点検

決済まわりは秘密鍵やサーバ処理が絡むため、確認・共有では「決済UIが正しく表示・初期化されるか」までを目的にし、実決済はテスト環境で行うのが安全です。秘密鍵やAPIキーを含むコードを共有ファイルに混ぜないよう注意してください。

ギガサイト便はHTMLやZIPを同じURLのまま差し替えられるため、Stripe.jsの記述やCSP、公開可能キー(公開してよいキーのみ)を直した版をすぐ反映して再確認できます。認証を併用すれば関係者だけに見せられ、公開期限を設定すれば確認後に自動で閲覧を止められます。

よくある質問

決済ボタンが表示されない主な原因は何ですか

Stripe.jsの読み込み失敗、公開可能キーの誤り、CSPによるブロックが代表的です。Console/Networkでライブラリの取得とエラーを確認すると、どの段階で止まっているか切り分けられます。

ボタンは出るのにCheckoutに進めません

Checkoutへの遷移にはサーバ側での決済セッション生成が必要です。静的HTMLだけの構成では完結しないため、サーバ処理が動いているかを確認してください。これは設計上の制約です。

確認共有のファイルに鍵を入れても大丈夫ですか

フロントに置いてよいのは公開可能キーだけです。秘密鍵やAPIキーは共有ファイルに含めないでください。実決済はテストキーとテストカードで検証するのが安全です。

特定の決済手段だけ表示されないのはなぜですか

Apple Payなど一部の手段は、利用ドメインの登録が必要です。確認共有用のドメインが未登録だとその手段だけ出ないことがあるため、Stripe側のドメイン設定を確認してください。

原因が分からないときはどこから確認すべきですか?

まず自分だけの問題か全員の問題かを分けます。次にシークレットウィンドウ、別ブラウザ、スマホで確認し、ファイル構成・相対パス・キャッシュ・認証設定を順に見ます。

関連記事

トラブルシュート

外部CDNのCSS・JSが読み込めないときの対処

CDNからCSSやJSを読み込む構成にしたらデザインが崩れて機能が動かなくなった方向け。URLの誤りやHTTPSの混在・バージョン指定の問題を原因ごとに整理し、確認と修正の手順を把握できます。

5分で読める
トラブルシュート

reCAPTCHAが表示されない・認証できないときの確認点

フォームにreCAPTCHAを設置したのに表示されない・認証が通らないと困っているサイト運営者向け。最も多い原因はサイトキーに登録したドメインと実際のURLの不一致で、仕組みを理解しながら確認ポイントを順番に潰せる手順を紹介します。

5分で読める
トラブルシュート

公開後にJavaScriptが動かないときの原因と直し方

ローカルでは動いていたボタンやアニメーションが公開後に反応しなくなった方向け。JavaScriptが止まる主な原因をファイルパスや読み込み順の観点で切り分け、自分で直せるかどうかを判断できます。

5分で読める
トラブルシュート

公開後に動画が再生されないときの対処

デモページや資料に埋め込んだ動画が公開後に再生されなくなった方向け。動画ファイルの添付漏れ・パスのズレ・ブラウザの自動再生制限を症状ごとに切り分け、自分でできる確認と対処を把握できます。

4分で読める
トラブルシュート

公開したHTMLのフォームが送信できないときの対処

問い合わせフォームやアンケートの送信ボタンが押せない・エラーになる方向け。静的ファイル公開ではフォームの動作に制約がある理由を理解し、外部サービス連携などの現実的な解決策を選べるようになります。

5分で読める
「トラブルシュート」の記事をもっと見る →