Histórico de mensagens sobre App em pix

EXIBINDO CONVERSAS RECENTES:

Texto: App
Canal: pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

É um diagnóstico que pode varia de muito simples (por exemplo, se a mensagem de erro do app é bem específica) a impossível, quando a mensagem de erro é genérica e não há colaboração daquele PSP.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Aí não, apesar de já ter visto caso de versões diferentes de app na base de clientes do banco que levava a respostas diferentes.

Avatar discord do usuario .gustavohgs

.gustavohgs

Ver Respostas

Eu estou utilizando a api do PIX e estou criando pixs e consultando esses pixs criados, porém na resposta bem um campo location como este: qrcodes-pix.gerencianet.com.br/v2/97b2733b8d774b5cba9349ff241898af

Aí quando eu acesso essa URL eu recebo um arquivo com uma espécie de token enorme, eu pensei que este código seria já o código do PIX o mesmo que o usuário insere no app de internet banking para pagamento e se fosse eu poderia gerar um QRCode a partir dele mas quando eu coloco esse código que vem desse arquivo os aplicativos de banco não reconhecem para pagamento

Avatar discord do usuario sady_efi

sady_efi

No modelo que você descreveu, existem duas possibilidades:
- Você ter uma conta "Pulmão" onde todos os pagamentos são recebidos e gerenciados por você (mais crítico e requer um nível maior de controle do seu sistema)
- Cada escola possui sua conta e fornece para seu app as credenciais (Client_Id e Secret), certificado e chave EVP, e seu sistema gerencia as cobranças. Neste caso o saldo já estará na conta do cliente, oque reduz a complexidade da operação.

Avatar discord do usuario andlline

andlline

estou com uma dúvida... implementei api pix, teste aqui em produção, consegui fazer um pagamento... meu aplicativo é escolar... o mesmo app é usado em várias escolas, tipo um ifood... eu quero fazer com q o pai de uma escola pague a mensalidade via pix dentro do app... minha dúvida é ... vou pedir para cada escola abrir sua conta no gerencianet.. ai nesse caso eu preciso que cada uma me envie o cliente id, cliente secret e tb uma chave ou só preciso da chave ?

Avatar discord do usuario saviofb

saviofb

Ver Respostas

Boa tarde! Estou tentando pagar o PIX : 00020101021226880014br.gov.bcb.pix2566qrcodes-pix.gerencianet.com.br/v2/4ccf08dbe57241d49cfce901c182f9225204000053039865802BR5909Soul Pass6008Alvorada620705036304A236

Pelo app do Itau e está dando erro (nos demais bancos está funcionando normal)
imagem enviada na mensagem pelo usuario saviofb

Avatar discord do usuario henriquefelipe.

henriquefelipe.

var clientCob = new RestSharp.RestClient(URL_BASE + "v2/cob");
var requestCob = new RestRequest(Method.POST);
clientCob.ClientCertificates = new X509CertificateCollection() { uidCert };

requestCob.AddHeader("Authorization", "Bearer " + oath.access_token);
requestCob.AddHeader("Content-Type", "application/json");
requestCob.AddParameter("application/json", JsonConvert.SerializeObject(dados), ParameterType.RequestBody);

IRestResponse restResponseCob = clientCob.Execute(requestCob);
string responseCob = restResponseCob.Content;

Avatar discord do usuario wesleykovalski

wesleykovalski

private function send(string $method, string $resource, array $request = [])
{
// ENDPOINT COMPLETO
$endpoint = $this->baseUrl . $resource;

// HEADERS
$headers = [
'Cache-Control: no-cache',
'Content-type: application/json',
'Authorization: Bearer ' . $this->getAccessToken()
];

// CONFIGURAÇÃO DO CURL
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $endpoint,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_SSLCERT => $this->certificate,
CURLOPT_SSLCERTPASSWD => '',
CURLOPT_HTTPHEADER => $headers
]);

switch ($method) {
case 'POST':
case 'PUT':
curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($request));
break;
}

// EXECUTA O CURL
$response = curl_exec($curl);
curl_close($curl);

// RETORNA O ARRAY DA RESPOSTA
return json_decode($response, true);
}

Avatar discord do usuario wesleykovalski

wesleykovalski

Segue o código:

// ENDPOINT COMPLETO
$endpoint = $this->baseUrl . '/oauth/token';

// HEADERS
$headers = [
'Content-type: application/json',
'x-skip-mtls-checking: true'
];

// CORPO DA REQUISIÇÃO
$request = [
'grant_type' => 'client_credentials',
'webhookUrl' => 'https://www.dominio.com.br/endpointdowebhook'
];


