Histórico de mensagens sobre api-pix em pix

EXIBINDO CONVERSAS RECENTES:

Texto: api-pix
Canal: pix
Avatar discord do usuario celestino8068

celestino8068

Boa tarde, pessoal. Tem alguém aqui usando RestTemplate para fazer essa integração com a api-pix?

Avatar discord do usuario joelemanoel

joelemanoel

mTLS é a forma de autenticação mutua. O certificado é como você vai fazer essa autenticação. Mas você não irá utilizar este certificado não, deve usar a chain publica fornecida pega GN e disponível em: https://dev.gerencianet.com.br/v1/docs/api-pix#section-webhook

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Pode ser qualquer nome.
Acrescentando uma observação que é a adição do /pix no final da sua URL. Ou seja, na request PUT https://api-pix.gerencianet.com.br/v2/webhook/:chave você irá passar o body com sua URL, exemplo:

json
{
"webhookUrl": "https://seudominio.com.br/webhook"
}
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 de seu servidor para que na rota /webhook/pix de seu servidor exija o certificado CA da Gerencianet.

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

$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 "
";

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

Certo, e como faço esse cadastro na prática, digitando a url no navegador: https://api-pix.gerencianet.com.br/v2​/webhook/:34646106000189

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

PATCH mudando o status para REMOVIDA_PELO_USUARIO_RECEBEDOR
https://dev.gerencianet.com.br/docs/api-pix#section-revisar-cobran-a
status

Enum: "ATIVA","CONCLUIDA"

"REMOVIDA_PELO_USUARIO_RECEBEDOR",

"REMOVIDA_PELO_PSP"

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

Deu certo, o código pra gerar o token. Antes havia esquecido de substituir o link de homologação pelo de produção...
Token URL: https://api-pix.gerencianet.com.br/oauth/token

Avatar discord do usuario roguitar88

roguitar88

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://api-pix-h.gerencianet.com.br/oauth/token');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
$pem=realpath("/etc/certs-gerencianet/olimppiuspix.crt.pem");
if(!$pem || !is_readable($pem)){
die("olimppiuspix.crt.pem is not readable! realpath: \"{$pem}\" - working dir: \"".getcwd()."\" effective user: ".print_r(posix_getpwuid(posix_geteuid()),true));
}
curl_setopt($ch, CURLOPT_SSLCERT, $pem);

Avatar discord do usuario roguitar88

roguitar88

Ver Respostas

$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 "
";
// echo "Que que está acontecendo";

Avatar discord do usuario elsonlima0580

elsonlima0580

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 "
";

Avatar discord do usuario elsonlima0580

elsonlima0580

{
"sandbox": false,
"chave": "27920008182",
"recebedor": "suainscricao.com",
"homologacao": {
"nome_certificado": "certificado.pem",
"client_id": "Client_Id...",
"client_secret": "Client_Secret...",
"pix_url_auth": "https://api-pix-h.gerencianet.com.br/oauth/token",
"pix_url_cob": "https://api-pix-h.gerencianet.com.br/v2/cob",
"pix_url": "https://api-pix-h.gerencianet.com.br/v2/pix"
},
"producao": {
"nome_certificado": "certificado.pem",
"client_id": "id aqui",
"client_secret": "Client_Secret_aqui",
"pix_url_auth": "https://api-pix.gerencianet.com.br/oauth/token",
"pix_url_cob": "https://api-pix.gerencianet.com.br/v2/cob",
"pix_url": "https://api-pix.gerencianet.com.br/v2/pix"
}
}

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá <@!818197250840199198>. Bom dia!

Na SDK de PHP você encontra as funcionalidades para utilização do Marketplace e demais demais serviços da Gerencianet.
Obs: A Gerencianet disponibiliza cobranças Pix, mas até o momento no Marketplace é possível cobranças somente via boleto e cartão de crédito.

1 (✅ ) Autenticar na API
2 (❌) Cadastrar devedor -> Não há exemplo de como cadastrar o cliente final na SDK. Este cadastro do devedor deve ser realizado em um banco de dados em seu sistema. A partir deste cadastro, passar as informações para a emissão.
3 (✅) Criar transação de cobrança imediata
4 (✅) Gerar Qrcode dinâmico e código copia e cola de pagamento -> No ambiente Pix é possível. Então nesta compra que o cliente utilizou o Pix, você pode estruturar para que haja o repasse/envio de pix para o vendedor.
5 (✅) Monitorar o pagamento da cobrança -> (webhook: https://dev.gerencianet.com.br/docs/api-pix#section-webhook" class="link-msg">https://dev.gerencianet.com.br/docs/api-pix#section-webhook)
6 (✅) Setar transação de cobrança imediata como paga -> Com o monitoramento da cobrança, é possível setar os status das transações como paga automaticamente, e há opção também de "Marcar como Pago" manualmente uma cobrança via boleto. Em relação à cobrança Pix, você pode utilizar o PATCH /v2/cob para setar o status para "REMOVIDA_PELO_USUARIO_RECEBEDOR"
7 (✅) Enviar pix para o vendedor (O Vendedor poderá configurar se recebe de forma automática ou se faz saques esporádicos) em processo de autoriação. -> Com o Marketplace, cada vendedor deve possuir uma conta Gerencianet, então, você pode informar através da integração como deverá ser feita a divisão do valor recebido entre diferentes contas dos vendedores, de forma automática.
8 (✅) Criar transação de devolução de Pix para o devedor caso haja um desacordo comercial

Veja também em nossa documentação, para encontrar estes endpoints e demais detalhes: https://dev.gerencianet.com.br/docs/api-pix

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Também do <@!781928420757864468> :
// modelo funcional
public void GerarTokenGN(string client_id, string client_secret)
{
// força o uso do protocolo TLS, caso o protocolo padrão seja SSL ou outro protocolo
//ServicePointManager.Expect100Continue = true;
//ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;

X509Certificate2 uidCert = new X509Certificate2("NOME_DO_CERTIFICADO.p12", "");
var client = new RestSharp.RestClient("https://api-pix-h.gerencianet.com.br/oauth/token");
client.ClientCertificates = new X509CertificateCollection() { uidCert };
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic " + System.Convert.ToBase64String(Encoding.ASCII.GetBytes(string.Format("{0}:{1}", client_id, client_secret))));
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\"grant_type\":\"client_credentials\",\"client_id\":\"" + client_id + "\",\"client_secret\":\"" + client_secret + "\"}", ParameterType.RequestBody);
IRestResponse restResponse = client.Execute(request);
string response = restResponse.Content;

Console.WriteLine(response);
}