private function _verifyGatewayResponse($response)
 {
     if (isset($response['verification'])) {
         return new Result\Successful(CreditCardVerification::factory($response['verification']));
     } else {
         if (isset($response['apiErrorResponse'])) {
             return new Result\Error($response['apiErrorResponse']);
         } else {
             throw new Exception\Unexpected("Expected transaction or apiErrorResponse");
         }
     }
 }
 /**
  * sets instance properties from an array of values
  *
  * @access protected
  * @param array $creditCardAttribs array of creditcard data
  * @return none
  */
 protected function _initialize($creditCardAttribs)
 {
     // set the attributes
     $this->_attributes = $creditCardAttribs;
     // map each address into its own object
     $billingAddress = isset($creditCardAttribs['billingAddress']) ? Address::factory($creditCardAttribs['billingAddress']) : null;
     $subscriptionArray = array();
     if (isset($creditCardAttribs['subscriptions'])) {
         foreach ($creditCardAttribs['subscriptions'] as $subscription) {
             $subscriptionArray[] = Subscription::factory($subscription);
         }
     }
     $this->_set('subscriptions', $subscriptionArray);
     $this->_set('billingAddress', $billingAddress);
     $this->_set('expirationDate', $this->expirationMonth . '/' . $this->expirationYear);
     $this->_set('maskedNumber', $this->bin . '******' . $this->last4);
     if (isset($creditCardAttribs['verifications']) && count($creditCardAttribs['verifications']) > 0) {
         $verifications = $creditCardAttribs['verifications'];
         usort($verifications, array($this, '_compareCreatedAtOnVerifications'));
         $this->_set('verification', CreditCardVerification::factory($verifications[0]));
     }
 }