/** * Called when iframe/pp fails, as PSP does not send a notification * @Action("fail") */ public function fail(Customweb_Payment_Authorization_ITransaction $transaction, Customweb_Core_Http_IRequest $request) { if (!$transaction instanceof Customweb_Saferpay_Authorization_Transaction) { throw new Customweb_Core_Exception_CastException('Customweb_Saferpay_Authorization_Transaction'); } if (!$transaction->isAuthorizationFailed() && !$transaction->isAuthorized()) { $message = new Customweb_Payment_Authorization_ErrorMessage(Customweb_I18n_Translation::__("The payment could not be processed."), Customweb_I18n_Translation::__("The payment failed.")); $transaction->setAuthorizationFailed($message); } $url = $this->getAdapterFactory()->getAuthorizationAdapterByName($transaction->getAuthorizationMethod())->getFailedUrl($transaction); return Customweb_Core_Http_Response::redirect($url); }
public function processAuthorization(Customweb_Payment_Authorization_ITransaction $transaction, array $parameters) { // Check if the CVC field is filled in in case of a alias transaction. if ($transaction->getTransactionState() == Customweb_Saferpay_Authorization_Transaction::STATE_INITIAL && $transaction->isUseExistingAlias() && !$this->isCardVerificationPossible($transaction->getTransactionContext()->getAlias(), $transaction->getTransactionContext()->getOrderContext(), $transaction->getPaymentCustomerContext(), $parameters)) { $message = Customweb_I18n_Translation::__("The CVC field is required."); $transaction->setAuthorizationFailed($message); } if (!$this->validateCustomParameters($transaction, $parameters)) { $reason = Customweb_I18n_Translation::__("Custom parameters have been altered. Fraud possible, aborting."); $transaction->setAuthorizationFailed($reason); } if ($transaction->isAuthorizationFailed()) { $this->redirect(null, $transaction, $this->getFailedUrl($transaction)); } elseif ($transaction->isAuthorized()) { $this->redirect(null, $transaction, $this->getSuccessUrl($transaction)); } else { switch ($transaction->getTransactionState()) { case Customweb_Saferpay_Authorization_Transaction::STATE_INITIAL: $this->processScdResponse($transaction, $parameters); break; case Customweb_Saferpay_Authorization_Transaction::STATE_3D_SECURE: if (!isset($parameters['DATA']) || empty($parameters['DATA'])) { return Customweb_Core_Http_Response::_("NO DATA parameter provided.")->setStatusCode(500); } $parameters = array_merge($parameters, $this->parseRequestParameters($parameters)); $this->process3DSecureResponse($transaction, $parameters); break; default: $this->redirect(null, $transaction, $this->getFailedUrl($transaction)); } } return $this->finalizeAuthorizationRequest($transaction); }