summaryrefslogtreecommitdiffstats
path: root/vendor/stripe/stripe-php/lib/Webhook.php
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--vendor/stripe/stripe-php/lib/Webhook.php42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/stripe/stripe-php/lib/Webhook.php b/vendor/stripe/stripe-php/lib/Webhook.php
new file mode 100644
index 0000000..b9db2d6
--- /dev/null
+++ b/vendor/stripe/stripe-php/lib/Webhook.php
@@ -0,0 +1,42 @@
+<?php
+
+namespace Stripe;
+
+abstract class Webhook
+{
+ const DEFAULT_TOLERANCE = 300;
+
+ /**
+ * Returns an Event instance using the provided JSON payload. Throws an
+ * Exception\UnexpectedValueException if the payload is not valid JSON, and
+ * an Exception\SignatureVerificationException if the signature
+ * verification fails for any reason.
+ *
+ * @param string $payload the payload sent by Stripe
+ * @param string $sigHeader the contents of the signature header sent by
+ * Stripe
+ * @param string $secret secret used to generate the signature
+ * @param int $tolerance maximum difference allowed between the header's
+ * timestamp and the current time
+ *
+ * @throws Exception\UnexpectedValueException if the payload is not valid JSON,
+ * @throws Exception\SignatureVerificationException if the verification fails
+ *
+ * @return Event the Event instance
+ */
+ public static function constructEvent($payload, $sigHeader, $secret, $tolerance = self::DEFAULT_TOLERANCE)
+ {
+ WebhookSignature::verifyHeader($payload, $sigHeader, $secret, $tolerance);
+
+ $data = \json_decode($payload, true);
+ $jsonError = \json_last_error();
+ if (null === $data && \JSON_ERROR_NONE !== $jsonError) {
+ $msg = "Invalid payload: {$payload} "
+ . "(json_last_error() was {$jsonError})";
+
+ throw new Exception\UnexpectedValueException($msg);
+ }
+
+ return Event::constructFrom($data);
+ }
+}