/**
  * returns the request fields to post to service
  */
 public function prepareRequest()
 {
     $this->validateRequest();
     $xmlBuilder = new HostedXmlBuilder();
     // get our merchantid & secret
     $merchantId = $this->config->getMerchantId(\ConfigurationProvider::HOSTED_TYPE, $this->countryCode);
     $secret = $this->config->getSecret(\ConfigurationProvider::HOSTED_TYPE, $this->countryCode);
     $message = $this->createRequestXml();
     // calculate mac
     $mac = hash("sha512", base64_encode($message) . $secret);
     // encode the request elements
     $request_fields = array('merchantid' => urlencode($merchantId), 'message' => urlencode(base64_encode($message)), 'mac' => urlencode($mac));
     return $request_fields;
 }
 /**
  * populates the payment form object from the given parameters and generates
  * the $completeHtmlFormWithSubmitButton & $htmlFormFieldsAsArray attributes
  *
  * @param type $xmlMessage
  * @param ConfigurationProvider $config
  * @param string $countryCode
  */
 function __construct($xmlMessage, $config, $countryCode = NULL)
 {
     $this->xmlMessage = $xmlMessage;
     $this->xmlMessageBase64 = base64_encode($xmlMessage);
     $this->endPointUrl = $config->getEndPoint(\ConfigurationProvider::HOSTED_TYPE);
     $this->merchantid = $config->getMerchantId(\ConfigurationProvider::HOSTED_TYPE, $countryCode);
     $this->secretWord = $config->getSecret(\ConfigurationProvider::HOSTED_TYPE, $countryCode);
     $this->mac = hash("sha512", $this->xmlMessageBase64 . $this->secretWord);
     $this->setForm();
     $this->setHtmlFields();
     $this->setRawFields();
     $this->setSubmitMessage();
 }