Histórico de mensagens sobre url em pix

EXIBINDO CONVERSAS RECENTES:

Texto: url
Canal: pix
Avatar discord do usuario felipenunes0714

felipenunes0714

eu ja tentei todos os nomes possiveis como webhookUrl, webhook, callbackUrl, mas sempre dar o mesmo erro

Avatar discord do usuario felipenunes0714

felipenunes0714

se eu tirar o paramentro "webhook", o código gera o pix normalmente, porém desse jeito eu não vou receber as notificações da api pela url

Avatar discord do usuario felipenunes0714

felipenunes0714

Ver Respostas

boa tarde, alguém poderia me ajudar ? eu já tentei de várias formas e não consigo fazer com que o código que gera o pix envie a notificação para url webhook, toda vez que eu coloco algo além do que já está na variavel $body apresenta o seguinte erro:
EfiException Code: 400 Error: json_invalido Error Description: Parâmetro ".body", não são permitidas propriedades adicionais

Avatar discord do usuario navossoc

navossoc

Ver Respostas

era pra funcionar, já tentou dar um var_dump no $response e olhar o curl_error e curl_errno?

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

A resposta do Curl é True/False, de qualquer forma não iria mostrar o token, por exemplo.

Avatar discord do usuario felipenunes0714

felipenunes0714

Ver Respostas

eu não tô conseguindo achar a url de produção para exibir o token la na documentação

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

A URL é de homologação...

Avatar discord do usuario felipenunes0714

felipenunes0714

Ver Respostas

$config = [
"certificado" => "./producao.pem",
"client_id" => "",
"client_secret" => ""
];


$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";
?>

eu estou chamando essa chamada simples da documentação, e ela me retorna a pagina em branco ao invés de retornar o token

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde, @.kevindiego! Tudo bem?
Se a chave informada na emissão da cobrança possuir um webhook cadastrado, iremos realizar uma notificação para a URL cadastrada.

Avatar discord do usuario _acb09

_acb09

Ver Respostas

O meu código está assim:

$config = [];
$config["certificado"] = config("services.efipay.certificate_path");
$config["client_id"] = config("services.efipay.client_id");
$config["client_secret"] = config("services.efipay.client_secret");

$headers = [];
$headers['Authorization'] = "Basic " . base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$headers['Content-Type'] = 'application/json';

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/oauth/token", // Rota base, homologação ou produção
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 60,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => '{"grant_type": "client_credentials"}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => $headers
));

$response = curl_exec($curl);

if (curl_errno($curl)) {
dd('Error:' . curl_error($curl));
}

curl_close($curl);

dd($response);

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Bom dia, @celsoalexandre! Tudo bem?

Sugerimos duas formas de validação para garantir a segurança, mas recomendamos fortemente que você as utilize em conjunto:

Verifique o IP de comunicação:

Restrinja a comunicação ao domínio do webhook cadastrado para aceitar apenas mensagens do IP utilizado pela Efí.
IP utilizado atualmente em nossas comunicações: 34.193.116.226.

Adicione uma hash à URL cadastrada no webhook:

Crie um HMAC (uma identificação própria) que será acrescentado ao final da URL no momento do cadastro do webhook. Essa hash será utilizada para validar a origem da notificação.
Todos os webhooks enviados ao seu servidor terão essa identificação final, e sua aplicação deve validar a presença da mesma.
Exemplo:

URL de notificação original: https://seu_dominio.com.br/webhook
URL com a hash: https://seu_dominio.com.br/webhook?hmac=xyz&ignorar=.
O termo ignorar= serve para tratar a adição do /pix no final da URL.

Avatar discord do usuario tellyscastro

tellyscastro

Ver Respostas

https://dev.efipay.com.br/docs/api-cobrancas/credenciais/#collection-postman-api-cobran%C3%A7as

Segui o download deste link ai .

Fiz o download da collection

nesta collection, as urls estão com V1

modificquei para {{rota_base_pix}}/v2/authorize

mesmo assim retorna o erro

{
"nome": "nao_encontrado",
"mensagem": "Recurso não encontrado"
}

Avatar discord do usuario tellyscastro

tellyscastro

