お世話になります。下記エラー状況の解消に向けて、アドバイスをいただければ幸いです。
【現状と解消したいエラー】
現在WordPressサイトで「SimpleMembership」プラグインを利用して有料会員サイトを運営しております。
いままでPayPal決済のみで対応していたのですが、決済方法にStripeも導入しようと、
本番WordPressサイト(現在運用している本番ドメイン。仮に「Xサーバー上のhttps://A.com」と呼びます。)
と同一サーバー上のテスト環境(仮に「Xサーバー上のhttps://B.com」と呼びます。現在は運用していない別ドメインを使っています。)で以下の状況下で動作テストをしました。
結果、「Xサーバー上のhttps://B.com」では正常に動きました。
・同一テーマ(TCD AVANT)
・同一プラグイン(設定も同じ)
・同一サーバー(Xサーバー)
ところが、いざ本番の「Xサーバー上のhttps://A.com」に実装しようと
非公開ページに同一設定で決済ボタンを設置したところ、
「購入する」ボタンを押すと、以下のエラー画面に遷移してしまいます。
Error occurred: No API key provided. (HINT: set your API key using "Stripe::setApiKey(<API-KEY>)". You can generate API keys from the Stripe web interface. See https://stripe.com/api for details, or email support@stripe.com if you have any questions.
エラーが発生しました:APIキーが提供されていません。 (ヒント:「Stripe :: setApiKey(<API-KEY>)」を使用してAPIキーを設定します。StripeWebインターフェイスからAPIキーを生成できます。詳細についてはhttps://stripe.com/apiを参照するか、support @に電子メールを送信してください。ご不明な点がございましたら、stripe.comをご覧ください。
ちなみに、Stripeのサポートセンターにも問い合わせましたが、Stripe側には問題はなく、WordPress側は調べられないため解決できませんでした。
また、今回WordPressサイトとの接続を確認したStripe環境は「テストモードのみ」です。(Live環境では試していません)
【現在確認できている状況(プラグインから出力されるはずのStripe('')の値が取得できていない)】
まず、凡ミスを疑ってAPIキーは何度もテスト環境と同一だということを確認しました。
よって、入力ミスなどAPIキー設定が間違っているということではありませんでした。
そこで、
エラーが出てしまうサイトの決済ボタン配置ページのHTMLを確認したところ、以下の部分が空欄になってしまっていることが確認できました。
html
1コード 2<div class="swpm-payment-button"> 3<div class="swpm-button-wrapper swpm-stripe-buy-now-wrapper"> 4 <form id='swpm-stripe-payment-form-12345' action='http://test.local/?swpm_process_stripe_sca_subscription=1&ref_id=swpm_7xxxxxxx' METHOD='POST'> 5<div style='display: none !important'> 6<script src="https://js.stripe.com/v3/"></script> 7<link rel='stylesheet' href='https://checkout.stripe.com/v3/checkout/button.css' type='text/css' media='all' /><script> 8//該当部分 本来 var stripe = Stripe('pk_test_xxxxxxxx')とStripeキーが入るべき場所が空欄 9 var stripe = Stripe(''); 10//該当部分ここまで 11 jQuery('#swpm-stripe-payment-form-12345').on('submit',function(e) { 12 e.preventDefault(); 13 var btn = jQuery(this).find('button').attr('disabled', true);
また、GoogleDeveloperToolのConsoleでは当然のように
Uncaught IntegrationError: Please call Stripe() with your publishable key. You used an empty string.
と文字列が空だとしてエラーが出ています。
変数 stripe の中身を「console.log = stripe;」とConsoleに入力して確認してみましたが
undefined
と返ってきてしまいます。
正常に動作しているサイトでは
e {_listenerRegistry: {…}, retrieveSource: ƒ, …}
verifyMicrodepositsForSetup: ƒ (r,a)
_apiKey: "pk_test_xxxxxxxx"
と返ってきます。
【試したこと】
(以下大幅に追記と変更をしました)
■ややこしくなるので今の検証環境の表記を整理しておきます。
1)Xサーバー上のhttps://A.com ※本番環境
2)Xサーバー上のhttps://B.com ※テスト環境
3)Local A ※ローカル環境上にhttps://A.comをコピーしたもの
4)Local B ※ローカル環境上にhttps://B.comをコピーしたもの
Xサーバー設定が原因なのか?WordPressが原因なのか?を切り分けたく、上記4種を用意しました。
■Stripe購入ボタンの状況
いずれも、SimpleMembershipのStripeボタン設定は
・Stripe管理画面で「テストモードを表示」をON
・プラグインの支払ボタン新規作成で「Stripe SCA Subscription」を選択
・Test用入力欄にTestキーを入力
・Live用入力欄は空欄
(※「Use Global API Keys Settings」のチェックははずしています。)
で設定しています。
- WPテスト環境「Xサーバー上のhttps://B.com」を作成してボタンを設置 :WPテスト環境ではStripeテスト環境が正常に動作することを確認
・同一テーマ(TCD AVANT)
・同一プラグイン(設定も同じ)
・同一サーバー(Xサーバー)
の状態で設置してみました。
- ローカル環境「Local A ※https://A.comをコピーしたもの」を作成してボタンを設置 :エラーが出ることを確認
- ローカル環境「Local B ※https://B.comをコピーしたもの」を作成してボタンを設置 :正常に動作することを確認
よって、Xサーバーの設定ではないと考え、意向はローカル環境でテストしました。
- 正常に動作するLocal Bへ、エラーがでるLocal Aのテーマとプラグインをコピー :正常に動作することを確認
All in One Migrationを使って、エラーが出るWP本番環境のデータベース以外の部分をコピーしてみましたが、正常に決済画面に進めました。
また、エラーが出ているサイトのプラグインをSimpleMembership以外すべてOFFにしましたが解決しませんでした。
よってプラグインやテーマの問題ではないと思っております。
- 正常に動作するLocal Bへ、エラーがでるLocal Aデータベースをコピー:テスト環境では正常に動作することを確認
試しにデータベースもコピーしてみました。ただし、MySQL の wp_options 以外です。
上記のように、正常に動作するWPサイトとエラーが出る本番サイトの違いを比較しようと色々と検証したのですが、原因が特定できませんでした。
【お聞きしたいこと】
上記エラー内容をご覧いただいた上で、考えられる原因はわかりますでしょうか?
また、他に原因特定に役立つ検証方法などあればご教授いただけると嬉しいです。
上記の試した内容を踏まえて、使用テーマ・プラグイン・Sripeの購入ボタン設定の入力ミスが原因ではないとは思いますが、もし漏らしている検証方法などありましたらお教えいただければ幸いです。
また、Stripeサポート以外で、他に質問する適切な場があればお教えいただければ助かります。
何卒よろしくお願い致します。
【追記】
検証したサイトがわかりづらくなってしまっているようなので、表記を統一して変更しました。
回答1件
あなたの回答
tips
プレビュー