function verifySignature($rawBody, $signatureHeader, $secret) {
$parts = [];
foreach (explode(',', $signatureHeader) as $part) {
[$key, $value] = explode('=', $part, 2);
$parts[$key] = $value;
}
$timestamp = $parts['t'] ?? null;
$signature = $parts['v1'] ?? null;
// Protection replay
if (abs(time() - (int)$timestamp) > 300) {
return false;
}
// Vérifier signature
$payload = "{$timestamp}.{$rawBody}";
$expected = hash_hmac('sha256', $payload, $secret);
return hash_equals($expected, $signature);
}