Ver Respostas

{{rota_base_pix}}/v2/authorize

{
"nome": "nao_encontrado",
"mensagem": "Recurso não encontrado"
}

Mesmo alterando a URL para /v2

o erro persiste

Avatar discord do usuario palloma_efi

palloma_efi

Ver Respostas

Bom dia @celsoalexandre ! Tudo bem? O atributo metadata é utilizado apenas na API Cobranças.
Na API Pix, você deve cadastrar a URL através da rota PUT /v2/webhook/:chave: https://dev.efipay.com.br/docs/api-pix/webhooks#configurar-o-webhook-pix

Avatar discord do usuario celsoalexandre

celsoalexandre

Ver Respostas

Bom dia,
estou tendo o seguinte erro ao criar uma charge pix com location e notification_url usando a sdk pra Go, ambiente homolog
{"nome":"json_invalido","mensagem":"Valores ou tipos de campo inválidos","erros":[{"chave":"additionalProperties","caminho":".body","mensagem":"não são permitidas propriedades adicionais"}]}

go
// Go
PUT /v2/cob/:txid
map[string]interface{}{
"calendario": map[string]interface{}{
"expiracao": 600,
},
"valor": map[string]interface{}{
"original": "0.01",
},
"loc": map[string]interface{}{
"id": 97,
},
"metadata": map[string]interface{}{
"notification_url": "https://meudominio:10021/efi/homolog/webhook",
},
"chave": "71cdf9ba-c695-4e3c-b010-abb521a3f1be",
"solicitacaoPagador": "Teste",
}

Se eu removo o campo "metadata" e seu conteúdo, funciona.
Não é mais possível criar a cobrança e registrar a callback na mesma chamada, ou seria de outra forma?

Avatar discord do usuario gabriel_efi

gabriel_efi

Ver Respostas

Olá, @litho_on! Não é possível.

Uma URL de webhook pode estar associada a várias chaves Pix, mas uma chave Pix só pode estar vinculada a uma única URL de webhook.

Avatar discord do usuario victormorenos

victormorenos

Ver Respostas

Oi bom dia! Estou precisando de ajuda, se alguem puder me auxiliar agradeço. estou conseguindo obter o token de autenticação, e quando vou chamar qualquer endpoint recebo um erro https://dev.efipay.com.br/docs/api-pix/endpoints-exclusivos-efi/#buscar-o-saldo-da-conta esse por exemplo,


function obterSaldo($token) {
$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://pix.api.efipay.com.br/v2/gn/saldo",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . $token
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
return "cURL Error #:" . $err;
} else {
return $response;
}
}

sendo que o $token já seria o valor recebido pelo oauth depois do envio do certificado e etc... e sempre recebo: Empty reply from server, e realmente o servidor não retorna nada, nem mesmo uma mensagem de erro quando tenta acessar o endpoint,.

Avatar discord do usuario esdrasfyy

esdrasfyy

alguem pode me ajudar? nao estou conseguindo gerar o pagamento

ta dando esse erro [Symbol(kHighWaterMark)]: 16384,
[Symbol(kRejectNonStandardBodyWrites)]: false,
[Symbol(kUniqueHeaders)]: null
},
_currentUrl: 'https://pix-h.api.efipay.com.br/v2/cob',
[Symbol(shapeMode)]: true,
[Symbol(kCapture)]: false
},
cause: Error: socket hang up
at TLSSocket.socketOnEnd (node:_http_client:524:23)
at TLSSocket.emit (node:events:531:35)
at endReadableNT (node:internal/streams/readable:1696:12)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
code: 'ECONNRESET'
}
}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @v_watson_pes_pro. Tudo bem?
Você precisa consumir o endpoint PUT /v2/webhook/:chave, para associar a chave Pix que você usa na geração da cobrança à URL da sua aplicação que você deseja receber as notificações.
Se atente ao detalhe que, ao registrar a URL, as notificaçõaes serão enviadas para úr_cadastrada + /pix.
imagem enviada na mensagem pelo usuario guilherme_efi

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

O problema era o mapeamento da rota /pix
Após cadastrar a URL com parâmetro ignorar no final, a notificação chegou corretamente.