前提・実現したいこと
Amazon EC2を利用して公開しているステージサイトでPayjpのWebhookのテストをしたいです。
Cakephp3で作成しているサービスで、ローカルで開発しているときはngrokを使いWebhookとシステムの疎通をしていました。
発生している問題・エラーメッセージ
ステージサイトのURLを指定して、Payjpの管理画面からWebhookのテスト送信を行うと、Payjp管理画面でこのようなフラッシュメッセージが表示されます
送信に失敗しました: 接続エラー
該当のソースコード
public function webhook() { $this->log('Payments->webhook() >>>>>', LOG_DEBUG); $this->request->allowMethod(['post']); $this->autoRender = false; $failed = false; $execProccess = false; if (!$this->_isPayjpPost($this->request)) { $this->log('> BadRequestException() - _isPayjpPost', LOG_DEBUG); throw new BadRequestException(); } $payjpPostData__type = $this->request->getData('type'); if (empty($payjpPostData__type)) { $this->log('> BadRequestException() - payjpPostData__type', LOG_DEBUG); throw new BadRequestException(); } $this->log('> payjpPostData__type - ' . $payjpPostData__type, LOG_DEBUG); $this->log($this->request->getData(), LOG_DEBUG); switch ($payjpPostData__type) { case 'subscription.paused': // 定期課金の停止 $failed = true; $execProccess = true; break; ・・・支払いの成功失敗など case 'token.created': // トークンの作成 case 'customer.created': // 顧客の作成 ・・・・その他顧客情報の更新など default: } if ($failed) { ・・・一部実況状況の記録保存・・・ } if ($execProccess) { ・・・一部実況状況の記録保存・・・ } $this->log('<<<<< success Payments->webhook()', LOG_DEBUG); $result = "success"; $this->set('result', $result); $this->set('_serialize', ['result']); } /** * PAYJPからのリクエストか否か */ private function _isPayjpPost($request) { $checkPayjpWebhookToken = Configure::read('Payjp.Webhook.token'); $requestPayjpWebhookToken = $request->getHeaderLine('X-Payjp-Webhook-Token'); return $checkPayjpWebhookToken === $requestPayjpWebhookToken; }
試したこと
アクセス制限をかけている環境なので、利用するWebhookの送信元のIPアドレスを許可するよう担当者にサーバー設定頼みました
cakephpで設定しているPayjpの鍵とWebhookのTokenは定数設定ファイルで現在利用しているものに変更されているか確認しました
Webhookのリクエストを飛ばすURLが間違っていないか、ブラウザからアクセスして対象のメソッドに到達するか確認しました
(https://ドメイン/コントローラー/メソッド)
サーバーの /etc/httpd/logs/の直下にある、アクセスログとエラーログを確認しました
(テストリクエストを投げましたが、記録はついてませんでした)
cakephpそのもののアクセスログとエラーログも同様に何も吐き出されていませんでした
この他確認すべき項目や、この環境であればこれが必要などありましたらご指摘いただきたいです
補足情報(FW/ツールのバージョンなど)
cakephp3
Amazon aws EC2
Payjp webhook
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。