Termos mais procurados:
Termos mais procurados:
Depois de gerado, eu devo criar um QRCode apartir da tag: "location"?
Boa tarde <@!184739727407054849> tem sim, por meio do endpoint GET/v2/loc/{id}/qrcode você vai informar o id da location referente a cobrança gerada e terá como retorno o BRCode(copia e cola) e a imagem do QRcode.
"cob.read cob.write gn.balance.read gn.pix.evp.read gn.pix.evp.write gn.settings.read gn.settings.write payloadlocation.read payloadlocation.write pix.read pix.send pix.write webhook.read webhook.write"
uma outra duvida, no location do qr code
estão incluídos sim:
"scope": "cob.read cob.write gn.balance.read gn.pix.evp.read gn.pix.evp.write gn.settings.read gn.settings.write payloadlocation.read payloadlocation.write pix.read pix.write webhook.read webhook.write"
Ambiente: Homologação
Bom dia, para usar os location tem que ter algo a mais? toda vez que faço a requisição na hora de gerar o qrcode isso me retorna > {"error":"insufficient_scope","error_description":"Access token has insufficient scope"}
$config = [
"certificado" => $this->pixCert,
// "certificado" => DIRPAGE."src/Includes/olimppiuspix.crt.pem",
// "certificado" => "",
"client_id" => $this->clientId,
"client_secret" => $this->clientSecret
];
$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/v2/webhook/',
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 =>'{
"webhookUrl": "https://olimppi.us/webhook/index.php"
}',
CURLOPT_HTTPHEADER => array(
// "authorization: {{Authorization}}",
"Authorization: Basic $autorizacao",
"Content-Type: application/json",
"x-client-cert-pem: {{X-Certificate-Pem}}",
"x-skip-mtls-checking: false"
),
));
$response = curl_exec($curl);
curl_close($curl);
echo "
";";
echo $response;
echo "
O exemplo da GN para Nginx separa o mTLS só em um path:
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;
}
rewrite ^(.)$ /webhook;
}
}
{"access_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0eXBlIjoiYWNjZXNzX3Rva2VuIiwiY2xpZW50SWQiOiJDbGllbnRfSWRfZjA3NzkyYjUyMzg5YmQzNzk1MWVkY2JlYmYzOTM2OTVhNWVlZDI2YiIsImFjY291bnQiOjI0MDQxMCwiYWNjb3VudF9jb2RlIjoiMGFlYTcwMWNlOWM5YmFiN2Q3NDc4NGJjN2RlNTc3YmQiLCJzY29wZXMiOlsiY29iLnJlYWQiLCJjb2Iud3JpdGUiLCJnbi5iYWxhbmNlLnJlYWQiLCJnbi5waXguZXZwLnJlYWQiLCJnbi5waXguZXZwLndyaXRlIiwiZ24uc2V0dGluZ3MucmVhZCIsImduLnNldHRpbmdzLndyaXRlIiwicGF5bG9hZGxvY2F0aW9uLnJlYWQiLCJwYXlsb2FkbG9jYXRpb24ud3JpdGUiLCJwaXgucmVhZCIsInBpeC5zZW5kIiwicGl4LndyaXRlIiwid2ViaG9vay5yZWFkIiwid2ViaG9vay53cml0ZSJdLCJleHBpcmVzSW4iOjM2MDAsImNvbmZpZ3VyYXRpb24iOnsieDV0I1MyNTYiOiJkR09nK1FMdFN4ZXRReWVnZUVuM1VaL1EwK2pBWTJpQ1l6eENNRDZTbzRFPSJ9LCJpYXQiOjE2MTYzMzcxNDQsImV4cCI6MTYxNjM0MDc0NH0.Ng-m4jLCaSO1H0yLmHnQDiiJ_axWGZkeH39kYwebPbE","token_type":"Bearer","expires_in":3600,"scope":"cob.read cob.write gn.balance.read gn.pix.evp.read gn.pix.evp.write gn.settings.read gn.settings.write payloadlocation.read payloadlocation.write pix.read pix.send pix.write webhook.read webhook.write"}
$config = [
"certificado" => "/etc/certs-gerencianet/olimppiuspix.crt.pem",
"client_id" => $this->clientId,
"client_secret" => $this->clientSecret
];
$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; //print_r($response);
echo "
esse modelo então não é suficiente?
$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://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 "
Tente colocar o trecho SSLCACertificateFile /etc/ssl/certs/chain-pix-prod.crt fora do
Location seria só /webhook, é URI-Path, não diretório
Não consigo dar restart no apache com a configuração
:443>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
ServerAdmin [email protected]
ServerName pix.meudominio.com.br
DocumentRoot /var/www/pix
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine on
RewriteCond %{SERVER_NAME} =pix.meudominio.com.br
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
SSLCertificateFile /etc/letsencrypt/live/pix.meudominio.com.br/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/pix.meudominio.com.br/privkey.pem
SSLVerifyClient require
SSLVerifyDepth 3
SSLCACertificateFile /etc/ssl/certs/chain-pix-prod.crt
No Apache eu achava que era Directory, mas é Location mesmo:
## Se preferir deixar apenas uma rota de sua url para notificações você pode adicionar:
SSLVerifyClient none
SSLVerifyClient require
SSLVerifyDepth 3
devo colocar um location?
<@!818639956263567360> Este link não é possível acessar mesmo. Este link contido no BrCode é o location que possui os dados da cobrança para os PSPs lerem.
O brcode que lhe rotorna neste consumo é o mesmo que o Pix Copia e Cola.
Ou seja, com a string 00020126880014br.gov.bcb.pix2566qrcodes-pix.gerencianet.com.br/v2/c04644cfd18144db9e7f253c20b56e155204727453039865802BR5925PAGAMENTOSRENOVACAOAUTOPI6014Rio de Janeiro6207050363048DAA
você acessa o seu banco e paga através dela
Este endereço: https://gerarqrcodepix.com.br/api/v1?nome=PAGAMENTOSRENOVACAOAUTOPIX&cidade=Rio+de+Janeiro&location=qrcodes-pix.gerencianet.com.br%2fv2%2fc04644cfd18144db9e7f253c20b56e15&mcc=7274&saida=br&tamanho=256 me devolveu o seguinte link: pix.gerencianet.com.br/v2/c04644cfd18144db9e7f253c20b56e155204727453039865802BR5925PAGAMENTOSRENOVACAOAUTOPI6014Rio de Janeiro6207050363048DAA se eu acessar esse link a gerencianet me devolve página não encontrada
Qual banco está tentando realizar o pagamento?
Realizei o teste com Santander e Nubank e funcionou normalmente.
Sugiro até utilizar a seguinte rota interna da Gerencianet: GET/v2/loc/{id}/qrcode
Que é o endpoint para gerar QRCode de um location.
Você pode pega o id do location retornado após a geração da cobrança e consumir o GET /v2/loc/:id/qrcode e assim você vai ter o copia e cola e a imagem do Qrcode em base64.