/** * @param Request $request * @return PaymentResult * @throws SecurityException */ public function handleReturn(Request $request) { $paymentResult = PaymentResult::createFromRequest($request); $recievedSignature = $request->getParameter('merchantSig'); $computedSignature = $this->context->getSignaturesGenerator()->generatePaymentResultSignature($paymentResult); if ($recievedSignature !== $computedSignature) { throw new SecurityException('Signatures does not match'); } if ($paymentResult->isAuthorised()) { $this->onReturn($this, $paymentResult); } else { $this->onCancel($this, $paymentResult); } return $paymentResult; }