/**
  * Denormalizes data back into an object of the given class.
  *
  * @param mixed $data data to restore
  * @param string $class the expected class to instantiate
  * @param string $format format the given data was extracted from
  * @param array $context options available to the denormalizer
  *
  * @return object
  */
 public function denormalize($data, $class, $format = null, array $context = array())
 {
     if (is_null($data)) {
         return null;
     }
     $data = new SafeArrayAccess($data);
     $dccInfo = new DccInfo();
     $dccInfo->addDccProcessor($data['ccp'])->addType($data['type'])->addRate($data['rate'])->addRateType($data['ratetype']);
     $amount = $this->serializer->denormalize($data['amount'], Amount::GetClassName(), $format, $context);
     if ($amount != null) {
         $dccInfo->setAmount($amount);
     }
     return $dccInfo;
 }
 /**
  * Tests the hash calculation for a card-update transaction.
  */
 public function testDccStoredCard()
 {
     // add dccinfo. Note that the type is not set as it is already defaulted to 1
     $dccInfo = new DccInfo();
     $dccInfo->addDccProcessor(SampleXmlValidationUtils::STORED_CARD_DCC_RATE_DCC_CCP);
     $request = new PaymentRequest();
     $request->addType(PaymentType::STORED_CARD_DCC_RATE)->addTimeStamp(SampleXmlValidationUtils::STORED_CARD_DCC_RATE_TIMESTAMP)->addMerchantId(SampleXmlValidationUtils::STORED_CARD_DCC_RATE_MERCHANT_ID)->addAmount(SampleXmlValidationUtils::STORED_CARD_DCC_RATE_AMOUNT)->addCurrency(SampleXmlValidationUtils::STORED_CARD_DCC_RATE_CURRENCY)->addOrderId(SampleXmlValidationUtils::STORED_CARD_DCC_RATE_ORDER_ID)->addDccInfo($dccInfo);
     $this->assertEquals(SampleXmlValidationUtils::STORED_CARD_DCC_RATE, $request->getType());
 }
 /**
  * Tests conversion of {@link PaymentRequest} to and from XML using setters for DCCInfo.
  */
 public function testPaymentRequestXmlDCCInfoFluentSetters()
 {
     $request = new PaymentRequest();
     $request->addAccount(SampleXmlValidationUtils::DCC_RATE_ACCOUNT)->addMerchantId(SampleXmlValidationUtils::DCC_RATE_MERCHANT_ID)->addType(PaymentType::DCC_RATE_LOOKUP);
     $card = new Card();
     $card->addExpiryDate(SampleXmlValidationUtils::DCC_RATE_CARD_EXPIRY_DATE)->addNumber(SampleXmlValidationUtils::DCC_RATE_CARD_NUMBER)->addType(SampleXmlValidationUtils::DCC_RATE_CARD_TYPE)->addCardHolderName(SampleXmlValidationUtils::DCC_RATE_CARD_HOLDER_NAME);
     $request->addCard($card);
     $dccInfo = new DccInfo();
     $dccInfo->addDccProcessor(SampleXmlValidationUtils::DCC_RATE_CCP);
     $request->addDccInfo($dccInfo);
     $request->addAmount(SampleXmlValidationUtils::DCC_RATE_AMOUNT)->addCurrency(SampleXmlValidationUtils::DCC_RATE_CURRENCY);
     $autoSettle = new AutoSettle();
     $autoSettle->addFlag(SampleXmlValidationUtils::$AUTO_SETTLE_FLAG->getFlag());
     $request->addAutoSettle($autoSettle)->addTimeStamp(SampleXmlValidationUtils::DCC_RATE_TIMESTAMP)->addOrderId(SampleXmlValidationUtils::DCC_RATE_ORDER_ID)->addHash(SampleXmlValidationUtils::DCC_RATE_REQUEST_HASH);
     // convert to XML
     $xml = $request->toXml();
     // Convert from XML back to PaymentRequest
     /* @var PaymentRequest $fromXmlRequest */
     $fromXmlRequest = new PaymentRequest();
     $fromXmlRequest = $fromXmlRequest->fromXml($xml);
     SampleXmlValidationUtils::checkUnmarshalledDccRateLookUpPaymentRequest($fromXmlRequest, $this);
 }