環境
- WordPress
- プラグイン WP Full Stripe
- XServer(エックスサーバ)
Stripeからエラーメッセージが届く
WordPressに「WP Full Stripe」を使ってStripe決済を導入した後、しばらくしてStripeから以下のエラーメールが送られてきました。
We’re contacting you because we’ve had some trouble delivering data to a webhook endpoint associated with your account in live mode. Webhooks are used to notify your server about events that happen in your Stripe account, such as a payout completing or an invoice being created. The failing webhook endpoint is https://domain.com/wp-admin/admin-post.php?action=handle_wpfs_event&auth_token=xxxxxxx
ウェブフックのエンドポイント
「https://domain.com/wp-admin/admin-post.php?action=handle_wpfs_event&auth_token=xxxxxxx」
が失敗しているという内容です。
テストしてみてると403エラー
Stripeのダッシュボードからウェブフックをテストしてみます。
テストモードに切り替えた上で、問題のエンドポイントを選択し、「テストの Webhook を送信」を実行します。
Stripeからのエラーメールにあった通り、403エラー(閲覧禁止)で処理が失敗します。
エラー内容は文字化けしていて全容を掴めませんが、XServerからエラーメッセージが返されているようです。
XServerアクセス権限が問題になっていそうですね。
XServerのIPアクセス制限
XServerのセキュリティ設定を調べてみると、国外IPからのアクセスはデフォルトで制限されていることが分かりました。
XServerのセキュリティ設定の詳細はこちら:
一旦、この制限を解除してテストしてみます。
「ダッシュボード アクセス制限」をOFFにします。
再度Stripeのダッシュボードからテストすると、無事ウェブフックの処理が成功しました。
やはり原因はここでしたね。
.htaccess でIPアクセス制限を一部解除
XServerの国外IPアドレス制限を全てOFFにするのはセキュリティ的によろしくないので、
国外IPアドレス制限はONにしたまま、.htaccess ファイルに条件を追加することで、Stripeウェブフックからのアクセスを許可していきます。
StripeウェブフックのIPアドレスは次のとおりです。(Stripe Webhook notifications より)
54.187.174.169
54.187.205.235
54.187.216.72
54.241.31.99
54.241.31.102
54.241.34.107
ドメインのルートディレクトリにある .htaccess ファイルに以下のコードを追加します。
# .thaccess
SetEnvIf Remote_Addr ^54\.187\.174\.169$ AllowCountry
SetEnvIf Remote_Addr ^54\.187\.205\.235$ AllowCountry
SetEnvIf Remote_Addr ^54\.187\.216\.72$ AllowCountry
SetEnvIf Remote_Addr ^54\.241\.31\.99$ AllowCountry
SetEnvIf Remote_Addr ^54\.241\.31\.102$ AllowCountry
SetEnvIf Remote_Addr ^54\.241\.34\.107$ AllowCountry
SetEnvIf Remote_Addr .stripe\.com$ AllowCountry
これでStripeウェブフックからのアクセスを許可できるはずです。
Stripeのダッシュボードからテストして、ウェブフックの処理が成功すればOKです。
Stripe 決済の導入にお困りですか?
Stripe 決済の導入に関するご依頼・ご相談はこちらからお気軽にどうぞ 😀
Sources
- XSERVER WordPressセキュリティ設定
- htaccessリファレンス ホスト/IP 制限
- Stripe Webhook notifications
- Xサーバーの「WordPress国外IPアクセス制限」は個別に解除可能!設定方法と手順
- ワードプレスにログインできない!海外からXサーバーのアクセス制限を解除する方法