Histórico de mensagens sobre location

EXIBINDO CONVERSAS RECENTES:

Texto: location
# devs
Avatar discord do usuario mikenordik

mikenordik

Ver Respostas

Eu estou usando o seguinte repositório do github:
https://github.com/william-costa/wdev-qrcode-pix-php
Estava funcionando perfeitamente até pouco tempo atrás.
Pelo código que enviei é possível identificar se a transação foi enviada?
Como disse, o qr code estático está funcionando perfeitamente e o dinâmico com problemas. Alguns usuários tem se queixado do mesmo problema e aparentemente o requisição não está retornando o valor e a location.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Gerar cobrança:
1) Chamar método cob(v) e guardar location ou loc.id
2A) Usar biblioteca EMV própria para a partir do location gerar copia-e-cola e QR-Code
2B) Usar método location para a partir do loc.id obter copia-e-cola e QR-Code

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @deivson7351.
Segue um exemplo cURL para consultar um Pix a partir de seu txid.

php
$access_token = 'resultado da autenticação';
$certificado = 'caminho do certificado'
$txid = 'identificador do pix';

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix.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 => 'GET',
CURLOPT_SSLCERT => $certificado,
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
'authorization: Bearer ' . $access_token
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Boa tarde! Segue o exemplo:


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://api-pix.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 => 'GET',
CURLOPT_HTTPHEADER => array(
'authorization: Bearer $access_token',
'x-client-cert-pem: {{X-Certificate-Pem}}'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario francisco.carvalho

francisco.carvalho

Ver Respostas

@here

Spoiler! 🚨

Pessoal, estamos trazendo uma comodidade para quem utiliza API Pix:
Nova Feature: Link de Visualização de Cobrança Pix

A partir de agora, conforme vocês podem ver na imagem, é possível utilizar o token da location no domínio pix.gerencianet.com.br para visualizar em HTML os detalhes da cobrança, bem como a imagem do QR Code.

A ideia é facilitar o compartilhamento das cobranças por meio dos canais de comunicação.
Como muitos aqui já comentaram, sabemos que receber um texto com BR Code pode não ser a maneira mais elegante de cobrar o cliente, não é?

Um detalhe: é possível customizar a página utilizando a sua logo e cor primária _(configurações editáveis por meio da plataforma)_.

Em breve o time trará a comunicação oficial com mais detalhes. Para aqueles que quiserem se adiantar, a funcionalidade já está disponível.

Exemplo:
https://pix.gerencianet.com.br/cob/pagar/e82bdda2f6b24a17aae434aad6a00f11
imagem enviada na mensagem pelo usuario francisco.carvalho

# pix
Avatar discord do usuario clusterweb

clusterweb

Gerencianet Exception: Error 400: Nenhum location encontrado para o identificador informado.

# sugestões
Avatar discord do usuario .antoniogregorio

.antoniogregorio

Atualizem o guia de configuração nginx do hand-shake do pix,

nginx
server {
#
# ...
#
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate server_ssl.crt.pem;
ssl_certificate_key server_ssl.key.pem;
ssl_client_certificate /root/chain-pix-webhooks-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
#
# ...
#
location /webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
proxy_pass /webhook;
}
}
#Desenvolvido pela Consultoria Técnica da Gerencianet
para
nginx
server {
#
# ...
#
listen [::]:443 ssl ipv6only=on;
listen 443 ssl;
ssl_certificate server_ssl.crt.pem;
ssl_certificate_key server_ssl.key.pem;
ssl_client_certificate /root/chain-pix-webhooks-prod.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
#
# ...
#
location /webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
proxy_pass https://IP_DA_APLICAÇÃO:7080/webhook;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
#Desenvolvido pela Consultoria Técnica da Gerencianet

# pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Primeiro você deve autenticar na API e obter o access_token.

php
$curl = curl_init();

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

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.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'];

Depois emitir o pix
php
$curl = curl_init();

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 => $arq_certificado, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_POSTFIELDS => '{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "02279112312",
"nome": "Maria apareciada monteiro"
},
"valor": {
"original": "10.21"
},
"chave": "",
"solicitacaoPagador": "Mensaldiade Monteiro Sistemas"
}',
CURLOPT_HTTPHEADER => array(
"authorization: $tokenType $accessToken",
"Content-Type: application/json"
),
));

