From 862831878c464bbf353a2675970cc78a2d85e34b Mon Sep 17 00:00:00 2001 From: Amr Ahmed Date: Tue, 3 Dec 2019 22:47:52 +0200 Subject: [PATCH] handle errors from get request --- routes/web.php | 2 +- src/Http/Controllers/KnetController.php | 15 +++++++++++++++ src/KnetResponseHandler.php | 6 ++++++ src/KnetResponseSignature.php | 20 -------------------- 4 files changed, 22 insertions(+), 21 deletions(-) diff --git a/routes/web.php b/routes/web.php index 66b68f0..7ddcdaa 100644 --- a/routes/web.php +++ b/routes/web.php @@ -12,4 +12,4 @@ use Illuminate\Support\Facades\Route; Route::post('/response', 'KnetController@handleKnet')->name('response'); -Route::post('/error', 'KnetController@error')->name('error'); +Route::get('/error', 'KnetController@error')->name('error'); diff --git a/src/Http/Controllers/KnetController.php b/src/Http/Controllers/KnetController.php index 64c7432..0371441 100644 --- a/src/Http/Controllers/KnetController.php +++ b/src/Http/Controllers/KnetController.php @@ -70,4 +70,19 @@ protected function missingMethod($parameters = []) { return new Response; } + + public function error(Request $request) + { + KnetResponseReceived::dispatch($request->all()); + + $knetResponseHandler = new KnetResponseHandler(); + + // update transaction + KnetTransaction::findByTrackId($request->input('trackid')) + ->update($knetResponseHandler->toArray()); + + if ($knetResponseHandler->hasErrors()) { + throw new KnetException($knetResponseHandler->error()); + } + } } diff --git a/src/KnetResponseHandler.php b/src/KnetResponseHandler.php index d608e8c..ec37115 100644 --- a/src/KnetResponseHandler.php +++ b/src/KnetResponseHandler.php @@ -24,6 +24,12 @@ public function __construct() } } } else { + $this->result['error_text'] = request('ErrorText'); + $this->result['error'] = request('Error'); + $this->result['paymentid'] = request('paymentid'); + $this->result['avr'] = request('avr'); + $this->result['result'] = 'FAILED'; + $this->error = request('ErrorText'); $this->error_code = request('Error'); } diff --git a/src/KnetResponseSignature.php b/src/KnetResponseSignature.php index bf9ec1c..f287fe3 100644 --- a/src/KnetResponseSignature.php +++ b/src/KnetResponseSignature.php @@ -6,28 +6,8 @@ abstract class KnetResponseSignature { - const EXPECTED_REFERER = 'https://kpaytest.com.kw/kpg/paymentrouter.htm'; - public static function verifyHeader($payload, $header, $trackid) { - $referer = $header['referer'][0]; - - if (empty($referer)) { - throw SignatureVerificationException::factory( - "No referer found with expected scheme", - $payload, - $header - ); - } - - if ($referer != self::EXPECTED_REFERER) { - throw SignatureVerificationException::factory( - "No referer found matching the expected referer for payload", - $payload, - $header - ); - } - if (KnetTransaction::findByTrackId($trackid) == null) { throw SignatureVerificationException::factory( "No trackid found matching the expected",