Pular para o conteúdo
PHP

PHP - Pagamentos via PIX com o PayMee

Atualizado em
Capa do artigo: PHP - Pagamentos via PIX com o PayMee

Olá Gente

A integração com o PIX da PayMee não é muito conhecida, porem, muito simples.

Gerando Credenciais

Antes de começarmos, precisamos obter as credenciais para acessar a API da PayMee.

Para a Paymee, é necessário solicitar ao suporte da PayMee os dados abaixo:

  • x-api-key
  • x-api-token

Estes dados, serão enviados no Header das requisições:

Criando Pagamento

Para criar um pagamento, via PIX, no PayMee, precisamos fazer um POST para:

https://api.paymee.com.br/v1.1/checkout/transparent

No Header, precisamos enviar as credenciais:

  • x-api-key
  • x-api-token

E precisamos enviar um Json similar ao Json abaixo:

{
"currency": "BRL",
"amount": "100.12",
"referenceCode": "ABC123",
"maxAge": "120",
"paymentMethod": "PIX",
"callbackURL": "https://webhook.site/74605848-c104-461b-a94f-4febba6c1bc1",
"observation": "",
"shopper": {
  "email": "[email protected]",
  "name": "Paloma Macetko",
  "document": {
  "type": "CPF",
    "number": "61032595418"
  },
  "phone": {
    "type": "MOBILE",
    "number": "4799886699"
  },
  "bankDetails": {
    "branch": "0001",
    "account": "00011-0"
  }
}
}

Onde precisamos apenas:

  • amount: Definir o valor
  • callbackURL: O link no qual o PayMee ira avisar que o PIX foi Pago
  • referenceCode: Um código para identificar o pagamento
  • shopper.name: Nome do Cliente
  • shopper.email: E-mail do Cliente
  • shopper.document.number: CPF do Cliente

A resposta da API, em caso de sucesso, será um "HttpCode 200" com um Json, onde, precisamos apenas dos dados dentro de "response.instructions.qrCode":

{
"url": "https://api.paymee.com.br/resources/payments/pix/qrcode/XXXXXXXXX",
"base64": "XXXXXXXX",
"plain": "XXXXXXXXXXX"
}

Aqui temos:

  • plain: A chave do PIX para o pagamento no estilo "Copia e Cola"
  • url: Link da Imagem do QRCode
  • base64: O QRCode em Base64

Identificando Pagamento

Para receber notificações dos pagamentos, acesse sua conta PayMee e navegue até:

https://www2.paymee.com.br/merchants/API

Preencha a url de seu WebHook no campo "URL de notificação" e clique em "Salvar Alterações":

Em cada movimentação, o PayMee ira enviar um Json para esta Url com o conteúdo similar ao conteúdo abaixo:

{
  "newStatus": "PAID",
  "saleToken": "XXXXXXX",
  "referenceCode": "ABC123",
  "currency": "BRL",
  "amount": 100.12,
  "date": "2023-11-28 11:14:01"
}

Neste Json iremos extrair os campos abaixo:

  • referenceCode: Código da compra que informamos na criação do pagamento
  • newStatus: Status do Pagamento

Quando "newStatus" receber "PAID" indica que o pagamento foi APROVADO 💚:

{
"newStatus": "PAID"
}

Integrando com PHP

Agora que já aprendemos como funciona, vamos fazer isto tudo funcionar via PHP?

Segue exemplo de código:

<?
$DadEnv                                             = array();
$DadEnv["currency"]								    = "BRL";
$DadEnv["amount"]							        = 123.45;
$DadEnv["referenceCode"]					        = "ABC129";
$DadEnv["maxAge"]							        = 120;
$DadEnv["paymentMethod"]					        = "PIX";
$DadEnv["callbackURL"]						        = "https://webhook.site/74605848-c104-461b-a94f-4febba6c1bc1";
$DadEnv["shopper"]["name"]						    = "Paloma Macetko";
$DadEnv["shopper"]["email"]						    = "[email protected]";
$DadEnv["shopper"]["document"]["type"]			    = "CPF";
$DadEnv["shopper"]["document"]["number"]		    = "61032595418";
$DadEnv["shopper"]["phone"]["type"]				    = "MOBILE";
$DadEnv["shopper"]["phone"]["number"]			    = "4799886699";
$DadEnv["shopper"]["bankDetails"]["branch"]		    = "0001";
$DadEnv["shopper"]["bankDetails"]["account"]	    = "00011-0";

$ch 							                    = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.paymee.com.br/v1.1/checkout/transparent");
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",
"x-api-key: XXXXXXXXXXXXXXXXXXXXXXXX",
"x-api-token: XXXXXXXXXXXXXXXXXXXXXXXX"
));
$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 "id: " . $response2["response"]["id"];
        echo "<br>";
        echo "plain: " . $response2["response"]["instructions"]["qrCode"]["plain"];
        echo "<br>";
        echo "url: " . $response2["response"]["instructions"]["qrCode"]["url"];
        
        echo "<br>";
        echo "<br>";
        echo "<br>";
        echo "<br>";
        
        ?>
        <img src="data:image/jpg;base64,<?=$response2["response"]["instructions"]["qrCode"]["base64"]?>" />
        <?
        
    }else{
        
        echo "ERRO >> " . $response2["main_error_message"];
        
    }

}
?>

Hora de dar tchau por hoje pessoal! 😊

Nos encontramos em breve. 👋

Leia também