まず、ドキュメントルートで
php artisan serveを実行しサーバーを起動
$ php artisan serve
$ Laravel development server started:
次にwebhookでpostされたデータをローカルで受け取るためにvagrantにインストールしたcentosにログイン
# cd /
# wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip
# unzip ngrok-stable-linux-amd64.zip
# cd ngrok
#./ngrok http 8000
ポートに8000番を指定
ngrok by @inconshreveable (Ctrl+C to quit)
Session Status online
Session Expires 7 hours, 59 minutes
Version 2.2.8
Region United States (us)
Web Interface http://127.0.0.1:4040
Forwarding http://xxxxxxxxxxxx.ngrok.io -> localhost:8000
Forwarding https://xxxxxxxxxxxx.ngrok.io -> localhost:8000
Connections ttl opn rt1 rt5 p50 p90
0 0 0.00 0.00 0.00 0.00
コマンドを入力すると上記のようにフォワードしてくれるので
httpもしくはhttpsのurlをベースに
webhookでpostされてデータを取得するurlをpay.jpに設定する
http://xxxxxxxxxxxx.ngrok.io/webhook
Pay.jpの場合
Webhook送信時に X-Payjp-Webhook-Token ヘッダーにセットされます。
PAY.JPからのリクエスト証明を確認するために使います。
とありますので
発信元トークン whook_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
http://xxxxxxxxxxxx.ngrok.io/webhook で取得してjsonデータを解析する
Laravelの場合、csrf対策から
http://xxxxxxxxxxxx.ngrok.io/webhook のurlを除外しておくことを忘れないようにする。
app/Http/Middleware/VerifyCsrfToken.php
protected $except = [
//
'webhook',
];
http://xxxxxxxxxxxx.ngrok.io/webhookで
ヘッダーをチェックするなんらかの処理をする
$headers = getallheaders();
return $headers['X-Payjp-Webhook-Token'] === config('const.WEBHOOK_TOKEN') ? true : false;
// config('const.WEBHOOK_TOKEN') はconfig/const.php 内にあらかじめPay.jpの発信元トークン whook_xxxxxxxxxxxxxxxxxxxxxxxxxxxx を設定しておく
あとはよしなに