Stripeのウェブフックで403エラーが出たときの対処法

環境

  • 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にします。

IPアクセス制限オフ

再度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

兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。/ 前職・資格:公認会計士 / プログラミング言語:Ruby, JavaScript, HTML, CSS / 日本語・英語
コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です