laravel-pagseguro
laravel-pagseguro copied to clipboard
Notificações
Quando eu recebo uma notificação do pagseguro, o PagSeguro::notification($request->notificationCode, $request->notificationType);
sempre retorna vazio. Entrei na função e fui dando uns Logs para entender e percebi que sempre que chega na chamada formatResult($result) que está em PagSeguroClient.php, é aonde fica nula a resposta.
O método $result = simplexml_load_string($result);
está fazendo algo de errado e deixando nula a resposta.
Como faz para corrigir isso?
Notei também que o formato do XML não está compatível e o simple xml load string não funciona como deveria por conta dos caracteres especiais. Consegue saber se é quando há caracteres especiais ou ocorre toda vez?
On Qua, 30 de ago de 2017 00:07 Murilo Boareto Delefrate < [email protected]> wrote:
Quando eu recebo uma notificação do pagseguro, o PagSeguro::notification($request->notificationCode, $request->notificationType);sempre retorna vazio. Entrei na função e fui dando uns Logs para entender e percebi que sempre que chega na chamada formatResult($result) que está em PagSeguroClient.php, é aonde fica nula a resposta. O método $result = simplexml_load_string($result); está fazendo algo de errado e deixando nula a resposta. Como faz para corrigir isso?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/artistas/laravel-pagseguro/issues/65, or mute the thread https://github.com/notifications/unsubscribe-auth/ANmcrYF3FQOhiyIyphNVGKzdiWX7r_3uks5sdNIFgaJpZM4PGzy9 .
Vou rodar alguns testes aqui e te respondo... mas do pouco que eu usei, em nenhuma requisição o simplexml load string funcionou! Tem alguma sugestão parar a correção?
Olha o erro que acabou de aparecer:
[2017-08-31 22:47:03] local.ALERT: Internal Server Error
[2017-08-31 22:47:03] local.ERROR: ErrorException: simplexml_load_string(): Entity: line 1: parser error : Start tag expected, '<' not found in /var/www/api/vendor/artistas/laravel-pagseguro/src/Artistas/PagSeguroClient.php:150
Estou com esse mesmo erro...
On Qui, 31 de ago de 2017 22:49 Murilo Boareto Delefrate < [email protected]> wrote:
Olha o erro que acabou de aparecer:
[2017-08-31 22:47:03] local.ALERT: Internal Server Error [2017-08-31 22:47:03] local.ERROR: ErrorException: simplexml_load_string(): Entity: line 1: parser error : Start tag expected, '<' not found in /var/www/api/vendor/artistas/laravel-pagseguro/src/Artistas/PagSeguroClient.php:150
— You are receiving this because you commented.
Reply to this email directly, view it on GitHub https://github.com/artistas/laravel-pagseguro/issues/65#issuecomment-326465895, or mute the thread https://github.com/notifications/unsubscribe-auth/ANmcrcORR8CIVpQxkFQ3FQsQwRU-A7_bks5sd2KSgaJpZM4PGzy9 .
Você tem alguma ideia do caminho para corrigir isso?!
Olá @murilobd, vou dar uma olhada aqui no que pode estar acontecendo.
Se conseguir da pra adicionar esta linha:
$this->log->error('Info debug', ['Retorno:' => $result]);
Neste lugar: https://github.com/artistas/laravel-pagseguro/blob/master/src/Artistas/PagSeguroClient.php#L145
Que ele vai dar um log do que a api do Pagseguro está retornando, eles devem estar retornando uma string e não um objeto xml, fazem isso com alguns erros que eu já estou tratando antes de tentar formatar para um objeto XML, vou ver se tem algum erro novo e altero a lib.
Tu tem algum log do que o pagseguro ta retornando pra ti?
Rapidão que eu já vou voltar a fazer testes e assim que eu tiver alguns logs, eu coloco aqui!
@fernandobandeira segue uma notificação de transação que acabei de receber:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><transaction><date>2017-09-04T10:06:09.000-03:00</date><code>45F842B5-DD58-4E61-A0DC-2459400CECA9</code><reference>2f221a18eb86380369570b2ed147d8b4</reference><type>1</type><status>1</status><lastEventDate>2017-09-04T10:06:10.000-03:00</lastEventDate><paymentMethod><type>2</type><code>202</code></paymentMethod><paymentLink>https://sandbox.pagseguro.uol.com.br/checkout/payment/booklet/print.jhtml?c=63aec49925a788bda27d72a4233fdefa63cceac00ae15dc64d2e0a09bffc0bd3eb2904d893bfba44</paymentLink><grossAmount>55.00</grossAmount><discountAmount>0.00</discountAmount><creditorFees><intermediationRateAmount>0.40</intermediationRateAmount><intermediationFeeAmount>2.19</intermediationFeeAmount></creditorFees><netAmount>52.41</netAmount><extraAmount>0.00</extraAmount><installmentCount>1</installmentCount><itemCount>1</itemCount><items><item><id>3</id><description>Plano Mensal</description><quantity>1</quantity><amount>55.00</amount></item></items><sender><name>Blaus Bleus</name><email>[email protected]</email><phone><areaCode>34</areaCode><number>333203323</number></phone><documents><document><type>CPF</type><value>16024164190</value></document></documents></sender><shipping><address><street>Rua Maurício</street><number>116</number><complement></complement><district>Brasil</district><city>Araxá</city><state>MG</state><country>BRA</country><postalCode>38400654</postalCode></address><type>3</type><cost>0.00</cost></shipping><primaryReceiver><publicKey>PUB7E83FC7108234779A6BF0BF79ADAA48B</publicKey></primaryReceiver></transaction>
@fernandobandeira segue notificação de pagamento recorrente:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?><preApproval><name>Plano Mensal - Cartão de Crédito</name><code>4EE7BD6883836D6CC4D20F9F2F8A52D3</code><date>2017-09-04T01:43:27-03:00</date><tracker>EC1CF7</tracker><status>PENDING</status><reference>ea66c06c1e1c05fa9f1aa39d98dc5bc1</reference><lastEventDate>2017-09-04T12:51:09-03:00</lastEventDate><charge>AUTO</charge><sender><name>bleus blaus</name><email>[email protected]</email><phone><areaCode>34</areaCode><number>32139981</number></phone><address><street>Rua Maurício</street><number>116</number><complement></complement><district>Centro</district><city>Araxá</city><state>MG</state><country>BRA</country><postalCode>14620000</postalCode></address></sender></preApproval>
É possível converter o XML para UTF-8 e aí ele funciona (fica com o problema de palavras com acentuação, mas funciona)
$utf8 = mb_convert_encoding($result, 'UTF-8', 'ISO-8859-1');
$result = simplexml_load_string($utf8);
Estou usando essa solução em produção e até o presente momento, se mostrou correta!
A solução anterior voltou a dar problema... Contornei utilizando o Serializer do Symphony (https://symfony.com/doc/current/components/serializer.html) Meu código, no PagSeguroClient.php está assim agora:
$encoder = new \Symfony\Component\Serializer\Encoder\XmlEncoder();
$result = $encoder->decode($result, 'xml');
$result = json_decode(json_encode($result), FALSE);
Alguma novidade sobre esse problema? Adicionei o código que o @murilobd informou mas não deu certo.
Pessoal,
Estou com dúvida em implementar a consulta do status da transação. Todo o processo de compra pelo cartão está dando certo, mas preciso pegar o status da transação para informar ao cliente se deu ou não certo a requisição.
Alguém poderia me ajudar?