Histórico de mensagens sobre url em pix

EXIBINDO CONVERSAS RECENTES:

Texto: url
Canal: pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Calcular a data + expiração. Acessar a URL não tem ainda uma forma padronizada de resposta entre PSPs.

Avatar discord do usuario oieusouofinx

oieusouofinx

Ver Respostas

Fala pessoal, bom dia! Sou novo aqui e estou com uma dúvida - por favor me desculpem se esse não é o formato correto ou se falei alguma besteira.

Estou fazendo uma cobrança PIX imediata (POST /v2/cob), mas estou tratando um caso de que não foi efetuado o pagamento. Vi que a expiração é em segundos (3600), ou seja, depois de uma hora essa cobrança é expirada.

Quando consulto a cobrança após uma hora (GET /v2/cob/:txid), o status dela ainda é ATIVA. Se eu acesso a url em location (no exemplo da documentacao, pix.example.com/qr/9d36b84f-c70b-478f-b95c-12729b90ca25), ela retorna a mensagem {"nome":"cobranca_expirada","mensagem":"A cobrança expirou"}.

Dada a situação, pergunto: qual a melhor forma de verificar se a cobrança está expirada? Acessar a url em location, calcular a data + expiração, ou existe uma forma mais efetiva?

Agradeço desde já!

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Com QR-Code dinâmico, não. Mas se QR-Code estático atender sua necessidade, no estático não tem URL de payload.

Avatar discord do usuario rlucredio

rlucredio

se não tivesse essa URL dentro do payload, funcionaria.

Avatar discord do usuario matwbug

matwbug

Alguém consegue me ajudar aqui com a api pix? por algum motivo minha requisição curl nao está dando response no site da gerencianet, até baixei os proprios códigos da doc e mesmo assim não foi, é como se a requisição não fosse feita, estou utilizando php


$config = [
"certificado" => BASE.'data/certif/gerencianet.pem',
"client_id" => "xx",
"client_secret" => "xx"
];
$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);

$curl = curl_init();

