Perfeito, neste caso então você conseguiria cadastrar uma URL para receber as notificações.
As nossas notificações são realizadas através do metodo POST.
Perfeito, neste caso então você conseguiria cadastrar uma URL para receber as notificações.
As nossas notificações são realizadas através do metodo POST.
Percebi um erro no meu teste que no postman eu estava enviando por get usando x-www-form-urlencoded no entanto ao mudar para POST fucionou a notificação no postman
Ok, no $body insira o ?ignorar=
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php?ignorar="
}';
E no arquivo "/webhook.php" inseira o exemplo de código abaixo:
' . json_encode($resposta, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '';
Meu Webhook: public function webhook() {
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php"
}';
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->config['rotas'] . '/v2/webhook/' . $this->config['chave_pix']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_SSLCERT, $this->config["certificado"]);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '');
$headers = array();
$headers[] = 'Authorization: Basic ' . $this->access_token;
$headers[] = 'X-Skip-Mtls-Checking: true';
$headers[] = 'Content-Type: application/json';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo '
';';
var_dump($this->config['chave_pix'], $this->config['client_id'], $this->config['client_secret'], $result);
echo '
';';
var_dump($e->getCode(), $e->getFile(), $e->getMessage());
echo '
Estou executando este método:
public function webhook() {
$body = '{
"webhookUrl": "https://julioerp.agenciaweblab.com.br/webhook.php"
}';
try {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $this->config['rotas'] . '/v2/webhook/' . $this->config['chave_pix']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_SSLCERT, $this->config["certificado"]);
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, '');
$headers = array();
$headers[] = 'Authorization: Bearer ' . $this->access_token;
$headers[] = 'X-Skip-Mtls-Checking: true';
$headers[] = 'Content-Type: application/x-www-form-urlencoded';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
echo '
';';
var_dump($this->config['chave_pix'], $result);
echo '
';';
var_dump($e->getCode(), $e->getFile(), $e->getMessage());
echo '
Mas se quiser spoiler do que você vai ver, é uma requisição POST feita para a URL do webhook sem apresentar o certificado, seguida de uma com o certificado, na hora em que você ativa.
E depois, quando vem o Pix, eles fazem POST em URL+"/pix" com um array de objetos Pix.
Bom dia, @martins.dev! Tudo bem?
Neste caso, a URL que você informou no cadastro esta retornando o status HTTP 301 quando é realizado uma requisição de teste para ela.
O status HTTP 301 é um código de status de resposta HTTP usado para redirecionamento permanente de URL
Olá, @alexsiqueira0615!
Você tratou o subcaminho /pix? Quando você registra o webhook com uma url https://www.exemplo-url.com/webhook, a notificação é enviada para https://www.exemplo-url.com/webhook/pix como um post
Boa tarde. Estou tendo dificuldade para receber notificações do status da cobrança. Na documentação https://dev.efipay.com.br/docs/api-cobrancas/notificacoes/#recebendo-as-notifica%C3%A7%C3%B5es diz:
"Um POST vai conter apenas uma informação: um token de notificação. Esse token é enviado quando ocorre uma alteração no status da cobrança. Para receber essas notificações, você precisa cadastrar uma URL de notificação na cobrança e prepará-la para ler o token na variável $_POST['notification']."
No meu código eu faço
$token = $_POST['notification']
e recebo este erro na plataforma:
{
"code": 3500010,
"error": "property_does_not_exists",
"error_description": {
"property": "notification",
"message": "A propriedade [notification] informada não existe."
}
}
como resolvo?
Bom dia, @alexsiqueira0615! Conversamos no chat privado, ele se encerra após 24 horas sem atividade.
Para testar uma requisição para sua URL utilizando o Postman, você cria uma requisição semelhante à seguinte:
Olá, isso mesmo em alguns casos dando TCP connection reset by peer no retorno do Curl chamada Post para a API do Pix
Mesmos clientes com problema depois se tentam algumas vezes conseguem criar o Pix normalmente
Isso parece ser alguma instabilidade talvez no lado da API Pix
Olá, @leandro535! Bom dia!
Para receber notificações de carnê ou boleto, você define a URL no momento da criação da cobrança. Então, sempre que houver uma mudança de status da cobrança, a Efí dispara um POST para essa URL. Essa notificação vem com um token específico, que permanece o mesmo durante todo o ciclo de alterações da transação.
Para simplificar, você pode usar este exemplo da SDK de PHP para consultar o token da notificação e obter os detalhes atualizados da cobrança. [Aqui está o link](https://github.com/efipay/sdk-php-apis-efi/blob/main/examples/charges/notification/getNotification.php).
Além disso, você pode conferir mais detalhes na documentação técnica [aqui](https://dev.efipay.com.br/docs/api-cobrancas/notificacoes#recebendo-as-notifica%C3%A7%C3%B5es).
Temos também um vídeo sobre o assunto [neste link](https://youtu.be/wKAgmXpWQQk?list=PLRqvcUTH2VsWufBmzOdTVeLEOTGrPNoiu).