Vendas com Pagseguro - #16 Notificações
16/07/2018Hoje vamos aprender como realizar notificações automáticas pelo Pagseguro. As notificações servem para atualizar o status do seu pedido de acordo com o pagamento do cliente.
Notificação pelo Pagseguro
Primeiramente precisamos definir nas configurações do Pagueseguro (Sandbox e Produção), a nossa URL de notificação.
Posteriormente, criaremos um controller que receberá por post a notificationCode e enviará via get os dados de email e token. Como resposta da API utilizaremos o status e a referencia para atualizar nosso banco de dados. O código é bem simples:
include("config/Config.php");
$Url="https://ws.sandbox.pagseguro.uol.com.br/v3/transactions/notifications/{$_POST['notificationCode']}?email=".EMAIL_PAGSEGURO."&token=".TOKEN_SANDBOX."";
$Curl=curl_init($Url);
curl_setopt($Curl,CURLOPT_SSL_VERIFYPEER,true);
curl_setopt($Curl,CURLOPT_RETURNTRANSFER,true);
$Retorno=curl_exec($Curl);
curl_close($Curl);
$Xml=simplexml_load_string($Retorno);
$Crud=$Con->prepare("update pedido set Status=? where Reference=?");
$Crud->bindValue(1,$Xml->status);
$Crud->bindValue(2,$Xml->reference);
$Crud->execute();
Criamos também um banco de dados simples para alterar o status:
CREATE TABLE 'pedido' (
'Id' int(11) NOT NULL,
'Reference' varchar(30) NOT NULL,
'Status' varchar(5) NOT NULL
);
ALTER TABLE 'pedido' ADD PRIMARY KEY ('Id');
ALTER TABLE 'pedido' MODIFY 'Id' int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2; COMMIT;
INSERT INTO 'pedido' ('Id', 'Reference', 'Status') VALUES (1, '83783783737', '6');
Lembrando que a reference do banco de dados tem que ser a mesma da reference utilizada na transação com o Pagseguro. Outro detalhe, é necessário enviar a parte de notificação para o ar, afinal será enviado um post para a URL.
No painel da sua conta do Pagseguro você deve também acessar Vendas Online >> Integrações e habilitar as notificações, conforme telas abaixo: