dataDecoder = $decoder; $this->webhookMessageFactory = $webhookMessageFactory; } /** * Returns webhook message data object. * * @param WebhookRequest $request * @return WebhookMessage * @throws \InvalidArgumentException */ public function read(WebhookRequest $request) { try { $decodedData = $this->dataDecoder->decode($request->getBody()); } catch (\Exception $e) { throw new \InvalidArgumentException( 'Webhook request body is not valid JSON: ' . $e->getMessage(), $e->getCode(), $e ); } $webhookMessage = $this->webhookMessageFactory->create( [ 'data' => $decodedData, 'eventTopic' => $request->getEventTopic() ] ); return $webhookMessage; } }