/** * approve Authorized & Sale transactions * * @param FinancialTransactionInterface $transaction * * @return ActionRequiredException */ public function createRedirectActionException(FinancialTransactionInterface $transaction) { $actionRequestException = new ActionRequiredException('User must authorize the transaction'); $actionRequestException->setFinancialTransaction($transaction); $extendedData = $transaction->getExtendedData(); if (!$extendedData->has('ORDERID')) { $extendedData->set('ORDERID', uniqid()); } $additionalData = array(); foreach (self::getAdditionalDataKeys() as $key) { if ($extendedData->has($key)) { $additionalData[$key] = $extendedData->get($key); } } $parameters = array_merge(self::normalize($additionalData), $this->redirectionConfig->getRequestParameters($extendedData), $this->designConfig->getRequestParameters($extendedData), array("ORDERID" => $extendedData->get('ORDERID'), "PSPID" => $this->token->getPspid(), "AMOUNT" => $transaction->getRequestedAmount() * 100, "CURRENCY" => $transaction->getPayment()->getPaymentInstruction()->getCurrency(), "LANGUAGE" => $extendedData->get('lang'))); $parameters['SHASIGN'] = $this->hashGenerator->generate($parameters); ksort($parameters); $actionRequestException->setAction(new VisitUrl($this->getStandardOrderUrl() . '?' . http_build_query($parameters))); return $actionRequestException; }
/** * compares the hash given by ogone with a hash generated by Sha1Out generator * * @param array $values the order values sent by Ogone * @param string $hash the hash provided by Ogone with the order values * * @return boolean true if the hashes match */ private function isHashValid(array $values, $hash) { return $this->generator->generate($values) === $hash; }