Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  * @see Paranoia\Payment\Adapter\AdapterAbstract::parseResponse()
  */
 protected function parseResponse($rawResponse, $transactionType)
 {
     $response = new PaymentResponse();
     try {
         /**
          * @var object $xml
          */
         $xml = new \SimpleXmlElement($rawResponse);
     } catch (\Exception $e) {
         $exception = new UnexpectedResponse('Provider returned unexpected response: ' . $rawResponse);
         $eventArg = new PaymentEventArg(null, null, $transactionType, $exception);
         $this->getDispatcher()->dispatch(self::EVENT_ON_EXCEPTION, $eventArg);
         throw $exception;
     }
     $response->setIsSuccess((int) $xml->approved == 1);
     $response->setRawResponse($xml);
     if (!$response->isSuccess()) {
         $response->setResponseCode((string) $xml->respCode);
         $errorMessages = array();
         if (property_exists($xml, 'respCode')) {
             $errorMessages[] = sprintf('Error: %s', (string) $xml->respCode);
         }
         if (property_exists($xml, 'respText')) {
             $errorMessages[] = sprintf('Error Message: %s ', (string) $xml->respText);
         }
         $errorMessage = implode(' ', $errorMessages);
         $response->setResponseMessage($errorMessage);
     } else {
         $response->setResponseCode("0000");
         $response->setResponseMessage('Success');
         if (property_exists($xml, 'orderId')) {
             $response->setOrderId((string) $xml->orderId);
         }
         $response->setTransactionId((string) $xml->hostlogkey);
         if (property_exists($xml, 'authCode')) {
             $response->setAuthCode((string) $xml->authCode);
         }
     }
     $event = $response->isSuccess() ? self::EVENT_ON_TRANSACTION_SUCCESSFUL : self::EVENT_ON_TRANSACTION_FAILED;
     $this->getDispatcher()->dispatch($event, new PaymentEventArg(null, $response, $transactionType));
     return $response;
 }
Exemplo n.º 2
0
 /**
  * {@inheritdoc}
  * @see Paranoia\Payment\Adapter\AdapterAbstract::parseResponse()
  */
 protected function parseResponse($rawResponse, $transactionType)
 {
     $response = new PaymentResponse();
     try {
         /**
          * @var object $xml
          */
         $xml = new \SimpleXmlElement($rawResponse);
     } catch (\Exception $e) {
         $exception = new UnexpectedResponse('Provider returned unexpected response: ' . $rawResponse);
         $eventArg = new PaymentEventArg(null, null, $transactionType, $exception);
         $this->getDispatcher()->dispatch(self::EVENT_ON_EXCEPTION, $eventArg);
         throw $exception;
     }
     $response->setRawResponse($xml);
     $response->setIsSuccess((string) $xml->Response == 'Approved');
     $response->setResponseCode((string) $xml->ProcReturnCode);
     if (!$response->isSuccess()) {
         $errorMessages = array();
         if (property_exists($xml, 'Error')) {
             $errorMessages[] = sprintf('Error: %s', (string) $xml->Error);
         }
         if (property_exists($xml, 'ErrMsg')) {
             $errorMessages[] = sprintf('Error Message: %s ', (string) $xml->ErrMsg);
         }
         if (property_exists($xml, 'Extra') && property_exists($xml->Extra, 'HOSTMSG')) {
             $errorMessages[] = sprintf('Host Message: %s', (string) $xml->Extra->HOSTMSG);
         }
         $errorMessage = implode(' ', $errorMessages);
         $response->setResponseMessage($errorMessage);
     } else {
         $response->setResponseMessage('Success');
         $response->setOrderId((string) $xml->OrderId);
         $response->setAuthCode((string) $xml->AuthCode);
         $response->setTransactionId((string) $xml->TransId);
     }
     $event = $response->isSuccess() ? self::EVENT_ON_TRANSACTION_SUCCESSFUL : self::EVENT_ON_TRANSACTION_FAILED;
     $this->getDispatcher()->dispatch($event, new PaymentEventArg(null, $response, $transactionType));
     return $response;
 }