底辺SE奮闘記

年収300万SEブログ

【PHP・Laravel・Stripe】WebHookのシグネチャをSDKなしで確認する

表題の通りです。

環境

  • PHP 7.2.1
  • Laravel 5.8

コード

最小のソースコードを示しますので、ご自分の環境にあった形に修正を行ってください。

<?php
public function hoge(Request $request) {
    $params = explode(",", $_SERVER['HTTP_STRIPE_SIGNATURE']);
    $t = explode("=", $params[0])[1]; // タイムスタンプ
    $v1 = explode("=", $params[1])[1];// シグネチャ
    $content = $request->getContent();// HookBody
    
    $hookKey = "whsec~~~";//StripeのWebhookのページにある署名キー
    $hash = hash_hmac("sha256", $t.".".$content, $hookKey);

    if ($hash == $v1) {
        // 正常なWebHook
    } else {
        // 不正なWebHook
    }
}
        

以上です。