/**
  * Abstract method to find matches in lookup tables.
  *
  * @param string $table
  * @param string $code
  * @return mixed description of response code if valid, otherwise false
  * @access protected
  */
 protected function _lookup($table, $code)
 {
     $_this =& CyberSourceAppendices::getInstance();
     if (isset($_this->{$table}[$code])) {
         $code = $_this->{$table}[$code];
     } else {
         $code = false;
     }
     return $code;
 }
 /**
  * Parse result object returned by CyberSourceSoapClient and save to
  * $this->lastResult; return a small array of essential data.
  *
  * @param stdClass $result object from CyberSourceSoapClient transaction
  * @return array
  * @access public
  */
 public function parseResult($result)
 {
     $success = false;
     $orderId = null;
     $requestId = null;
     $requestToken = null;
     $subscriptionId = null;
     $avsCode = null;
     $cvCode = null;
     if (isset($result->ccAuthReply) && $this->config['useAppendices']) {
         // Process address verification response code
         if (isset($result->ccAuthReply->avsCode)) {
             $avsCode = $result->ccAuthReply->avsCode;
             $result->ccAuthReply->avsDescription = CyberSourceAppendices::avsDescription($avsCode);
         }
         // Process card verification response code
         if (isset($result->ccAuthReply->cvCode)) {
             $cvCode = $result->ccAuthReply->cvCode;
             $result->ccAuthReply->cvDescription = CyberSourceAppendices::cvDescription($cvCode);
         }
         // Process auth factor code
         if (isset($resul->ccAuthReply->authFactorCode)) {
             $result->ccAuthReply->authFactorDescription = CyberSourceAppendices::authFactorDescription($result->ccAuthReply->authFactorCode);
         }
     }
     // Process transaction request response code
     if (isset($result->reasonCode)) {
         if ($this->config['useAppendices']) {
             $result->reasonDescription = CyberSourceAppendices::reasonDescription($result->reasonCode);
             if (!$result->reasonDescription) {
                 trigger_error("CyberSource Error: CyberSource returned unrecognized Reason code: \"{$result->reasonCode}\"", E_USER_WARNING);
             }
         }
         if ($result->reasonCode == '100') {
             $success = true;
             $orderId = @$result->merchantReferenceCode;
             $requestId = @$result->requestID;
             $requestToken = @$result->requestToken;
             if (isset($result->paySubscriptionCreateReply)) {
                 @($subscriptionId = $result->paySubscriptionCreateReply->subscriptionID);
             }
         } else {
             trigger_error("CybserSource Error: CyberSource denied request. Reason: {$result->reasonCode}" . (isset($result->reasonDescription) ? ': ' . $result->reasonDescription : ' ') . " - Request ID: {$result->requestID}", E_USER_NOTICE);
         }
     }
     // Save the result as lastResult
     $this->lastResult = $result;
     // Return essential information
     $parsedResult = array('success' => $success, 'message' => $result->reasonDescription, 'orderId' => $orderId, 'requestId' => $requestId, 'requestToken' => $requestToken, 'subscriptionId' => $subscriptionId, 'avsCode' => $avsCode, 'cvCode' => $cvCode);
     return $parsedResult;
 }