Histórico de mensagens sobre url POST em dúvidas

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
Canal: dúvidas
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

@luizfeleal existem algumas falha em como você montou a requisição, segue um exemplo de como fazer a autenticação:

php
//Desenvolvido pela Consultoria Técnica da Efí
$config = [
"certificado" => "./certificado.pem",
"client_id" => "YOUR-CLIENT-ID",
"client_secret" => "YOUR-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 "
";
?>

Avatar discord do usuario luizfeleal

luizfeleal

Ver Respostas

$credenciaisBase64 = base64_encode($cliente_id . ":" . $client_secret);

$url = env('URL_EFI') . "/oauth/token";

// Inicializa a sessão cURL
$ch = curl_init();


curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); // Verifica o certificado do servidor
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // Verifica o host do certificado
curl_setopt($ch, CURLOPT_SSLCERT, $certificado); // Define o certificado a ser usado


// Adiciona os dados do cliente como autenticação básica
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/x-www-form-urlencoded',
"Authorization: Basic " . $credenciaisBase64

]);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'grant_type' => 'client_credentials',
]));

// Executa a requisição e obtém a resposta
$resposta = curl_exec($ch);

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Como ativar é fazendo um PUT para /webhook/:chave indicando o path base sem /pix, aí a Efí adiciona o /pix.
O body da requisição é:


E aí a Efí vai fazer o POST em https://exemplo.com.br/webhook/pix

Avatar discord do usuario jessica_efi

jessica_efi

Certo. Você implementou o sistema de notificação? Nesse caso, no momento da emissão você deve informar uma url de notificação, para que a Efí dispare um POST para sua URL a cada mudança de status da cobrança. Essa notificação possui um token específico, que o seu sistema deverá consultar para obter as informações da cobrança.

Avatar discord do usuario douglasalves_27133

douglasalves_27133

Ver Respostas

No postman, gerei um token em homologação para deletar o webhookUrl de homologação.

Posteriormente efetuei uma nova solicitação de token produção, solicitei a criação da webhookUrl novamente, porém o token apresentou-se inválido.

Devo esperar expirar o token gerado em homologação?

Avatar discord do usuario douglasalves_27133

douglasalves_27133

No postman, gerei um token em homologação para deletar o webhookUrl de homologação.

Posteriormente efetuei uma nova solicitação de token produção, solicitei a criação da webhookUrl novamente, porém o token apresentou-se inválido.

Devo esperar expirar o token gerado em homologação?

Avatar discord do usuario _dishark

_dishark

Ver Respostas

Consegui aqui, Igor. Obrigado pela atenção. O problema é na hora de vincular o certificado a uma URL no postman. Eu configurei uma e estava usando outra.

Avatar discord do usuario vicenzomartinelli

vicenzomartinelli

Ver Respostas

bom dia!
Gostaria de tirar uma dúvida sobre a integração de pagamento para PIX.
Implementamos por aqui a geração e o controle para ouvir os webhooks porém mesmo a listagem de webhooks nos retornando a nossa url corretamente o webhook de pagamento nunca chega para nós.
Como posso verificar isso? tem algum endpoint onde consiga os webhooks enviados e a resposta para cada um deles?

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Bom dia @leofnh ! Quando uma transação possui uma URL de notificação cadastrada (atributo notification_url), a Efí dispara um POST para esta URL a cada mudança no status da cobrança. Esse POST vai conter um token de notificação. Então você precisa cadastrar uma URL de notificação na cobrança e prepará-la para mostrar/armazenar o token de notificação para você consultar essa informação.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @Silvio Fernadnes. Bom dia!

Quando você define uma URL de notificação em um boleto, a Efí dispara um POST para esta URL a cada mudança no status da cobrança. Por segurança essa notificação possui um token específico, que será o mesmo durante todo o "ciclo de alterações" da transação.
Então, sua aplicação deve receber o token na variável $_POST['notification'] e consultar essa informação através do endpoint GET /v1/notification/:token, a resposta será todos os dados informativos sobre a alteração sofrida pela cobrança, como por exemplo, o status anterior e atual da cobrança.

Nos seguintes link você encontra mais detalhes:
https://dev.gerencianet.com.br/docs/notificacoes-recebendo
https://dev.gerencianet.com.br/docs/playground-notificacoes

Qualquer dúvida, conte com a gente!

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

@Xossy Quando você criar uma assinatura você utiliza o parâmetro metadata>notification_url definindo uma URL de retorno.
Assim a cada cobrança que for criada e paga, mensalmente por exemplo, será enviado uma notificação para seu sistema com o notification_token da assinatura (https://dev.gerencianet.com.br/docs/entendendo-fluxo-notificacoes).
Ao receber o notification_token, seu sistema deverá consultá-lo para obter os detalhes da notificação (https://dev.gerencianet.com.br/docs/notificacoes-recebendo#2-consultando-detalhes-de-uma-notifica%C3%A7%C3%A3o), e então obter o json semelhante ao seguinte:

json
{
"code": 200,
"data": [
{
"id": 1,
"type": "subscription",
"custom_id": null,
"status": {
"current": "new",
"previous": null
},
"identifiers": {
"subscription_id": 11976
},
"created_at": "2017-07-20 00:20:16"
},
{
"id": 2,
"type": "subscription",
"custom_id": null,
"status": {
"current": "new_charge",
"previous": "new"
},
"identifiers": {
"subscription_id": 11976
},
"created_at": "2017-07-20 00:20:16"
},
{
"id": 3,
"type": "subscription_charge",
"custom_id": null,
"status": {
"current": "new",
"previous": null
},
"identifiers": {
"subscription_id": 11976,
"charge_id": 2396478
},
"created_at": "2017-07-20 00:20:16"
}
]
}
neste Json você vai capturar o array com que te mostra todo histórico da assinatura.

Então você deverá capturar em cada laço desse json. Se o laço conter o "type": "subscription", significa que ele se refere a um registro de alteração da assinatura.
Se em outro laço conter o "type": "subscription_charge", significa que ele se refere a um registro de alteração de uma cobrança, então você poderá verificar o status>current, subscription_id a qual se refere.

Veja o exemplo completo da resposta ao consultar o token de notificação de uma assinatura: https://dev.gerencianet.com.br/docs/notificacoes-recebendo#21-exemplos-de-respostas