Intereting Posts
Ошибки PHP MongoDB при использовании автоматического переключения при сбое Как получить тип mime файла после использования file_get_contents с удаленного сервера Ошибки композитора в OS X и OpenSSL, используемые PHP Установка расширения PEAR HTTP_Request2 с композитором Правильный способ получить время веб-сервера и отобразить его на веб-страницах Шифрование с помощью CryptoJS и расшифровка с помощью PHP Существуют ли чистые виртуальные функции в PHP, например, с C ++ Twitter API: Кто от меня отказался? Symfony: Можно ли установить TEMplate для компонентов? Изменение фонового изображения исходного изображения PHP imagecopymerge прозрачно для черного Сопоставление слов массива с строкой PHP PDO: массив в обновлении SQL Предложение WHERE IN () PHP number_format () decimal .99 превращен в .00 Можно ли проверить, приведет ли imagecreatefromjpeg к тому, что память исчерпала фатальную ошибку, прежде чем запускать ее? Сделайте дружественный URL с двумя параметрами на PHP с Apache

Laravel 5 ловушка PayPal PHP API 400 ошибок на localhost: 8000

Используя API PayPal с моей установкой Laravel 5.2, в частности, этот пакет: https://github.com/anouarabdsslm/laravel-paypalpayment

Пакет отлично работает! и я отлично беру платежи! Я изо всех сил стараюсь ловить и перенаправлять, когда пользователь вводит неверные данные, например данные банковской карты. Приложение Laravel просто выдает ошибку 400.

То, что я хочу сделать, это уловить ошибки и перенаправить обратно и уведомить пользователя.

Ниже приведен код, где я делаю запрос:

try { // ### Create Payment // Create a payment by posting to the APIService // using a valid ApiContext // The return object contains the status; $payment->create($this->_apiContext); } catch (\PPConnectionException $ex) { return Redirect::back()->withErrors([$ex->getMessage() . PHP_EOL]); } dd($payment); 

Когда выполняется успешный платеж, я получаю хороший объект возврата, который я могу ссылаться и действовать соответственно, когда возникает ошибка типа 400, она полностью уничтожает приложение и НЕ Улавливает и перенаправляет ошибки обратно пользователю.

Сообщения об ошибках:

 PayPalConnectionException in PayPalHttpConnection.php Got Http response code 400 when accessing https://api.sandbox.paypal.com/v1/payments/payment. 

Кто-нибудь сталкивался с аналогичными проблемами с API-интерфейсом PayPal PHP?

Я знаю, что когда приложение не находится в режиме dev, у меня могут быть страницы ошибок, специально для обнаружения определенных кодов ошибок. Но я действительно хочу поймать ошибки и перенаправить обратно в форму с уведомлениями для пользователя.

Спасибо заранее любому волшебнику, который может помочь.

Правильные парни,

Я отправил ответ здесь: Laravel 5 поймал 400 ответов от API PayPal, но я хочу удостовериться, что кто-то, кто попадает в этот поток, знает, как я решил проблему!

Похоже, что метод Exception Laravel по умолчанию мешал PayPal API PayPalConnectionException . Поэтому я изменил код, чтобы поймать общие ошибки Exception поскольку он содержит все необходимые объекты ошибок. Exception \ before Exception была критической! поскольку для этого требуется правильное пространство имен (в любом случае, ваше приложение может быть другим).

 try { // ### Create Payment // Create a payment by posting to the APIService // using a valid ApiContext // The return object contains the status; $payment->create($this->_apiContext); } catch (\Exception $ex) { return Redirect::back()->withErrors([$ex->getData()])->withInput(Input::all()); } 

Эта ссылка , которую опубликовал @rchatburn, была очень полезна, приложение всегда казалось, что оно улавливается в точке \Exception и NOT \PayPalConnectionException только я правильно \PayPalConnectionException все \PayPalConnectionException .

В моих исследованиях я столкнулся с app/Exceptions/Handler.php . Здесь вы можете расширить метод визуализации, чтобы захватить PayPalConnectionException и обработать ошибки однозначно для этого конкретного исключения. См. Код:

 //Be sure to include the exception you want at the top of the file use PayPal\Exception\PayPalConnectionException;//pull in paypal error exception to work with public function render($request, Exception $e) { //check the specific exception if ($e instanceof PayPalConnectionException) { //return with errors and with at the form data return Redirect::back()->withErrors($e->getData())->withInput(Input::all()); } return parent::render($request, $e); } 

Либо работайте отлично, но для меня это стало более удобным, чтобы просто изменить метод улова, чтобы найти общий Exception , где я тестирую, если платеж был успешным.

Надеюсь, это поможет любому, кто сталкивается с подобными проблемами: D !!!

Ник.