Apareceu o erro “not well-formed (invalid token)”? Veja como solucionar

 

Esse erro ocorre quando o sistema não consegue ler um padrão de mensagem qualquer (Geralmente mensagens em XML).

As principais causas desse erro são a falta de algum caractere ou até mesmo quando o sistema que está lendo o XML utiliza um charset diferente do sistema que enviou a mensagem.

Veja abaixo um exemplo de um XML faltando caracteres, que pode ocasionar o erro:

Veja agora um XML com caracteres “Quebrados”

 

Ambos os exemplos acima podem gerar erros quando o sistema foi interpretar esses dados, causando erros em todo resto da aplicação o qual iria precisar da informação presente no XML.

A API do PagSeguro envia todas informações utilizando o padrão XML, e em muitos casos, esse erro pode estar presente nos sistemas que usam “analisador” XML para manipular todas inforamçõeos e informam um charset diferente do utilizado ao criar o XML.

Se seu sistema está ocorrendo esse erro ao tentar utilizar qualquer API do PagSeguro, baixe a versão atualizada da nossa biblioteca o qual já prever eventos como esse e muitos outros.

Tem alguma sugestão, dúvida ou viu algum erro no Guia de Integração? Entre em contato.

14 opiniões sobre “Apareceu o erro “not well-formed (invalid token)”? Veja como solucionar”

  1. Muito obrigado amigo também resolveu o meu problema o código do arquivo PagSeguroXmlParse.class.php foi alterado para:
    public function __construct($xml) {

    $parser = xml_parser_create();
    $xml = utf8_decode($xml);

    e graças à você resolveu!!!

  2. problema resolvido com comentario acima..

    morc3g0 disse:
    09 de agosto de 2012 às 17:03 (próximo)

    Olá a todos! resolvi esse problema dando um decode no xml dentro da classe PagSeguroXmlParser.class.php, vai fica assim:
    1- Abra o arquivo PagSeguroXmlParser.class.php
    2- na linha 26 vai ta if (!xml_parse($parser, $xml)) { … antes dessa condição, faça:
    3- $xml = utf8_decode($xml);

    o problema deve ser resolvido, caso a biblioteca esteja atualizada

  3. Boa tarde Helison, este erro é ocasionado quando as credenciais estão erradas, sendo assim recomendamos que verifique seu e-mail e token.

  4. O que é possível fazer para corrigir o erro acima, pois o erro esta dando erro na própria biblioteca do site, mesmo só acrescentando o token e email, e depois o código da transação esta permanecendo o erro.

    URL do ERRO: http://goo.gl/Sg3TM

  5. Olá a todos! resolvi esse problema dando um decode no xml dentro da classe PagSeguroXmlParser.class.php, vai fica assim:
    1- Abra o arquivo PagSeguroXmlParser.class.php
    2- na linha 26 vai ta if (!xml_parse($parser, $xml)) { … antes dessa condição, faça:
    3- $xml = utf8_decode($xml);

    o problema deve ser resolvido, caso a biblioteca esteja atualizada

  6. Bom dia, Sérgio!

    Verifiquei as configurações de sua conta, analisei as últimas transações também e houve falha em todas as tentativas do PagSeguro em lhe enviar as notificações de sistema pois a página que você configurou está fora do ar e sempre retornando erro 404.

    Atenciosamente,
    Equipe PagSeguro – Integração

  7. Bom dia, Sérgio!

    O seu sistema deverá trabalhar utilizando a mesma codificação utilizada pelo PagSeguro (ISO-8859-1) ou converter os dados antes da manipulação dessas informações.

    Atenciosamente,
    Equipe PagSeguro – Integração

  8. eu também: somente no parte de receber notificação:

    [02-Apr-2012 18:20:52] PHP Fatal error: Uncaught exception ‘Exception’ with message ‘PagSeguroLibrary XML parsing error: (4) not well-formed (invalid token)’ in /home/reper245/public_html/eletroserra.com/PagSeguroLibrary/utils/PagSeguroXmlParser.class.php:27
    Stack trace:
    #0 /home/reper245/public_html/eletroserra.com/PagSeguroLibrary/parser/PagSeguroTransactionParser.class.php(65): PagSeguroXmlParser->__construct(‘<?xml version="…')
    #1 /home/reper245/public_html/eletroserra.com/PagSeguroLibrary/service/PagSeguroNotificationService.class.php(62): PagSeguroTransactionParser::readTransaction('<?xml version="…')
    #2 /home/reper245/public_html/eletroserra.com/retornopagamento.php(25): PagSeguroNotificationService::checkTransaction(Object(PagSeguroAccountCredentials), '9E6E29-016D1D6D…')
    #3 {main}
    thrown in /home/reper245/public_html/eletroserra.com/PagSeguroLibrary/utils/PagSeguroXmlParser.class.php on line 27

Os comentários estão encerrados.