PHP - Pagamentos via PIX com o Agile4Pay
Olá Gente
A integração com o PIX da Agile4Pay não é muito conhecida, a documentação é bem fraca, e é necessário pedir a eles os dados de integração.
Porem, tem como um grande beneficio não ser necessário informar nenhuma informação do cliente.
Gerando Credenciais
Antes de começarmos, precisamos obter as credenciais para acessar a API da Agile4Pay.
Para a Agile4Pay, é necessário solicitar ao suporte da Agile4Pay seu Token de autenticação, que será enviado no padrão:
Basic PROD_XXXXXXXXXXXXXXXXXXXXXXXX
Este Token precisa ser enviado no Header das requisições através do parâmetro:
Authorization
Exemplo:

Criando Pagamento
Para criar um pagamento, via PIX, na Agile4Pay, precisamos fazer um POST para:
https://apiv1.agile4pay.com/pix/cashin
No Header, precisamos enviar as credenciais:
- Authorization: Basic PROD_XXXXXXXXXXXXXXXXXXXXXXXX
E precisamos enviar um Json similar ao Json abaixo:
{
"amount": 1.23,
"webhook": "https://webhook.site/74605848-c104-461b-a94f-4febba6c1bc1",
"expiration": 360,
"protocol": "1"
}Onde precisamos apenas:
- amount: Definir o valor
- webhook: O link no qual o Agile4Pay ira avisar que o PIX foi Pago
- protocol: Um código para identificar o pagamento
A resposta da API, em caso de sucesso, será um "HttpCode 200" com um Json, onde, precisamos apenas dos dados:
{
"protocol": "1",
"emv": "XXXXXXXXX",
"identifier": "XXXXXXXXXXXX"
}Aqui temos:
- emv: A chave do PIX para o pagamento no estilo "Copia e Cola"
Infelizmente, a Agile4Pay não retorna um QRCode para pagamento, então precisamos criar.
Mas não se preocupe, irei mostrar como criar!
Identificando Pagamento
A Agile4Pay ira enviar as notificações, para a Url que enviamos no campo:
webhook
Em cada movimentação, o Agile4Pay ira enviar um Json para esta Url com o conteúdo similar ao conteúdo abaixo:
{
"identifier": "XXXXXXXXXXXXXXXXX",
"protocol": "1",
"status": "RECEIVED",
"amount": 1.23,
"webhook": "https://webhook.site/74605848-c104-461b-a94f-4febba6c1bc1"
"fee": 0.08
}Neste Json iremos extrair os campos abaixo:
- protocol: Código da compra que informamos na criação do pagamento
- status: Status do Pagamento
Quando "status" receber "RECEIVED" indica que o pagamento foi APROVADO 💚:
{
"status": "RECEIVED",
}Integrando com PHP
Agora que já aprendemos como funciona, vamos fazer isto tudo funcionar via PHP?
Segue exemplo de código:
<?
$DadEnv = array();
$DadEnv["amount"] = 123.45;
$DadEnv["webhook"] = "https://webhook.site/74605848-c104-461b-a94f-4febba6c1bc1";
$DadEnv["expiration"] = 360;
$DadEnv["protocol"] = 1;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://apiv1.agile4pay.com/pix/cashin");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($DadEnv));
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
"accept: application/json",
"content-type: application/json",
"Authorization: Basic PROD_XXXXXXXXXX"
));
$response = curl_exec($ch);
$response2 = json_decode($response, true);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$err = curl_error($ch);
curl_close($ch);
if( $err != "" )
{
echo "ERRO >> " . $err;
}else{
if( $httpcode == 200 )
{
echo "identifier: " . $response2["identifier"];
echo "<br>";
echo "emv: " . $response2["emv"];
echo "<br>";
echo "<br>";
echo "<br>";
echo "<br>";
?>
<img src="http://chart.apis.google.com/chart?cht=qr&chs=300x300&chld=H|0&chl=[<?=$response2["emv"]?>" />
<?
}else{
echo "ERRO >> " . $response2["message"];
}
}
?>
Para exibir a imagem do QRCode, podemos utilizar o serviço "Charts" da Google:
http://chart.apis.google.com/chart?cht=qr&chs=300x300&chld=H|0&chl=[CHAVE_PIX_AQUI]
Hora de dar tchau por hoje pessoal! 😊
Nos encontramos em breve. 👋
Leia também
API Mágica: notificações Web Push no navegador com PHP
Web Push com a API Mágica em PHP puro: o navegador se inscreve, o seu site envia a notificação e a API conta o clique. Sem Composer e sem biblioteca.
API Mágica: CEP e Pix de graça, sem cartão
Lancei a API Mágica: CEP, QR Code Pix, geradores e mais, de graça. Veja como consultar e gerar com Node.js em poucas linhas.
IndexNow: avisando o Bing e o Yandex mais rápido
Como criar a chave do IndexNow e avisar Bing e Yandex das suas páginas novas com Node.js e PHP: as requisições, os erros reais e as armadilhas.