Histórico de mensagens sobre url POST

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @berzacola! Como vai?
A chave Pix do pagador que está utilizando no CURL, é a mesma que está no seu Postman?
Pois o webhook está associado a chave Pix.
imagem enviada na mensagem pelo usuario guilherme_efi

# pix
Avatar discord do usuario marcelo_efi

marcelo_efi

Ver Respostas

Bom dia, tudo bem ? Com o webhook você vai cadastrar uma URL do seu sistema para receber notificações sobre os pagamentos da sua chave PIX. Sempre que houver uma mudança no status da cobrança, enviaremos um POST contendo o conteúdo da transação. Você pode encontrar mais detalhes sobre o webhook em nossa documentação: https://dev.gerencianet.com.br/docs/api-pix-endpoints#webhooks

# bolix
Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Bom dia @lucasbernieri tudo certo?
No momento da crianção da cobrança você precisa definir uma URL de notificações.
Dessa forma, quando houver uma alteração no status da cobrança, será enviado para aquela URL um post contendo o token de notificação.
Você então utiliza esse token para consultar na nossa API que retornará o status atualizado da cobrança.
Na nossa documentação você encontra mais detalhes sobre esse processo: https://dev.gerencianet.com.br/docs/notificacoes-recebendo
imagem enviada na mensagem pelo usuario joao_efi

# pix
Avatar discord do usuario lucasbernieri

lucasbernieri

Ver Respostas

Bom dia pessoal, estou com algumas dúvidas relacionadas com a integração via API para o PIX.

Usando o SDK PHP, já consegui gerar as cobranças, associadas com uma chave PIX gerada dentro da minha conta, mas estou um pouco confuso sobre a parte de webhooks de notificação e diferenças entre homologação e produção.

Sobre a parte de Webhooks, eu entendi que preciso cadastrar via API qual é a URL que o Gerencianet deverá notificar quando houver algum evento relacionado com a chave PIX. Até consegui realizar alguns testes utilizando a coleção do postman, gerando a cobrança e recebendo a notificação post da Gerencianet.

Um ponto relacionado com a aplicação que estou trabalhando é que o cliente está em um servidor compartilhado. Vi na documentação que é possível utilizar o parâmetro

x-skip-mtls-checking: true
e verificar no meu sistema se a requisição veio do Gerencianet. Isso funciona para o ambiente de produção também?

Outra dúvida, tem algum passo extra que eu precise fazer para colocar a integração via PIX para funcionar no ambiente de produção? É preciso solicitar da Gerencianet alguma autorização ou aprovação?

O sistema só irá gerar cobranças via PIX e esperar o Webhook de notificação, nada além desse fluxo.

# bolix
Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Você pode copiar o token de notificação do histórico e realizar um POST para sua URL através do Postman
imagem enviada na mensagem pelo usuario joao_efi

# devs
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @israelcosta.
Acredito então, como não vai configurar no Apache ou Nginx o mTLS, você deverá registrar sua webhook URL com o atributo x-skip-mtls-checking=true
Veja mais detalhes e pontos de atenção em nossa documentação: https://dev.gerencianet.com.br/docs/api-pix-endpoints#skip-mtls

Segundo ponto, os callbacks são enviados pela Efí via POST ​/pix quando há uma alteração no status do Pix. Então nestas rotas você deve esperar Route:post.

Por último, adicione também a rota POST '/webhook', pois é feito uma requisição de teste nela também.

# bolix
Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Bom dia, @alefvieirbv! Tudo joia?
Você precisa cadastrar uma URL que aceite requisições do tipo POST em seu sistema.
Em relação ao custom_id, você tem uma duvida especifica?

# devs
Avatar discord do usuario divinocardozo

divinocardozo

curl --location --request POST 'https://api-pix-h.gerencianet.com.br/oauth/token' \
--header 'Authorization: Basic Q2xpZW50X0lkX2Q5MzAzNWFiNDgxZGI5MzEyNDIwNDgxMGU5NzM2M2Y3NmIwZWI0NDI6Q2xpZW50X1NlY3JldF9lNGUxN2M2YWQ3ZDY4ODZiMDYzNDk3ODUwY2VmOWVlMWU3OGY0YTIx' \
--header 'Content-Type: application/json' \
--data-raw '{
"grant_type": "client_credentials"
}'

# bolix
Avatar discord do usuario gustavocarvalho5015

gustavocarvalho5015

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://v5.chatpro.com.br/$id_instancia/api/v1/send_message",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"number\":\"$numero_telefone\",\"message\":\"$texto\"}",
CURLOPT_HTTPHEADER => [
"Authorization: $token",
"accept: application/json",
"content-type: application/json"
],
]);

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

curl_close($curl);

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

# módulos-plugins
Avatar discord do usuario diogo.luz

diogo.luz

Ver Respostas

Tentei isso direto no PHP e retorna NULL. O que eu fiz de errado?

O código completo do PHP ficou assim:


$arq_certificado = "MeuCertificadoQueEstáNoMesmoDiretorio.p12";


$client_id = "MeuClientID";
$client_secret = "MeuClientSecret";
$curl = curl_init();