curl_setopt_array($curl, 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["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 luucasfzs

luucasfzs

Boa tarde quando eu tento cadastrar um webhook volta este erro aqui, meu sistema já está com HTTPS e já ta com o SSL instalado

"nome" => "webhook_invalido"
"mensagem" => "A autenticação de TLS mútuo não está configurada na URL informada"

Avatar discord do usuario brunodelara

brunodelara

vc está passando :chave no url mesmo?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Complementando: se sua chave Pix estiver atrelada a uma URL webhook e a cobrança com um txid, nó enviaremos a notificação no caso do pagamento

Avatar discord do usuario fernandogomes2667

fernandogomes2667

O cadastro do endpoint para webhook possui uma pegadinha, durante o processo cadastro ele testa a URL cadastrada. Porem ele consome um endpoint diferente do que é consumido para o envio das notificações. Precisei cadastrar o end-point (GET) https://xxx/gerencianet/ porem o endpoint que é consumido é o (POST) https://xxx/gerencianet/pix

Avatar discord do usuario Deleted User

Deleted User

Ver Respostas

Ops, troquei o mês mas não troquei o ano 😅
O problema era na rota mesmo, eu ainda tinha dúvidas sobre esse /pix no final, mas esse trecho ({$request.body#​/webhookUrl}​/pix) me deu mais clareza sobre os parâmetros. Obrigado 🙂

Avatar discord do usuario matheus_efi

matheus_efi

Ver Respostas

Boa tarde @Deleted User, você deve se atentar ao fato que quando é feito o cadastro do webhook, nós mandamos 2 requisições: Uma sem o nosso certificado(deve ser recusada) e uma com o certificado da Gerencianet. Neste caso para que o cadastro seja feito com sucesso o seu servidor deve estar configurado com o certificado que disponibilizamos em https://dev.gerencianet.com.br/docs#section-webhook.
Outro ponto a se atentar é que a rota que você está utilizando https://api-pix.gerencianet.com.br/v2/webhook?inicio=2020-05-20T21:00:00Z&fim=2020-05-22T21:01:35Z é para consultar webhooks cadastrados em suas respectivas chaves(inclusive as datas de parâmetro estão com o ano de 2020 selecionado), esse endpoint não retorna logs de webhook. E você deve verificar também que ao cadastrar o seu webhook, nós notificamos ele acrescentando o /pix(POST {$request.body#​/webhookUrl}​/pix), sendo assim no seu servidor deve ter uma tratativa para o /pix

Avatar discord do usuario Deleted User

Deleted User

Boa tarde, pessoal!

Estou tendo um problema com o recebimento do webhook.

Na rota de webhook eu programei pra registrar um log das requests pra eu ver se está tudo ok. Quando eu faço um PUT pra configurar o webhook, o site faz o log do evento teste certinho e tenho o retorno HTTP 200 OK.

[2021-05-21 12:09:58] production.INFO: {"evento":"teste_webhook","data_criacao":"2021-05-21T15:09:58.047Z"}

Quando faço um pagamento real, eu não encontro log nenhum do webhook no site e nem na rota de consulta dos webhooks.

URL: https://api-pix.gerencianet.com.br/v2/webhook?inicio=2020-05-20T21:00:00Z&fim=2020-05-22T21:01:35Z (GET)

json
{
"parametros": {
"inicio": "2020-05-20T21:00:00.000Z",
"fim": "2020-05-22T21:01:35.000Z",
"paginacao": {
"paginaAtual": 0,
"itensPorPagina": 100,
"quantidadeDePaginas": 0,
"quantidadeTotalDeItens": 0
}
},
"webhooks": []
}

Cobrança que eu fiz teste
json
{
"calendario": {
"criacao": "2021-05-21T14:51:23.000Z",
"expiracao": 115200
},
"txid": "1a0cbe16ec6a44baade5f93784ff7273",
"revisao": 0,
"loc": {
"id": 68,
"location": "qrcodes-pix.gerencianet.com.br/v2/75363c7ef9e64723955d5ed656924c2f",
"tipoCob": "cob",
"criacao": "2021-05-21T14:51:23.000Z"
},
"location": "qrcodes-pix.gerencianet.com.br/v2/75363c7ef9e64723955d5ed656924c2f",
"status": "CONCLUIDA",
"valor": {
"original": "0.50"
},
"chave": "ff70834e-483e-4ece-bd9f-77ae46ca350b",
"pix": [
{
"endToEndId": "E0036030520210521145244d044acecd",
"txid": "1a0cbe16ec6a44baade5f93784ff7273",
"valor": "0.50",
"chave": "ff70834e-483e-4ece-bd9f-77ae46ca350b",
"horario": "2021-05-21T14:52:35.000Z"
}
]
}

Avatar discord do usuario Deleted User

Deleted User

Bom dia, pessoal. Tudo bom?
Estou tentando configurar o webhook. Fiz as configurações do apache2 para exigir o certificado, mas o recurso de configuração informa que a url retornou 403.
O certificado que coloquei foi baixado do link disponibilizado na documentação.
(https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt)

{
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 403"
}

SSLCertificateFile /etc/letsencrypt/live/udois.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/udois.com/privkey.pem
SSLCACertificateFile /var/www/html/Udois/resources/ssl/certificates/chain-pix-prod.crt

SSLVerifyClient none

SSLVerifyClient require
SSLVerifyDepth 3

Avatar discord do usuario guilherme_efi

guilherme_efi

Outro detalhe é a adição do /pix no final da sua URL que deve ser tratada no location das configurações de seu Nginx.

Ou seja, na request PUT https://api-pix.gerencianet.com.br/v2/webhook/:chave você irá passar o body com sua URL, exemplo:

No entanto, a URL será registrada com o /pix no final, assim: https://seudominio.com.br/webhook/pix.

Então esta adição do /pix também dever ser tratada nas configurações do Nginx para que na rota /webhook/pix de seu servidor exija o certificado CA da Gerencianet e recebe o body a partir dela.

Avatar discord do usuario 13337

13337

json
{"nome":"webhook_invalido","mensagem":"A URL informada respondeu com o código HTTP 500"}

Avatar discord do usuario andersonleal5479

andersonleal5479

é um apontamento pra uma url externa do arquivo?

Avatar discord do usuario andersonmarques4701

andersonmarques4701

Ver Respostas

post: {
method: 'POST',
url: 'https://api-pix.gerencianet.com.br/v2/cob',
headers: {
Authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwiY2xpZW50SWQiOiJDbGllbnRfSWRfMjhmODZhZTQ2ZjNiNDRhMWE1N2M3NmExNTNlMzMyZWJkNTU4Y2NkYyIsImFjY291bnQiOjMwMTg2NCwiYWNjb3VudF9jb2RlIjoiZjk2YzM1YTVjNjc2N2ZjYzk2ZmU0YjVkNWJmMzcyNjQiLCJzY29wZXMiOlsiY29iLnJlYWQiLCJjb2Iud3JpdGUiLCJnbi5iYWxhbmNlLnJlYWQiLCJnbi5waXguZXZwLnJlYWQiLCJnbi5waXguZXZwLndyaXRlIiwiZ24uc2V0dGluZ3MucmVhZCIsImduLnNldHRpbmdzLndyaXRlIiwicGF5bG9hZGxvY2F0aW9uLnJlYWQiLCJwYXlsb2FkbG9jYXRpb24ud3JpdGUiLCJwaXgucmVhZCIsInBpeC53cml0ZSIsIndlYmhvb2sucmVhZCIsIndlYmhvb2sud3JpdGUiXSwiZXhwaXJlc0luIjozNjAwLCJjb25maWd1cmF0aW9uIjp7Ing1dCNTMjU2IjoiUGtuRDBnYy96Zjh5VHI0RFl5aGJGR1J3M1gzQVM4YTl4dy8vNkUrcklGYz0ifSwiaWF0IjoxNjIxNTE4Njc0LCJleHAiOjE2MjE1MjIyNzR9.bEfZcubm3yF-usxnw09lh8qhXM-RaClAZcf7luOaa6U',
'Content-Type': 'application/json'
},
httpsAgent: Agent {
_events: [Object: null prototype] {
free: [Function (anonymous)],
newListener: [Function: maybeEnableKeylog]
},
_eventsCount: 2,
_maxListeners: undefined,
defaultPort: 443,
protocol: 'https:',
options: {
pfx: ,
passphrase: '',
path: null
},
requests: {},
sockets: {},
freeSockets: {},
keepAliveMsecs: 1000,
keepAlive: false,
maxSockets: Infinity,
maxFreeSockets: 256,
scheduling: 'fifo',
maxTotalSockets: Infinity,
totalSocketCount: 0,
maxCachedSessions: 100,
_sessionCache: { map: {}, list: [] },
[Symbol(kCapture)]: false
},

Avatar discord do usuario joey_burn

joey_burn

//gerar qrcode

url = new URL ("https://api-pix-h.gerencianet.com.br/v2​/loc/80/qrcode"); //Para ambiente de Desenvolvimento
conn = (HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("GET");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization","Bearer "+token);
conn.setSSLSocketFactory(sslsocketfactory);

System.out.println(conn.getResponseCode());
System.out.println(conn.getResponseMessage());

Avatar discord do usuario joey_burn

joey_burn

Ver Respostas

''' url = new URL ("https://api-pix-h.gerencianet.com.br/v2/cob/"+main.getSaltString()); //Para ambiente de Desenvolvimento
conn = (HttpsURLConnection)url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("PUT");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization","Bearer "+token);
conn.setSSLSocketFactory(sslsocketfactory);

input = "{\"chave\": \"+55 34 9 8436-7252\",\"calendario\": {\"expiracao\": 3600 },\"valor\": {\"original\": \"123.45\" }}";

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

responseCode = conn.getResponseCode();
if (responseCode >= 200) {
System.out.println(responseCode);
reader = new InputStreamReader(conn.getInputStream());
}else {
System.out.println(responseCode);

reader = new InputStreamReader(conn.getErrorStream());
}
br = new BufferedReader(reader);


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