/**
  * Testing password generator
  */
 public function testGenerateSignature()
 {
     $payment = new Payment(12345, 'secretkey', 'order-123', 102400, 0, 'http://www.mojducan.com/success/order-123', 'http://www.mojducan.com/failure/order-123', '111111111111111', '1812', '123', 'John', 'Smith', 'Street 49', 'Locastic City', '1950', 'LocasticLand', '*****@*****.**');
     $this->assertEquals('f0a8e275979fe2da37c80d6dd668f47aa0510539134dd9a68eb8e75ffa841c0523489f8ddffd25baa9b6105c95aad098aab08e84cbfc4fca47fafab210bffd54', SignatureGenerator::generateSignature($payment));
     $payment = new Payment(123456789, 'new-secret-key', 'order-no-135', 195000, 1, 'http://www.mojducan.com/success/order-no-135', 'http://www.mojducan.com/failure/order-no-135', '111111111111111', '1812', '123', 'John', 'Smith', 'Street 49', 'Locastic City', '1911', 'LocasticLand', '*****@*****.**');
     $payment->setPgwReturnMethod('get');
     $payment->setPgwInstallments('12');
     $payment->setPgwPhoneNumber('098123456789');
     $payment->setPgwMerchantData('item1|item2|item3');
     $this->assertEquals('7ab8d368e0b1143f05f56d0f5f65d3dbbd101f9cd824587934225d141fa7806746afd5258679665d1fd876ff33f1c0273a7c81fab9340b4535cdc9dc7ca713a6', SignatureGenerator::generateSignature($payment));
 }
 /**
  * Based on payment model generates signature
  * @param Payment $payment
  *
  * @return string
  */
 public static function generateSignature(Payment $payment)
 {
     $secretKey = $payment->getSecretKey();
     $string = self::METHOD_NAME . $secretKey;
     $string .= $payment->getPgwShopId() . $secretKey;
     $string .= $payment->getPgwOrderId() . $secretKey;
     $string .= $payment->getPgwAmount() . $secretKey;
     $string .= $payment->getPgwInstallments() . $secretKey;
     $string .= $payment->getPgwAuthorizationType() . $secretKey;
     $string .= $payment->getPgwAuthorizationToken() . $secretKey;
     $string .= $payment->getPgwLanguage() . $secretKey;
     $string .= $payment->getPgwReturnMethod() . $secretKey;
     $string .= $payment->getPgwSuccessUrl() . $secretKey;
     $string .= $payment->getPgwFailureUrl() . $secretKey;
     $string .= $payment->getPgwCardNumber() . $secretKey;
     $string .= $payment->getPgwCardExpirationDate() . $secretKey;
     $string .= $payment->getPgwCardVerificationData() . $secretKey;
     $string .= $payment->getPgwFirstName() . $secretKey;
     $string .= $payment->getPgwLastName() . $secretKey;
     $string .= $payment->getPgwStreet() . $secretKey;
     $string .= $payment->getPgwCity() . $secretKey;
     $string .= $payment->getPgwPostCode() . $secretKey;
     $string .= $payment->getPgwCountry() . $secretKey;
     $string .= $payment->getPgwPhoneNumber() . $secretKey;
     $string .= $payment->getPgwEmail() . $secretKey;
     $string .= $payment->getPgwMerchantData() . $secretKey;
     return hash('sha512', $string);
 }