/** * This method generates a signature for the given entity (e.g. controller) * and this transaction. The signature can be added for example to the * URL provided to the customer. * * The signature can than be checked with checkSecuritySignature(). This enables * to provided selective access to the transaction information. * * @param string $entityToSecure * @return string */ public function getSecuritySignature($entityToSecure) { if ($this->securityToken === null) { $this->securityToken = Customweb_Core_Util_Rand::getRandomString(64); } $entityToSecure = (string) $entityToSecure; return hash_hmac('sha512', $entityToSecure . $this->getTransactionId(), $this->securityToken); }
public function __construct(Customweb_Payment_Authorization_ITransactionContext $transactionContext) { $this->transactionContext = $transactionContext; $this->transactionId = $transactionContext->getTransactionId(); $this->authorizationAmount = $transactionContext->getOrderContext()->getOrderAmountInDecimals(); $this->currencyCode = $transactionContext->getOrderContext()->getCurrencyCode(); $this->createdOn = new Customweb_Date_DateTime(); $this->externalTransactionId = $this->generateExternalId(); $this->securityToken = Customweb_Core_Util_Rand::getRandomString(64); $skus = array(); foreach ($this->getTransactionContext()->getOrderContext()->getInvoiceItems() as $item) { if (isset($skus[$item->getSku()])) { throw new Exception("Could not start transaction because there are multiple line items with the same SKU."); } $skus[$item->getSku()] = $item->getSku(); } }