Boa tarde, pessoal. Tem alguém aqui usando RestTemplate para fazer essa integração com a api-pix?
Termos mais procurados:
Termos mais procurados:
Boa tarde, pessoal. Tem alguém aqui usando RestTemplate para fazer essa integração com a api-pix?
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
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:
https://dev.gerencianet.com.br/docs/api-pix#section-consultar-pix-recebidos-
inicio=quando vc emitiu fim=agora txid=txid cpf=cpf
Boa tarde, <@!723278999236771916>. A Collection você encontra em um dos primeiros tópicos da documentação da API Pix (https://dev.gerencianet.com.br/docs#section-collection-postman-gerencianet-api-pix)
$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 "
Certo, e como faço esse cadastro na prática, digitando a url no navegador: https://api-pix.gerencianet.com.br/v2/webhook/:34646106000189
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"
Tentei fazer um teste por URL (https://api-pix.gerencianet.com.br/oauth/token/v2/webhook/:34646106000189) e nao deu certo
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
https://dev.gerencianet.com.br/docs/api-pix#section-exemplos-de-uma-configura-o-de-servidor- tem alguns exemplos para diferentes webservers. Qual o usado no seu ambiente ?
$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);
$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 "
{
"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"
}
}
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
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);
}