Histórico de mensagens sobre url POST

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
# pix
Avatar discord do usuario ezequielsp

ezequielsp

Me passem uma url de teste e eu tento fazer o POST.. 😉

# pix
Avatar discord do usuario franciscorsobrinho

franciscorsobrinho

Como você está no ambiente de homologação, certifique-se de que esteja usando a url "https://api-pix-h.gerencianet.com.br/v2/cob/INFORME_O_TXID_AQUI". Talvez esteja faltando o "/v2" ou talvez você tenha esquecido de acrescentar o txid no final da url. E o método para criar cobrança é PUT. Talvez esteja usando POST

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas

gera ai o codigo php com curl e manda para agente ver no postman.

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Exemplo para testar a sua url do webook em modo desenvolvimento com php .


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => 'https://sua_url_aqui/webhook.php',
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 =>'{
"pix": [
{
"endToEndId": "E12345678202009091221syhgfgufg",
"txid": "c3e0e7a4e7f1469a9f782d3d4999343c",
"valor": "110.00",
"horario": "2020-09-09T20:15:00.358Z",
"infoPagador": "0123456789",
"devolucoes": {
"id": "123ABC",
"rtrId": "D12345678202009091221abcdf098765",
"valor": "10.00",
"horario": {
"solicitacao": "2020-09-09T20:15:00.358Z"
},
"status": "EM_PROCESSAMENTO"
}
}
]
}',
CURLOPT_HTTPHEADER => array(
'Content-Type: text/plain'
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas

#solução para testes do webhook em modo desenvolvimento. Principalmente para quem não fez o mTLS ainda para usar em produção, é só criar um POST , no postman na sua url de recebimento do webhook no servidor e inserir as informações do json que é enviado no Body em raw no postman , este é um exemplo de envio que a GN faz em json abaixo que usei no raw

{
"pix": [
{
"endToEndId": "E12345678202009091221syhgfgufg",
"txid": "c3e0e7a4e7f1469a9f782d3d4999343c",
"valor": "110.00",
"horario": "2020-09-09T20:15:00.358Z",
"infoPagador": "0123456789",
"devolucoes": {
"id": "123ABC",
"rtrId": "D12345678202009091221abcdf098765",
"valor": "10.00",
"horario": {
"solicitacao": "2020-09-09T20:15:00.358Z"
},
"status": "EM_PROCESSAMENTO"
}
}
]
}

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas

Se a pessoa tiver a sua url e tambem tiver todos os dados da cobrança sem você ter o mTLS, ela pode enviar um POST para a url e se seu sistema validar os dados enviados, vai interpretar que foi pago. Ja que em uma cobrança todos os dados são expostos e são abertos. Por isso a importancia do mTLS com o certificado da GN.

# pix
Avatar discord do usuario anoni_mato

anoni_mato

Ver Respostas

o hostname que vai receber os requests (para as URLs registradas como webhook) precisa fechar um mTLS com o certificado fornecido pela GN, então não dá pra colocar atrás do Cloudflare (precisa deixar a "nuvem cinza" na página de DNS para o IP ficar exposto). mas os IPs podem ser filtrados diretamente no seu servidor, obviamente.

# pix
Avatar discord do usuario oleoessencial

oleoessencial


$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://api-pix-h.gerencianet.com.br/oauth/token",
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 =>"{\r\n \"grant_type\": \"client_credentials\"\r\n}",
CURLOPT_HTTPHEADER => array(
"x-client-cert-pem: {{X-Certificate-Pem}}",
"Authorization: Basic Q3334f34f34f3g5355gh56hg5w6h457wg457w54w56h7w56f5f6wNzVmZGQxNGU2MDMxMjlhNTMw",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

# pix
Avatar discord do usuario rodolfo.santos8069

rodolfo.santos8069

Ver Respostas

Muda para:

CURLOPT_POSTFIELDS => json_encode(array('grant_type' => 'client_credentials')),

# pix
Avatar discord do usuario jaoedson

jaoedson

Ver Respostas

Acredito que conseguir pagar ele consiga, o que vai acontecer é que quando a atualização de status for enviada para a url cadastrada no webhook seu sistema não conseguirá fazer a atualização/validação interna neste momento. Você pode dar um GET da cobrança depois para verificar o status da cobrança. Mas normalmente(como acontece com postbacks de cartão de crédito e boleto) os getways sempre enviam mais de 1 vez quando recebe resposta de erro.

# pix
Avatar discord do usuario jaoedson

jaoedson

Ver Respostas

Gente, sobre o webhook. No caso só precisamos cadastrar uma url para receber os post apenas uma vez e não passar toda vez a cada transação, não é?

# pix
Avatar discord do usuario marcosnicolau3509

marcosnicolau3509

Ver Respostas

<@!710205440956563536> e <@!709030803291635736> , a URL gerada, se colocar no navegador, já baixa o JWS. Para fazer o GET, é exigida uma conexão mTLS. Me parece que o que vocês estão vendo é por conta de uma configuração do servidor. No postman dá certo, pois o postman possui o próprio certificado. No servidor de vocês, acredito, precisaremos ter um certificado mTLS. Estamos falando do certificado do servidor, que deve estar ativo. Vamos continuar acompanhando aqui.

# pix
Avatar discord do usuario lorenacastro

lorenacastro

Ver Respostas

function auth() {
$file = file_get_contents("./config.json");
$config = json_decode($file, true);
$environment = ($config["sandbox"] === true) ? "development" : "production";

$certfile = $config[$environment]["certificate_name"];

$curl = curl_init();

$authorization = base64_encode($config[$environment]["client_id"] . ":" . $config[$environment]["client_secret"]);

curl_setopt_array($curl, array(
CURLOPT_URL => $config[$environment]["pix_auth_url"], // Rota base, desenvolvimento 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 => $certfile, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $authorization",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";
}

# pix
Avatar discord do usuario lorenacastro

lorenacastro

usa assim CURLOPT_POSTFIELDS => '{"grant_type":"client_credentials"}',

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas

olá, usei isso porem quando envio a erro no CURLOPT_POSTFIELDS => json_encode("{"grant_type": "client_credentials"}"),

# pix
Avatar discord do usuario lorenacastro

lorenacastro

eu fiz assim, para teste:

function auth() {
$ch = curl_init();

$requestURL = 'https://api-pix-h.gerencianet.com.br/oauth/token';
$cliendId = ''; //seu client id
$clientSecret = ''; //seu client secret
$authorization = base64_encode($cliendId . ":" . $clientSecret);
$certFile = ''; //o caminho do certificado
$arr = ['grant_type' => 'client_credentials'];
$headers = [];
$headers[] = 'Content-Type: application/json';
$headers[] = 'Authorization: Basic ' . $authorization;

curl_setopt($ch, CURLOPT_URL, $requestURL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($arr));
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
$resposta = json_decode($result);

if (curl_errno($ch)) {
die('Erro: ' . curl_error($ch));
}

curl_close($ch);

return $resposta->access_token;
}

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Ver Respostas

Estou tentando usar este exemplo , aonde eu pego o {"grant_type": "client_credentials"} ?
$file = file_get_contents("./config.json");
$config = json_decode($file, true);
$environment = ($config["sandbox"] === true) ? "development" : "production";

$certfile = "./certificate/" . $config[$environment]["certificate_name"];

$curl = curl_init();

$authorization = base64_encode($config[$environment]["client_id"] . ":" . $config[$environment]["client_secret"]);

curl_setopt_array($curl, array(
CURLOPT_URL => $config[$environment]["pix_auth_url"], // Rota base, desenvolvimento 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 => json_encode("{"grant_type": "client_credentials"}"),
CURLOPT_SSLCERT => $certfile, // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Basic $authorization",
"Content-Type: application/json"
),
));

$response = curl_exec($curl);

curl_close($curl);

echo "

";
echo $response;
echo "
";

# pix
Avatar discord do usuario bartwitch

bartwitch

pode ver na url ali post, está completa ao invés de {{gn-pix-api}}...

# pix
Avatar discord do usuario oleoessencial

oleoessencial

> eu fiz assim:
>
> $headers = array();
> $headers[] = 'Accept: application/json';
> $headers[] = 'Content-Type: application/json';
> $headers[] = 'Authorization: Basic ' . $access_token;
> curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
<@!709030803291635736> vou testar tudo com o Postman, depois ele mesmo cria o Curl 🙂 para cada endpoint.

# pix
Avatar discord do usuario oleoessencial

oleoessencial

Eu usarei cURL com php, nunca usei postman.