LaravelでAjaxやWebhookを使う場合は、file_put_contents()を使うと、コントローラで受け取った値を見える化できます。
通常はddを使えば良いのですが、AjaxやWebhookからのアクセスはブラウザに表示できないため、ddが使えません。
そこでfile_put_contentsを利用します。
実際のコードをお見せしながら、使い方を解説していきますね。
Laravelデバック方法:AjaxやWebhookからのアクセスはfile_put_contentsで見える化をしよう
今回はStripeのWebhook処理を例に解説します。
Stripeに入金があったときにWebhookでLaravelプロジェクトに通知がくるようにしてあります。
StripeのWebhookでは、$payloadによって、次のような形でデータを受け渡します。
① var_exportを使って値を見える化
まずは$payloadのdataに入った値をすべて見える化していきましょう。
次のようにコントローラに入力すると、public/text.txtファイルに、$paload[‘data’]の値を転記できます。
1 2 3 4 5 6 |
public function handleChargeSucceeded($payload) { // public/text.txtに受け取ったデータを転記 file_put_contents("test.txt", var_export($payload['data'], true)); // とりあえずokを返しておく return 'ok'; } |
なお上記のコードではfile_put_contantsの中でvar_exportを使用しています。
それぞれの関数の意味は、次のとおりです。
var_exportではtrueを設定しておくと、変数表現を出力する代わりに、返してくれます。
② 特定の情報だけを取り出す
特定の情報だけ取り出すには、配列から値を取り出していきましょう。
“amount” 情報を取り出して、test.txtファイルに追記する処理を書いてみます。
file_put_contentsの引数で FILE_APPENDを使うと、出力用ファイルに情報を追記できます。
1 2 3 4 5 6 |
public function handleChargeSucceeded($payload) { // public/text.txtに受け取ったデータを転記 file_put_contents("test.txt", $payload['data']['object']['amount'], FILE_APPEND); // とりあえずokを返しておく return 'ok'; } |
さいごに
以上、Webhookで受け取った値を見える化する方法を解説しました。
なお今回はStripeを例にしましたが、StripeのWebhookについては別の記事で解説しています。
また受取った値を見える化するには、Laravelのデバックツール、Telescopeも役立ちます。
下記で紹介しているので、興味あれば、併せて読んでみてくださいね。