PHP code example of philiprehberger / webhook-signature
1. Go to this page and download the library: Download philiprehberger/webhook-signature library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
philiprehberger / webhook-signature example snippets
use PhilipRehberger\WebhookSignature\WebhookSignature;
// Read the raw request body — do NOT decode it first
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
$secret = 'your-shared-webhook-secret';
if (! WebhookSignature::verify($payload, $signature, $secret)) {
http_response_code(401);
exit('Invalid signature');
}
// Signature is valid — process the payload
$data = json_decode($payload, true);
// Accept signatures up to 60 seconds old
$valid = WebhookSignature::verify($payload, $signature, $secret, tolerance: 60);
// Disable replay protection entirely (not recommended)
$valid = WebhookSignature::verify($payload, $signature, $secret, tolerance: PHP_INT_MAX);
use PhilipRehberger\WebhookSignature\WebhookSignature;
use PhilipRehberger\WebhookSignature\Exceptions\InvalidSignatureException;
use PhilipRehberger\WebhookSignature\Exceptions\SignatureExpiredException;
try {
WebhookSignature::verifyOrFail($payload, $signature, $secret);
} catch (SignatureExpiredException $e) {
http_response_code(401);
exit('Signature expired');
} catch (InvalidSignatureException $e) {
http_response_code(401);
exit('Invalid signature');
}
use PhilipRehberger\WebhookSignature\WebhookSignature;
$payload = file_get_contents('php://input');
$signature = $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? '';
// Accept signatures signed with either the old or new secret
$secrets = [
'new-secret-after-rotation',
'old-secret-before-rotation',
];
if (! WebhookSignature::verifyWithMultipleSecrets($payload, $signature, $secrets)) {
http_response_code(401);
exit('Invalid signature');
}
// Signature matched one of the secrets — process the payload
$data = json_decode($payload, true);
use PhilipRehberger\WebhookSignature\SignatureAlgorithm;
use PhilipRehberger\WebhookSignature\WebhookSignature;
// Sign with SHA-512
$signature = WebhookSignature::signWith($payload, $secret, SignatureAlgorithm::Sha512);
// Verify with SHA-512
$valid = WebhookSignature::verifyWith($payload, $signature, $secret, SignatureAlgorithm::Sha512);
bash
composer
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.