Advertisement
claudious

stripe-php

Apr 3rd, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 1.25 KB | None | 0 0
  1.         public function webHookReceiver ($request, $response, $args)
  2.     {
  3.  
  4.         $endpoint_secret = $config['stripe.webhook_key'];
  5.  
  6.         $payload = $request->getBody();
  7.  
  8.         $sig_header = $request->getHeaderLine('Stripe-Signature');
  9.  
  10.         $data = json_decode($payload, true);
  11.         $jsonError = json_last_error();
  12.         if ($data === null && $jsonError !== JSON_ERROR_NONE) {
  13.             $msg = "Invalid payload: $payload "
  14.               . "(json_last_error() was $jsonError)";
  15.             throw new \UnexpectedValueException($msg);
  16.         }
  17.         $event = Event::constructFrom($data);
  18.  
  19.         $items = explode(",", $sig_header);
  20.         $timestamps = explode("=", $item[0]);
  21.         $timestamp = $timestamps[1];
  22.  
  23.         $itemParts = explode("=", $items[1], 2);
  24.  
  25.         if(!($itemParts[0] === "v1")){
  26.             return $response->withStatus(400);
  27.         }
  28.  
  29.         $signature = $itemParts[1];
  30.  
  31.         $expectedSignature = hash_hmac("sha256", "$timestamp.$payload", $endpoint_secret);
  32.  
  33.         if (!hash_equals($expectedSignature, $signature)) {
  34.             return $response->write("Invalid signature \n$signature\n$expectedSignature");
  35.         }
  36.  
  37.         else {
  38.             return $response->write('success');
  39.         }
  40.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement