Histórico de mensagens sobre url POST

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
# pix
Avatar discord do usuario destemido9466

destemido9466

Ver Respostas

me tirem uma duvida por favor sobre o Auth tenho que gerar o token sempre antes de gerar a combrança pix para não dar error invalid_token estou pensando como posso verificar se o token é valido antes de executar o curl para gerar o qr code falo antes de enviar o post para a geração do qr por que depois que tenta gerar já fiz isso:
if($options['error'] == 'invalid_token'){
echo $options['error'];

}

# pix
Avatar discord do usuario marcosfilho8113

marcosfilho8113

Ver Respostas

curl_setopt_array($curlWebHook, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/webhook/minhachaveaqui",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_SSLCERT => $config["certificate"],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_POSTFIELDS => "{\r\n \"webhookUrl\": \"https://teamreapers.com.br/servers/painel/retorno_pix.php",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $accessToken"
),
));

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Neste exemplo, exibe um que contém esta informação. Segue um exemplo completo:

php
$curl = curl_init();

$txid = "seutxid";

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob/$txid",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_SSLCERT => $config["certificate"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_POSTFIELDS =>'{
"calendario": {
"expiracao": 13600
},
"devedor": {
"cpf": "12345678909",
"nome": "Francisco da Silva"
},
"valor": {
"original": "0.02"
},
"chave": "[email protected]",
"solicitacaoPagador": "Teste pix."
}',
CURLOPT_HTTPHEADER => array(
"authorization: Bearer $accessToken",
'Content-Type: application/json'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario marcosfilho8113

marcosfilho8113


curl_setopt_array($curlrequest, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob",
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_SSLCERTPASSWD => "",
CURLOPT_SSLCERT => $config["certificate"],
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_HTTPHEADER => array(
"Authorization: $accessToken",
"content-Type: application/json"
),
));

# pix
Avatar discord do usuario marcosfilho8113

marcosfilho8113

Ver Respostas

curl_setopt_array($curlrequest, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob",
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 => json_encode($data),
CURLOPT_HTTPHEADER => array(
"Authorization: $accessToken",
"content-Type: application/json"
),
));

# pix
Avatar discord do usuario marcosfilho8113

marcosfilho8113

$config = [
"certificate" => realpath("classes/gerencianet/certificate_homolog.pem"),
"client_id" => "Client_Id_2bc65d226f54d47bec113654a214a1e3e1b1baea",
"client_secret" => "Client_Secret_948041017d8adadea5eaa303fd744db14da94742"
];

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

console_log($data);

curl_setopt_array($curlauth, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.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["certificate"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $autorizacao",
"Content-Type: application/json"
),
));

# bolix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Cadastrando uma URL de notificação, você consegue receber este valor também de forma automática a cada alteração de status da transação.
Veja aqui os exemplos de respostas de uma notificação: https://dev.gerencianet.com.br/docs/notificacoes-recebendo#section-2-1-exemplos-de-respostas-

# pix
Avatar discord do usuario matheus_efi

matheus_efi

Acredito que em seu caso esteja faltando tratar o /pix que incluímos no envio da notificação.
Exemplo:
Integrador cadastrou a url base https://gerencianet.com.br/, ao acionar o webhook uma requisição do tipo POST será enviada para https://gerencianet.com.br/pix.

# pix
Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Por exemplo:
Integrador cadastrou a url base https://gerencianet.com.br/, ao acionar o webhook uma requisição do tipo POST será enviada para https://gerencianet.com.br/pix.
Integrador cadastrou a url base https://gerencianet.com.br/pix, ao acionar o webhook uma requisição do tipo POST será enviada para https://gerencianet.com.br/pix/pix.
Integrador cadastrou a url base https://gerencianet.com.br/?id=0000x22, ao acionar o webhook uma requisição do tipo POST será enviada para https://gerencianet.com.br/?id=0000x22/pix.

# pix
Avatar discord do usuario racfish785348

racfish785348

Oi Pessoal, bom dia!

Estamos com dificuldades em configurar o MTLS. Configuramos 3 host:

1) https://webhook.site/528aa31a-0858-4b51-b923-6a07f9f877c1
Resposta da API da Gerencianet:
{
"nome": "webhook_invalido",
"mensagem": "A autenticação de TLS mútuo não está configurada na URL informada"
}
Esse post chega em nosso ambiente: "evento": "teste_webhook".

2) https://mtls-pix.clicksign.me/pix - Sem MTLS - Não chega o POST ( "evento": "teste_webhook")
{
"nome": "webhook_invalido",
"mensagem": "A requisição na URL informada falhou com o erro: ERR_TLS_CERT_ALTNAME_INVALID"
}
Esse post não chega em nosso ambiente.

3) https://mtls-pix.clicksign.dev/pix - Com MTLS - Não chega o POST ( "evento": "teste_webhook")
{
"nome": "webhook_invalido",
"mensagem": "A requisição na URL informada falhou com o erro: ERR_TLS_CERT_ALTNAME_INVALID"
}
Esse post não chega em nosso ambiente.

# pix
Avatar discord do usuario luizcristino

luizcristino

Boa tarde, eu estou tendo um problema na hora da intregação com o pix na hora de adicionar o certificado. Eu estou utilizando o código de exemplo que existe na página de documentação

java
String client_id = "YOUR-CLIENT-ID";
String client_secret = "YOUR-CLIENT-SECRET";;
String basicAuth = Base64.getEncoder().encodeToString(((client_id+':'+client_secret).getBytes()));

