私はgocardlessフックで作業しています。私はhmacシグネチャをサンドボックス環境で検証しています。gocardless PHP hmacの署名が一致しません
私はサンドボックスでWebHookテストを生成し、送信したリクエストボディとヘッダーを私に提供します。
私が理解する限り、リクエストボディを取得し、秘密鍵でハッシュを生成し、webhook署名ヘッダーハッシュと比較する必要があります(実際は複雑ではありません)。
私はローカルの環境でそれを再現するために同じメッセージを添付していますが、署名は決して一致しません。ここで
は、私が試したものです:
$request_data = file_get_contents('php://input');
$signature = hash_hmac('sha256',$request_data, 'secret');
:私は私の最初の考えは多分フレームワークは、内部で要求を操作された、laravelフレームワークを使用していますので、私はこれを試してみました
$signature = hash_hmac('sha256',$request->getContent(), 'secret');
お知らせ
しかし、まだ...私はミーニー新しい行に気づき、私はそれを掃除ので、多分これが結果を修正することができ、
$request_data = str_replace(array('.', ' ', "\n", "\t", "\r"), '', $request_data);
と一致していません
しかしまだ一致しません。また、私はutf8でボディデータをキャストしようとし、hmacをrawに戻してbase64でエンコードするようにしましたが、成功しませんでした。
ここで間違いがありますか?サンドボックス環境で署名が動作しない可能性がありますか?誰もそれに対処していますか?
ありがとうございます!
のような何かをしたいhttps://developer.gocardless.com/getting-started/api/staying-up-to-date-with-webhooks/?lang=php#building-a-webhook-handler
でウェブフック署名の上の検証例を見つけることができますが、あなたがunminifiedによって何を意味するのか明確にしてくださいもらえますか?たぶん、例が役に立つかもしれません。 – guival
私はgoocardless webhookをコピーして、postmanに送信したオブジェクトをコピーしてエンドポイントに送信し、webhooksを受信するようにシミュレーションしました。異なっている、彼らは白いスペースを意味していない縮小された要求を送る! –
ありがとう、ありがとう。私は、改行などがあることを意味していると思いました。しかし、白いスペースは全くないはずです。 – guival