resultFactory = $resultFactory; $this->subjectReader = $subjectReader; } /** * @inheritdoc */ public function validate(array $validationSubject): ResultInterface { $response = $this->subjectReader->readResponse($validationSubject); $isValid = (isset($response['messages']['resultCode']) && $response['messages']['resultCode'] === self::RESULT_CODE_SUCCESS); $errorCodes = []; $errorMessages = []; if (!$isValid) { if (isset($response['messages']['message']['code'])) { $errorCodes[] = $response['messages']['message']['code']; $errorMessages[] = $response['messages']['message']['text']; } elseif (isset($response['messages']['message'])) { foreach ($response['messages']['message'] as $message) { $errorCodes[] = $message['code']; $errorMessages[] = $message['text']; } } elseif (isset($response['errors']['error'])) { foreach ($response['errors']['error'] as $message) { $errorCodes[] = $message['errorCode']; $errorMessages[] = $message['errorText']; } } } return $this->createResult($isValid, $errorMessages, $errorCodes); } }