//Diretório em que seu certificado em formato .p12 deve ser inserido
System.setProperty("javax.net.ssl.keyStore", "certificado.p12");
SSLSocketFactory sslsocketfactory = (SSLSocketFactory) SSLSocketFactory.getDefault();

URL url = new URL ("https://api-pix-h.gerencianet.com.br/oauth/token"); //Para ambiente de Desenvolvimento
HttpsURLConnection conn = (HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Basic "+ basicAuth);
conn.setSSLSocketFactory(sslsocketfactory);
String input = "{\"grant_type\": \"client_credentials\"}";

OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();

InputStreamReader reader = new InputStreamReader(conn.getInputStream());
BufferedReader br = new BufferedReader(reader);

String response;
while ((response = br.readLine()) != null) {
System.out.println(response);
}
conn.disconnect();

E sempre me retorna Connection Reset até pelo postman

# pix
Avatar discord do usuario raquelct4629

raquelct4629

auth = base64.b64encode(
(f"{credentials['client_id']}:{credentials['client_secret']}"
).encode()).decode()

url = "https://api-pix-h.gerencianet.com.br/oauth/token" #Para ambiente de Desenvolvimento

payload="{\r\n \"grant_type\": \"client_credentials\"\r\n}"
headers = {
'Authorization': f"Basic {auth}",
'Content-Type': 'application/json'
}

response = requests.request("POST",
url,
headers=headers,
data=payload,
cert=certificado)

# assinaturas
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Mas a melhor forma para verificar se um boleto foi pago, é recebendo as notificação automáticas. As notificações permitem que você seja informado quando uma transação/boleto tiver seu status alterado para pago, por exemplo.
Para isso, quando criar uma cobrança você irá informar o atributo notification_url, e então a Gerencianet dispara um POST para esta URL a cada mudança no status da cobrança.

Neste POST vai conter apenas uma informação: um token de notificação. Ou seja, se a URL cadastrada estiver preparada para ler o token na variável $_POST['notification'] e consultar essa informação, 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.

Segue o link com mais detalhes sobre este assunto: https://dev.gerencianet.com.br/docs/notificacoes-recebendo

# pix
Avatar discord do usuario cleversonmenur

cleversonmenur

Ver Respostas

Olá, @Efí

Ainda na labuta do Webhook em ambiente PaaS. Fiz os seguintes passos e creio estar quase lá:

- Criei uma conta na Amazon para o projeto
- Cadastrei o cartão de crédito
- Provisionei o Amazon API Gateway
- Configurei um custom domain nele
- Configurei o domínio no meu Registrar
- Habilitei o custom domain no API Gateway
- Criei certificado e habilitei o HTTPS
- Baixei o cert webhook da Gerencianet
- Criei uma Trust Store PKCS12
- Coloquei a cadeia da GN lá
- Converti a TS para o formato PEM
- Provisionei um armazenamento Amazon S3
- Subi a TS.pem
- Finalizei a configuração do custom domain
- Ativei o mTLS neste domínio
- Criei uma rota de API para o meu server
- Associei a rota ao custom domain com mTLS

Fui configurando e testando a cada passo. Quase tudo funcionando. A única coisa que não consigo é fazer uma requisição client para testar o mTLS já que não tenho o cert client do webhook.

Então…

- Invoquei o serviço PUT /webhook/{chave} passando no body a url e recebi o seguinte body com o status 400:

{
"nome": "webhook_invalido",
"mensagem": "A requisição na URL informada falhou com o erro: ERR_TLS_CERT_ALTNAME_INVALID"
}

Supus ser algum erro no pem que usei para configurar o mTLS. E já experimentei o seguinte:

- Usei exatamente o CRT que baixei das docs da GN
- Fiz a conversão como citei acima (criando a TS)

Se vocês puderem fazer uma requisição mTLS com o certificado client correto para testar, a UTR é esta:

POST https://mtls.menur.app/vbeta1/establishments/mana/pix

O serviço está retornando 204 fixo para qualquer body json (não obrigatório).

Alguma luz? 🙏

# pix
Avatar discord do usuario cleversonmenur

cleversonmenur

Ver Respostas

Pessoal, seria possível fazer com que o serviço https://api-pix.gerencianet.com.br/oauth/token aceitasse o content-type: application/x-www-form-urlencoded ? Desta forma evitaria o erro HTTP 500 ao enviar o body grant_type=client_credentials que é mais compatível com REST Clients como o Insomnia e até o próprio Postman na seção de autenticação OAuth2 usando o grant type "client credentials".

# pix
Avatar discord do usuario miguelswolf

miguelswolf

Para o sdk, e curl usei a chave pem, e para o postman eu usei a chave p12

# pix
Avatar discord do usuario miguelswolf

miguelswolf

Usei o sdk de vocês, o curl e o postman

# pix
Avatar discord do usuario Eduardo_

Eduardo_

Ver Respostas

Confere se esta enviando algo assim:
CURLOPT_URL => 'https://....',
CURLOPT_PORT => 8443,
CURLOPT_SSLCERT => $codificado,
CURLOPT_SSLKEY => $decodificado,
CURLOPT_CAINFO => $codificado,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_FAILONERROR => 1,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_CUSTOMREQUEST => 'POST',

# bolix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Você poderá definir uma URL que receberá as notificações durante a criação da cobrança. Esta URL irá receber um token quando uma transação sofrer uma alteração de status.

Com este token, sua aplicação poderá realizar uma consulta através da rota GET /v1/notification/:token para obter o status da transação e demais informações da transação.

Neste link, temos exemplos de como receber este token e posteriormente consultar os detalhes da notificação: https://dev.gerencianet.com.br/docs/notificacoes-recebendo#section-2-consultando-detalhes-de-uma-notifica-o