Laravel 5 captura de PHP PHP 400 erros 400 na localhost: 8000

Usando a API do PayPal com minha instalação do Laravel 5.2, especificamente este pacote: https://github.com/anouarabdsslm/laravelpaypalpayment

O pacote funciona muito bem! e eu estou tomando pagamentos perfeitamente! Eu estou lutando para pegar e redirect quando detalhes incorretos, por exemplo, detalhes do cartão bancário são inseridos por um usuário. O aplicativo Laravel apenas lança um erro 400.

O que eu quero fazer é pegar os erros e redirect de volta e notificar o usuário.

O código abaixo é onde eu faço um pedido:

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); 

Quando um pagamento bem sucedido é feito, eu recebo um bom object de retorno que eu posso fazer referência e ação em conformidade, quando há um problema como um erro de 400 ele mata o aplicativo completamente e NÃO captura e redireciona os erros de volta para o usuário.

As mensagens do código de erro são:

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

Alguém enfrentou problemas semelhantes com a API PHP do PayPal?

Eu sei que quando o aplicativo não está no modo dev, posso ter páginas de erro especificamente para capturar determinados códigos de erro. Mas eu realmente quero capturar erros e redirect de volta ao formulário com notifications para o usuário.

Agradeço antecipadamente a qualquer assistente que possa ajudar.

Caras,

Eu postei a resposta aqui: Laravel 5 captura 400 respostas da API do PayPal, mas eu quero garantir que alguém que toca esse tópico sabe como resolvi o problema!

Parece que o método de Exception padrão do Laravel estava interferindo com a PayPal API PayPalConnectionException . Então eu modifiquei o código para capturar erros gerais de Exception somente porque continha todos os objects de erro necessários. O \ antes da Exception foi crítico! como ele precisa do namespace correto (no meu caso de qualquer maneira, seu aplicativo pode ser diferente).

 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()); } 

Este link que o @rchatburn postou foi altamente útil, o aplicativo sempre pareceu pegar no ponto \Exception e NÃO \PayPalConnectionException uma vez que eu tive tudo com o nome do nome corretamente.

Nas minhas investigações, encontrei app/Exceptions/Handler.php . Aqui você pode estender o método de renderização para PayPalConnectionException uma PayPalConnectionException e lidar com os erros exclusivamente para essa exceção específica. Consulte o código:

 //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); } 

Ou trabalho muito bem, mas para mim era mais legal mudar o método de captura para uma vigência para uma Exception geral, onde eu estou testando se um pagamento foi bem sucedido.

Espero que isso ajude alguém a enfrentar problemas semelhantes: D !!!

Usuario.