API de consulta de transações por código usando PHP - Sem utilizar a biblioteca oficial

Uma das vantagens de utilizar a API de consulta de transações por código é a opção de poder consultar o detalhe da transação quando der na teia, até mesmo antes de receber notificações da API de notificações, sem contar que pode ser usada em conjunto com outras APIs, tornado sua integração mais “poderosa”.

Talvez você deva estar se perguntando: É difícil? Eu respondo que não. Ela é uma das APIs do PagSeguro mais fácil de trabalhar, e podemos utilizar a mesma lógica usada na API de notificações.

Basicamente o PagSeguro requer 3 dados o e-mail, token e o código da transação, sendo assim vamos inserir cada informação suas respectivas variáveis.

1
2
3
$email = '[email protected]';
$token = '95112EE828D94278BD394E91C4388F20';
$transaction = 'G88B885A-7C3F-436C-XX49-049D0F1A9DXX';

Essas informações deverão ser enviadas para o PagSeguro utilizando o método GET (aquele que você envia todos dados diretamente pela URL como no exemplo abaixo:

https://ws.pagseguro.uol.com.br/v2/transactions/9E884542-81B3-4419-9A75-BCC6FB495EF1?email=seuemail@dominio.com.br&token=95112EE828D94278BD394E91C4388F20

Vamos montar nossa URL igual ao exemplo, utilizando nossas variáveis:

1
$url = 'https://ws.pagseguro.uol.com.br/v2/transactions/' . $transaction . '?email=' . $email . '&token=' . $token;

Com as informações prontas basta apenas enviar tudo paro PagSeguro. Usaremos o cURL como de costume, para isso vamos iniciar a lib.

Para facilitar usarei a função do tutorial sobre cURL (Clique aqui para ver) e gravar a resposta dentro de uma variável.

1
$transaction = curlExec($url);

Caso seu e-mail e token esteja incorreto o PagSeguro irá retornar uma string com o texto “Unauthorized”, nesse caso é precisamos fazer uma validação e tratar esse ponto.

1
2
3
4
5
if($transaction == 'Unauthorized') {
    //Insira seu código avisando que o sistema está com problemas
    //sugiro enviar um e-mail avisando para alguém fazer a manutenção
    exit;//Mantenha essa linha para evitar que o código prossiga
}

A partir desse ponto os dados provavelmente deverá estar no formato XML, portanto usaremos a função simplexml_load_string para manipula-lo

1
$transaction = simplexml_load_string($transaction);

O PagSeguro ainda poderá mostra erros nesse caso precisamos criar outra validação igual à mostrada abaixo:

1
2
3
4
5
if(count($transaction -> error) > 0) {
    //Insira seu código avisando que o sistema está com problemas
    //sugiro enviar um e-mail avisando para alguém fazer a manutenção
    var_dump($transaction);
}

Caso não tenha erros é só pegar pegar os dados os quais sua aplicação precisa, respeitando a hierarquia do XML retornado do PagSeguro.

Uma forma fácil de pegar as informações é olhar a tabela de parâmetros de resposta do PagSeguro onde na coluna “Campo” (Primeira coluna) já possui a hierarquia correta de cada informação. Utilize o mesmo padrão para pegar os dados. Veja no exemplo abaixo como pegar por exemplo o e-mail do comprador:

Como está na tabela de parâmetros de resposta do PagSeguro:

Como iremos pegar esse dado:

1
echo $transaction -> sender -> email;

Bom, veja como que ficou tudo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
$email = '[email protected]';
$token = '95112EE828D94278BD394E91C4388F20';
$transaction = 'G88B885A-7C3F-436C-XX49-049D0F1A9DXX';

$url = 'https://ws.pagseguro.uol.com.br/v2/transactions/' . $transaction . '?email=' . $email . '&token=' . $token;

$transaction = curlExec($url);

if($transaction == 'Unauthorized') {
    //Insira seu código avisando que o sistema está com problemas
    //sugiro enviar um e-mail avisando para alguém fazer a manutenção
    echo 'You shall not pass';
    exit;//Mantenha essa linha para evitar que o código prossiga
}

$transaction = simplexml_load_string($transaction);

if(count($transaction -> error) > 0) {
   //Insira seu código avisando que o sistema está com problemas, sugiro enviar um e-mail avisando para alguém fazer a manutenção
   var_dump($transaction);
}
echo $transaction -> sender -> email;

Bom acho que é isso… Qualquer dúvida postem nos comentários abaixo. Curtiu, gostou e quer ajudar o projeto não esqueça de fazer sua doação 🙂

Veja outros posts como este aqui:

Utilizando as APIs do PagSeguro e PHP – Sem utilizar a biblioteca oficial.