private function denormaliseTss(\ArrayAccess $array)
 {
     $tssData = $array['tss'];
     if (!isset($tssData) || !is_array($tssData)) {
         return null;
     }
     $data = new SafeArrayAccess($tssData);
     $tss = new TssResult();
     $tss->setResult($data['result']);
     $checks = $data['check'];
     $tssChecks = array();
     if (!empty($checks)) {
         // Ensure that $checks is an array of results
         if (isset($checks['@id'])) {
             $checks = array(0 => $checks);
         }
         foreach ($checks as $check) {
             $check = new SafeArrayAccess($check);
             $tssCheck = new TssResultCheck();
             $tssCheck->setId($check['@id']);
             $tssCheck->setValue($check['#']);
             $tssChecks[] = $tssCheck;
         }
     }
     $tss->setChecks($tssChecks);
     return $tss;
 }
 /**
  * Tests conversion of {@link PaymentResponse} to and from XML.
  */
 public function testPaymentResponseXmlAndDeserializeOverallResults()
 {
     $response = new PaymentResponse();
     $response->setAccount(SampleXmlValidationUtils::ACCOUNT);
     $response->setAcquirerResponse(SampleXmlValidationUtils::ACQUIRER_RESPONSE);
     $response->setAuthCode(SampleXmlValidationUtils::AUTH_CODE);
     $response->setAuthTimeTaken(SampleXmlValidationUtils::AUTH_TIME_TAKEN);
     $response->setBatchId(SampleXmlValidationUtils::BATCH_ID);
     $cardIssuer = new CardIssuer();
     $cardIssuer->setBank(SampleXmlValidationUtils::BANK);
     $cardIssuer->setCountry(SampleXmlValidationUtils::COUNTRY);
     $cardIssuer->setCountryCode(SampleXmlValidationUtils::COUNTRY_CODE);
     $cardIssuer->setRegion(SampleXmlValidationUtils::REGION);
     $response->setCardIssuer($cardIssuer);
     $response->setCvnResult(SampleXmlValidationUtils::CVN_RESULT);
     $response->setMerchantId(SampleXmlValidationUtils::MERCHANT_ID);
     $response->setMessage(SampleXmlValidationUtils::MESSAGE);
     $response->setOrderId(SampleXmlValidationUtils::ORDER_ID);
     $response->setPaymentsReference(SampleXmlValidationUtils::PASREF);
     $response->setResult(SampleXmlValidationUtils::RESULT_SUCCESS);
     $response->setHash(SampleXmlValidationUtils::RESPONSE_HASH);
     $response->setTimeStamp(SampleXmlValidationUtils::TIMESTAMP_RESPONSE);
     $response->setTimeTaken(SampleXmlValidationUtils::TIME_TAKEN);
     $tssResult = new TssResult();
     $tssResult->setResult(SampleXmlValidationUtils::TSS_RESULT);
     $response->setTssResult($tssResult);
     $response->setAvsAddressResponse(SampleXmlValidationUtils::AVS_ADDRESS);
     $response->setAvsPostcodeResponse(SampleXmlValidationUtils::AVS_POSTCODE);
     //marshal to XML
     $xml = $response->toXml();
     //unmarshal back to response
     /* @var PaymentResponse $fromXmlResponse */
     $fromXmlResponse = new PaymentResponse();
     $fromXmlResponse = $fromXmlResponse->fromXml($xml);
     SampleXmlValidationUtils::checkUnmarshalledPaymentResponse($fromXmlResponse, $this, true);
 }