From 6bffa1af109abe491ff55e8f293f4ab9acd31094 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Tue, 19 Apr 2022 14:53:19 +1000 Subject: [PATCH] Improve error response from eWay gateway --- app/PaymentDrivers/Eway/CreditCard.php | 78 +++++++++++++++++++++----- 1 file changed, 64 insertions(+), 14 deletions(-) diff --git a/app/PaymentDrivers/Eway/CreditCard.php b/app/PaymentDrivers/Eway/CreditCard.php index e1bc090ba3f6..b74e06863300 100644 --- a/app/PaymentDrivers/Eway/CreditCard.php +++ b/app/PaymentDrivers/Eway/CreditCard.php @@ -168,18 +168,56 @@ class CreditCard $response = $this->eway_driver->init()->eway->createTransaction(\Eway\Rapid\Enum\ApiMethod::DIRECT, $transaction); +nlog($response); + $this->logResponse($response); - $response_status = ErrorCode::getStatus($response->ResponseMessage); + // if(!$response || !property_exists($response, 'ResponseMessage')) + // throw new PaymentFailed('The gateway did not return a valid response. Please check your gateway credentials.', 400); - if(!$response_status['success']){ + // $response_status = ErrorCode::getStatus($response->ResponseMessage); - $this->eway_driver->sendFailureMail($response_status['message']); + // if(!$response_status['success']){ - throw new PaymentFailed($response_status['message'], 400); - } + // if($response->getErrors()) + // { + // $message = false; + + // foreach ($response->getErrors() as $error) { + // $message = \Eway\Rapid::getMessage($error); + // } + + // $return_message = $message ?: $response_status['message']; + // } + + // $this->eway_driver->sendFailureMail($response_status['message']); + + // throw new PaymentFailed($response_status['message'], 400); + // } + + if($response->TransactionStatus) + $payment = $this->storePayment($response); + else { + + $message = 'Error processing payment.'; + + if(isset($response->ResponseMessage)) + $message .= " Gateway Error Code = {$response->ResponseMessage}"; + + if($response->getErrors()) + { + + foreach ($response->getErrors() as $error) { + $message = \Eway\Rapid::getMessage($error); + } + + } + + $this->eway_driver->sendFailureMail($message); + + throw new PaymentFailed($message, 400); + } - $payment = $this->storePayment($response); return redirect()->route('client.payments.show', ['payment' => $this->encodePrimaryKey($payment->id)]); @@ -257,20 +295,32 @@ class CreditCard $response = $this->eway_driver->init()->eway->createTransaction(\Eway\Rapid\Enum\ApiMethod::DIRECT, $transaction); - $response_status = ErrorCode::getStatus($response->ResponseMessage); + if($response->TransactionStatus){ + $this->logResponse($response, true); + $payment = $this->storePayment($response); + } + else { - if(!$response_status['success']){ + $message = 'Error processing payment.'; - $this->logResponse($response, false); + if(isset($response->ResponseMessage)) + $message .= " Gateway Error Code = {$response->ResponseMessage}"; - $this->eway_driver->sendFailureMail($response_status['message']); + if($response->getErrors()) + { + + foreach ($response->getErrors() as $error) { + $message = \Eway\Rapid::getMessage($error); + } - throw new PaymentFailed($response_status['message'], 400); - } + } - $this->logResponse($response, true); + $this->logResponse($response, false); - $payment = $this->storePayment($response); + $this->eway_driver->sendFailureMail($message); + + throw new PaymentFailed($message, 400); + } return $payment; }