vagrant上にインストールしたLaravel5.5でローカルでPay.jpのwebhookを確認したい時にngrokがおすすめ

まず、ドキュメントルートで
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 を設定しておく

あとはよしなに

シェアする

  • このエントリーをはてなブックマークに追加

フォローする