$authorization = base64_encode("$client_id:$client_secret");

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix.gerencianet.com.br/oauth/token", // Rota base, desenvolvimento 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 => $arq_certificado, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $authorization",
"Content-Type: application/json"
),
));

$auth = json_decode(curl_exec($curl), true);

curl_close($curl);

$tokenType = $auth['token_type'];
$accessToken = $auth['access_token'];


echo "$accessToken";

var_dump($auth);



?>

# pix
Avatar discord do usuario ysabella3926

ysabella3926

require('dotenv').config({path: '../.env_homologation'})


console.log(process.env.GN_CLIENT_KEY_PROD)


const urlApiProduction = 'https://api-pix.gerencianet.com.br'
const urlApiStaging = 'https://api-pix-h.gerencianet.com.br'

const https = require('https') //conexão segura para enviar dados
const axios = require('axios')
const fs = require('fs')//ler arquivos no disco
const baseURL = process.env.GN_ENV === 'production' ? urlApiProduction : urlApiStaging

const getToken = async() =>{
//console.log('getToken', process.env.GN_CLIENT_KEY_PROD)
const certificate = fs.readFileSync('../' + process.env.GN_CERTIFICATE)
const credentials ={
client_id: process.env.GN_CLIENT_KEY_PROD,
client_secret: process.env.GN_CLIENT_SECRET_PROD
}
const data = JSON.stringify({grant_type: 'client_credentials'})//o que será retornado da api
const dataCredentials = credentials.client_id + ':' + credentials.client_secret
const auth = Buffer.from(dataCredentials).toString('base64')


const agent = new https.Agent({
pfx: certificate,
passphrase: '',
})

const config ={
method: 'POST',
url: baseURL + '/oauth/token',
headers: {
Authorization: 'Basic' + auth,
'Content-Type': 'application/json'
},
httpsAgent: agent,
data: data,
}
const result = await axios(config)
console.log(result.data)

}

getToken()

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O Curl é meu profeta e nada meu faltará. Mas Postman vale também.

# pix
Avatar discord do usuario rafaelribeiro.sp

rafaelribeiro.sp

Onde posso acompanhar os erros de envio do webhook? Estou setando a URL e a chave PIX, recebo um OK, quando consulto, a URL está lá... mas ao receber um pagamento PIX, não recebo o POST

# devs
Avatar discord do usuario igor_efi

igor_efi

php

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://apis.gerencianet.com.br/pagamento/oauth/token',
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_HTTPHEADER => array(
'x-client-cert-pem: {{X-Certificate-Pem}}',
'Authorization: Basic <>',
'Content-Type: application/json'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# módulos-plugins
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @ricardogssa. Bom dia!
Nesse caso, você pode montar as requisições dos endpoints (https://dev.gerencianet.com.br/docs/api-pix-endpoints) usando o cURL.
Para facilitar esse processo você pode nossa collection do Postman (https://sejaefi.link/ryeAmpRfMh), e gerar snippet de código para ter o exemplo cURL do endpoint.
imagem enviada na mensagem pelo usuario guilherme_efi

# pix
Avatar discord do usuario romuloreis6143

romuloreis6143

@joao_efi se eu quiser usar o "Skip-mTLS" (utilizando a validação por ip e uma hash ao final da URL) basta eu ignorar o certificado ? os dados do pix pago entregues pelo POST poderá ser lido sem problemas?

# pix
Avatar discord do usuario joao_efi

joao_efi

Ver Respostas

Bom dia @tiagooops tudo certo?

Por determinação do Banco Central, nossa API adiciona o /pix ao final da URL cadastrada, sendo assim
Se você cadastra o webhook a URL:
exemplo.com.br/webhook
A confirmação de pagamento será enviada para:
exemplo.com.br/webhook/pix

Além da rota criada acima, é necessário que você adicione a rota a seguir:

js
app.post('/webhookPix/pix', (req, res) => {
try {
const pix = req.body.pix;
console.log(pix);
res.status(200).send('ok')
} catch (err) {
console.error(err)
res.status(500).send('Erro interno do servidor')
}
})

# pix
Avatar discord do usuario tiagooops

tiagooops

gerencianet.pixCreateImmediateCharge([], body)
.then((resposta) => {
const url = resposta.location;
const parts = url.split("/");
const afterSecondSlash = parts[2];
let result = {
txid: resposta.txid,
location: 'https://pix.gerencianet.com.br/cob/pagar/'+afterSecondSlash,
cpf: resposta.devedor.cpf,
nome: resposta.devedor.nome,
valor: resposta.valor.original,
chave: resposta.chave
}
res.send(result)
})
.catch((error) => {
console.log(error)
})

# cartões
Avatar discord do usuario yasmin_efi

yasmin_efi

Ver Respostas

Olá @lordvitao! No caso de boletos é um pouquinho diferente. A URL deve ser informada em cada requisição; enviaremos um POST com o token de notificação, o seu servidor deve então consultar este token para conseguir visualizar o conteúdo informado.

# dúvidas
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.