// CONFIGURAÇÃO DO CURL
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $endpoint,
CURLOPT_USERPWD => $this->clientId . ':' . $this->clientSecret,
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode($request),
CURLOPT_SSLCERT => $this->certificate,
CURLOPT_SSLCERTPASSWD => '',
CURLOPT_HTTPHEADER => $headers
]);

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

js
const express = require("express");
const fs = require("fs");
const https = require("https");
const bodyParser = require("body-parser");
var logger = require('morgan');

const httpsOptions = {
cert: fs.readFileSync(""), // Certificado fullchain do SSL do dominio
key: fs.readFileSync("/"), // Chave privada do SSL do domínio
ca: fs.readFileSync(""), // Certificado público da Gerencianet. Baixe aqui: https://pix.gerencianet.com.br/webhooks/chain-pix-prod.crt
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false, //Mantenha como false para que os demais endpoints da API não rejeitem requisições sem MTLS
};

const app = express();
const httpsServer = https.createServer(httpsOptions, app);
const PORT = 443;

app.use(logger('dev')); // Comente essa linha caso não queira que seja exibido o log do servidor no seu console
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));

// Endpoint para configuração do webhook, você precisa cadastrar https://SEUDOMINIO.com/webhook
app.post("/webhook", (request, response) => {
// Verifica se a requisição que chegou nesse endpoint foi autorizada
if (request.socket.authorized) {
response.status(200).end();
} else {
response.status(401).end();
}
});

// Endpoind para recepção do webhook tratando o /pix
app.post("/webhook/pix", (request, response) => {
if (request.socket.authorized){
//Seu código tratando a callback
/ EXEMPLO:
var body = request.body;
filePath = __dirname + "/data.json";
fs.appendFile(filePath, JSON.stringify(body) + "\n", function (err) {
if (err) {
console.log(err);
} else {
response.status(200).end();
}
})
/
response.status(200).end();
}else{
response.status(401).end();
}
});

httpsServer.listen(PORT, () =>
console.log(Express server currently running on port ${PORT})
);

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Criar uma chave ? Você mesmo pode criar no app mobile da Gerencianet, não precisa escrever código para isso. Apesar de ser possível, via endpoint /v2/gn/evp.

Avatar discord do usuario inbox5372

inbox5372

log => 2021-06-18T13:17:33.129720+00:00 app[web.1]: rota webhook sem o /pix Request

Avatar discord do usuario anoni_mato

anoni_mato

estranho. faz o mesmo teste cadastrando https://cardapio-api.herokuapp.com/ (sem o mtls.pix.ae). você deve receber o primeiro request de confirmação - que deveria ser respondido pelo seu servidor/app com 403 por não ter o certificado da GN para vc verificar. confere se vem com o append /pix

Avatar discord do usuario inbox5372

inbox5372

<@!440035527127990273> Ao tentar cadastrar o webhookUrl pelo Postman, eu recebo um request sem o append /pix e o erro HPE_INVALID_CONSTANT é exibido na mensagem

Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

essa etapa 3 eu acho que não está bem descrita. o mtls.pix.ae não faz redirecionamento. ele vai repassar o request vindo da GN para https://cardapio-api.herokuapp.com/webhookpix/pix (lembre-se que a GN adiciona /pix no callback, conforme documentação do BACEN).

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Se você tiver como configurar isso, seu servidor está com TLS 1.0 e TLS 1.1 habilitados, e não deveria:
https://www.ssllabs.com/ssltest/analyze.html?d=cardapioo%2dapi.herokuapp.com&s=54.146.248.82&latest

Isso não deve ter relação com o problema em questão, mas é uma vulnerabilidade de segurança.

Avatar discord do usuario inbox5372

inbox5372

Ver Respostas

Bom dia. Tudo bem com vocês?
Estou buscando uma solução alternativa para o mTLS de um backend hospedado no Heroku.
Uso o AdonisJS.
Um prefixo na webhookUrl => https://mtls.pix.ae/cardapioo-api.herokuapp.com/webhookpix
Mas não sei qual o fluxo nesse cenário. Eu imaginava que fosse assim:
1- O GN envia o primeiro request para a webhookUrl cadastrado pelo Postman, retorna com 403;
2- Faz um novo request em https://mtls.pix.ae/cardapioo-api.herokuapp.com/webhookpix junto com o certificado;
3- Ao bater no webhookUrl com o prefixo mtps.pix.ae é direcionado para a url respondida pelo meu backend;
4- Lá encontra a rota https://cardapioo-api.herokuapp.com/webhookpix POST já pronta;
5- Eu apresento ao GN a minha parte do certificado e pronto.

Mas o que acontece na verdade é => "nome": "webhook_invalido", "mensagem": "A requisição na URL informada falhou com o erro: HPE_INVALID_CONSTANT"

Alguém pode me ajudar por favor?