/**
  * Tests the hash calculation for an auth payment.
  */
 public function testVerifySigHashGeneration()
 {
     $card = new Card();
     $request = new ThreeDSecureRequest();
     $request->addType(ThreeDSecureType::VERIFY_SIG)->addTimeStamp(SampleXmlValidationUtils::TIMESTAMP)->addMerchantId(SampleXmlValidationUtils::MERCHANT_ID)->addOrderId(SampleXmlValidationUtils::ORDER_ID)->addAmount(SampleXmlValidationUtils::AMOUNT)->addCurrency(SampleXmlValidationUtils::CURRENCY)->addCard($card->addNumber(SampleXmlValidationUtils::CARD_NUMBER));
     $request->hash(SampleXmlValidationUtils::SECRET);
     $this->assertEquals(SampleXmlValidationUtils::REQUEST_HASH, $request->getHash());
 }
 private function denormaliseCard(\ArrayAccess $array)
 {
     $cardData = $array['card'];
     if (is_null($cardData)) {
         return null;
     }
     $data = new SafeArrayAccess($cardData);
     $card = new Card();
     $card->addNumber($data['number'])->addExpiryDate($data['expdate'])->addCardHolderName($data['chname'])->addType($data['type'])->addIssueNumber($data['issueno']);
     $cvn = $this->denormaliseCVN($data);
     $card->setCvn($cvn);
     return $card;
 }
 /**
  * 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;
     }
     $this->format = $format;
     $this->context = $context;
     $data = new SafeArrayAccess($data);
     $card = new Card();
     $card->addNumber($data['number'])->addExpiryDate($data['expdate'])->addCardHolderName($data['chname'])->addType($data['type'])->addIssueNumber($data['issueno'])->addReference($data['ref'])->addPayerReference($data['payerref']);
     $cvn = $this->denormaliseCVN($data);
     $card->setCvn($cvn);
     return $card;
 }
 /**
  * Tests the hash calculation for a card-update transaction.
  */
 public function testDccAuthHashGeneration()
 {
     $card = new Card();
     $card->addNumber(SampleXmlValidationUtils::DCC_AUTH_CARD_NUMBER)->addExpiryDate(SampleXmlValidationUtils::DCC_AUTH_CARD_EXPIRY_DATE)->addCardHolderName(SampleXmlValidationUtils::DCC_AUTH_CARD_HOLDER_NAME)->addType(SampleXmlValidationUtils::DCC_AUTH_CARD_TYPE);
     // add dccinfo. Note that the type is not set as it is already defaulted to 1
     $dccInfo = new DccInfo();
     $dccInfo->addDccProcessor(SampleXmlValidationUtils::DCC_AUTH_CCP);
     $request = new PaymentRequest();
     $request->addTimeStamp(SampleXmlValidationUtils::DCC_AUTH_TIMESTAMP)->addMerchantId(SampleXmlValidationUtils::DCC_AUTH_MERCHANT_ID)->addAmount(SampleXmlValidationUtils::DCC_AUTH_AMOUNT)->addCurrency(SampleXmlValidationUtils::DCC_AUTH_CURRENCY)->addOrderId(SampleXmlValidationUtils::DCC_AUTH_ORDER_ID)->addCard($card)->addDccInfo($dccInfo);
     $request->hash(SampleXmlValidationUtils::SECRET);
     $this->assertEquals(SampleXmlValidationUtils::DCC_AUTH_REQUEST_HASH, $request->getHash());
 }