É 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.
Termos mais procurados:
Termos mais procurados:
É 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.
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.
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
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.
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 ?
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)
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;
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);
}
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
]);
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.
log => 2021-06-18T13:17:33.129720+00:00 app[web.1]: rota webhook sem o /pix Request
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
Mas está chegando em https://mtls.pix.ae/cardapioo-api.herokuapp.com/ sem o /pix
nesse caso vc deve receber um request de confirmação em https://cardapio-api.herokuapp.com//pix
<@!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
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).
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.
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?