public function getData()
 {
     $this->validate('amount', 'card', 'currency');
     // Create the base request
     $this->request = parent::getData();
     $this->request['SiteID'] = $this->getSiteId();
     // Fill the request data
     $card = $this->getCard();
     $this->request['IPAddress'] = $this->getClientIp();
     $this->request['Amount'] = $this->getAmount();
     $this->request['CurrencyID'] = $this->getCurrency();
     $this->request['FirstName'] = $card->getBillingFirstName();
     $this->request['LastName'] = $card->getBillingLastName();
     $this->request['Phone'] = $card->getBillingPhone();
     $this->request['Address'] = $card->getBillingAddress1();
     $this->request['City'] = $card->getBillingCity();
     $this->request['State'] = $card->getBillingState();
     $this->request['Country'] = $card->getBillingCountry();
     $this->request['ZipCode'] = $card->getBillingPostcode();
     $this->request['Email'] = $card->getEmail();
     $this->request['CardNumber'] = $card->getNumber();
     $this->request['CardName'] = $card->getBillingName();
     $this->request['ExpiryMonth'] = $card->getExpiryMonth();
     $this->request['ExpiryYear'] = $card->getExpiryYear();
     $this->request['CardCVV'] = $card->getCvv();
     // Only set MerchantReference if it is not empty
     if ($this->getTransactionId()) {
         $this->request['MerchantReference'] = $this->getTransactionId();
     }
     return $this->request;
 }
 public function getData()
 {
     $this->validate('transactionReference');
     // Create the base request
     $this->request = parent::getData();
     // Fill the request data
     $this->request['TransactionID'] = $this->getTransactionReference();
     return $this->request;
 }