$dadosPix = json_decode(curl_exec($curl), true);
curl_close($curl);

return $dadosPix;

# pix
Avatar discord do usuario deivson7351

deivson7351

Ver Respostas

seria isso:
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/v2/cob/$id",
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_POSTFIELDS =>'{
"calendario": {
"expiracao": 3600
},
"devedor": {
"cpf": "02279112312",
"nome": "Maria apareciada monteiro"
},
"valor": {
"original": "10.21"
},
"chave": "",
"solicitacaoPagador": "Mensaldiade Monteiro Sistemas"
}',
CURLOPT_HTTPHEADER => array(
"authorization: {{$autorizacao}}",
"x-client-cert-pem: {{$config["certificado"]}}"
),
));

echo $curl;

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario du2dev

du2dev

server {

server_name apidev.muzieonline.com.br;

access_log /var/log/nginx/apidev-pab.log;
error_log /var/log/nginx/apidev-pab.log;

location /webhookpix {
if ($ssl_client_verify != SUCCESS) {
return 403;
}
proxy_pass http://127.0.0.1:8080;
}

location / {
proxy_pass http://127.0.0.1:8080;
}

listen [::]:443 ssl ipv6only=on; # managed by Certbot
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/apidev.muzieonline.com.br/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/apidev.muzieonline.com.br/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_client_certificate /home/ubuntu/muzie-api/certs/chain-pix-sandbox.crt;
ssl_verify_client optional;
ssl_verify_depth 3;
}
server {
if ($host = apidev.muzieonline.com.br) {
return 301 https://$host$request_uri;
} # managed by Certbot


listen 80;
listen [::]:80;

server_name apidev.muzieonline.com.br;
return 404; # managed by Certbot


}

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

O payload assinado só diz que uma cobrança foi emitida. Ele está disponível no parâmetro location que é retornado pela cobrança.

# pix
Avatar discord do usuario relixes

relixes

{'calendario': {'criacao': '2022-09-01T22:31:08.000Z', 'expiracao': 90}, 'txid': 'f1be420f8e974edfa428bc6fda0221a6', 'revisao': 0, 'loc': {'id': 258, 'location': 'qrcodes-pix.gerencianet.com.br/v2/c2a55a0df8164355a64cc50215fd281b', 'tipoCob': 'cob', 'criacao': '2022-09-01T22:31:08.000Z'}, 'location': 'qrcodes-pix.gerencianet.com.br/v2/c2a55a0df8164355a64cc50215fd281b', 'status': 'ATIVA', 'valor': {'original': '0.03'}, 'chave': 'e2eb377c-3759-4bee-a402-fb78f87ddd3d', 'solicitacaoPagador': 'Cobrança dos serviços prestados.'}

# pix
Avatar discord do usuario relixes

relixes

{'calendario': {'criacao': '2022-08-27T14:50:49.703Z', 'expiracao': 3600}, 'txid': '29c7ae05c77b4d7d9f0f78a9169912ba', 'revisao': 0, 'loc': {'id': 3, 'location': 'qrcodes-pix-h.gerencianet.com.br/v2/03b42cd1be594c9cbedc98685e14141f', 'tipoCob': 'cob', 'criacao': '2022-08-27T14:50:49.747Z'}, 'location': 'qrcodes-pix-h.gerencianet.com.br/v2/03b42cd1be594c9cbedc98685e14141f', 'status': 'ATIVA', 'valor': {'original': '0.01'}, 'chave': '[email protected]', 'solicitacaoPagador': 'Cobrança dos serviços prestados.'}

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Esse mesmo. Veja a mensagem tentando acessar o location:
{"nome":"cobranca_expirada","mensagem":"A cobrança expirou"}

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sim, mas a chave aleatória é a mais interessante para uso com /cob. Aí não tem risco de alguém pedir portabilidade e seus location pararem de funcionar.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

O qrcode aí é o texto que pode ser colado direto pelo cliente no app de banco. Notar que contém o location, mas não é só o location.

# pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Precisa gerar o BRCode a partir do location. Se colocar só o locaotion, não funciona.