/** * @param PaymentResult $paymentResult * * @return string */ public function generatePaymentResultSignature(PaymentResult $paymentResult) { $values = $paymentResult->getSignatureValues(); $values = $this->filterValues($values); return $this->generateSignature($values); }
/** * @param Request $request * @return PaymentResult */ public static function createFromRequest(Request $request) { $paymentResult = new PaymentResult(); $paymentResult->setAuthResult($request->getParameter('authResult')); $paymentResult->setPspReference($request->getParameter('pspReference')); $paymentResult->setMerchantReference($request->getParameter('merchantReference')); $paymentResult->setSkinCode($request->getParameter('skinCode')); $paymentResult->setMerchantReturnData($request->getParameter('merchantReturnData')); $paymentResult->setShopperLocale($request->getParameter('shopperLocale')); $paymentResult->setPaymentMethod($request->getParameter('paymentMethod')); return $paymentResult; }
/** * @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; }