Skip to content

Commit ad62f8a

Browse files
committed
added default signature validator for stripe and paystack
1 parent f7cca02 commit ad62f8a

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/SignatureValidator/PaystackSignatureValidator.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ class PaystackSignatureValidator implements PaymentWebhookSignatureValidator
99
{
1010
public function isValid(Request $request, PaymentWebhookConfig $config): bool
1111
{
12-
// TODO: Implement isValid() method.
12+
if ((! $request->isMethod(method: 'post')) || ! $request->header(key: $config->signatureHeaderName)) return false;
13+
14+
$requestContent = $request->getContent();
15+
$signature = hash_hmac(algo: 'sha512', data: $requestContent, key: $config->signingSecret);
16+
17+
if ($signature !== $request->header(key: $config->signatureHeaderName)) return false;
18+
19+
return hash_equals(known_string: $signature, user_string: $request->header($config->signatureHeaderName));
1320
}
1421
}

src/SignatureValidator/StripeSignatureValidator.php

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,13 @@ class StripeSignatureValidator implements PaymentWebhookSignatureValidator
99
{
1010
public function isValid(Request $request, PaymentWebhookConfig $config): bool
1111
{
12-
// TODO: Implement isValid() method.
12+
if ((! $request->isMethod(method: 'post')) || ! $request->header(key: $config->signatureHeaderName)) return false;
13+
14+
$requestContent = $request->getContent();
15+
$signature = hash_hmac(algo: 'sha256', data: $requestContent, key: $config->signingSecret);
16+
17+
if ($signature !== $request->header(key: $config->signatureHeaderName)) return false;
18+
19+
return hash_equals(known_string: $signature, user_string: $request->header($config->signatureHeaderName));
1320
}
1421
}

0 commit comments

Comments
 (0)