Histórico de mensagens sobre url POST em pix

EXIBINDO CONVERSAS RECENTES:

Texto: url POST
Canal: pix
Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @alexsiqueira0615! Conversamos no chat privado, ele se encerra após 24 horas sem atividade.
Para testar uma requisição para sua URL utilizando o Postman, você cria uma requisição semelhante à seguinte:
imagem enviada na mensagem pelo usuario guilherme_efi

Avatar discord do usuario felipoantonoff

felipoantonoff

Ver Respostas

Olá, isso mesmo em alguns casos dando TCP connection reset by peer no retorno do Curl chamada Post para a API do Pix
Mesmos clientes com problema depois se tentam algumas vezes conseguem criar o Pix normalmente
Isso parece ser alguma instabilidade talvez no lado da API Pix

Avatar discord do usuario _alexandrehenrique

_alexandrehenrique

Ver Respostas

no caso eu to tentando configurar o webhook, eu faço a requisição paraefe enviando a url e a efi tem que testar se a url é valida, o retono que o web hook vem da efi, quando eu faço pelo postman ele fa respondendo normal

Avatar discord do usuario tieferson

tieferson

Mesmo se removo o CURLOPT_POSTFIELDS dá esse erro

Avatar discord do usuario kauan_bs

kauan_bs

Boa tarde. Estou tentando configurar o webhook no meu servidor porém estou recebendo 401. Estes são meus códigos :

js

const httpOptions = {
cert: fs.readFileSync("gd_bundle-g2-g1.crt"), // Certificado fullchain do dominio
key: fs.readFileSync("56092e4c5a31e0c5.crt"), // Chave privada do domínio
ca: fs.readFileSync("chain-pix-prod.crt"), // Certificado público da Efí
minVersion: "TLSv1.2",
requestCert: true,
rejectUnauthorized: false, //Caso precise que os demais endpoints não rejeitem requisições sem mTLS, você pode alterar para false
};

app.post("/webhookEfi", (request, response) => {
if (request.socket.authorized) {
console.log("autorizado")
response.status(200).end();
} else {
console.log("não autorizado")
response.status(401).end();
}
});

app.post("/webhookEfiConfig", async (req, res) => {
try {
let body = {
webhookUrl: "{minhaurl}/webhookEfi",
};

let params = {
chave: "6e364195-3e3d-4ee5-8ca0-14db77d30593",
};

const efipay = new EfiPay(options);

await efipay.pixConfigWebhook(params, body);

// Se tudo correr bem, você pode enviar uma resposta de sucesso
res.status(200).send("Configuração do webhook concluída com sucesso!");
} catch (error) {
// Se ocorrer algum erro, você pode enviar uma resposta de erro e registrar o erro
console.error("Erro ao configurar o webhook:", error);
res.status(500).send("Ocorreu um erro ao configurar o webhook.");
}
});
Alguem sabe qual o motivo ?

Avatar discord do usuario m.h1604

m.h1604

Ver Respostas

Alguém poderia me ajudar sobre uma dúvida das notificações do Pix.

Configurei uma url de notificações com o skip-MTLs ativo seguindo esta estrutura: http://urldosite/notifications.php

Porém quando recebo a resposta, vem somente um requisição em branco, e no webhook inbox chega normalmente a notificação.

Alguém consegue me ajudar com isso?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @edvandell. Bom dia! Tudo bem?
Tente registrar sua URL novamente através do endpoint PUT /v2/webhook/:chave para verificar qual será a resposta.

Avatar discord do usuario wendellasevedo

wendellasevedo

@jessica_efi estou com a seguinte dúvida, quando eu crio uma cobrança (homologação) sem txid o STATUS fica ATIVO, ai quando eu acesso a URL do location "location": "qrcodespix-h.sejaefi.com.br/v2/cbaa695db80545559dee3ddf93c9e142", a resposta diz que a cobrança já não está mais ativa. Esse procedimento é normal ?

Avatar discord do usuario henderson4905

henderson4905

Ver Respostas

Boa noite pessoal, estou tentando configurar o webhook no meu site, que está em hospedagem compartilhada, porem estou tendo algumas duvidas.

O trecho de código abaixo da SDK PHP

$body = [
"webhookUrl" => "https://seudominio.com/webhook/"
];


é responsável por identificar qual é a rota do site que vai receber a resposta do servidor da EFI?

e se for, o que essa rota deve esperar do servidor?

Avatar discord do usuario m.h1604

m.h1604

Ver Respostas

Vou mostrar como estou fazendo.

Parâmetros passados para criação do webhook:

$this->options["headers"] = [
"x-skip-mtls-checking" => "true",
];

$params = [
"chave" => $this->pix_key
];

$body = [
"webhookUrl" => "https://contratos.onlinedobrasil.com/webhook?ignorar="
];

Rota que está recebendo as notificações:
Routes::map('/webhook', function() {
if (isset($_POST)):
file_put_contents(__DIR__ . "/request.json", json_encode($_POST));
endif;

wp_send_json(200);
});

Estou salvando em um arquivo teste para ver o retorno das notificações, mas a única coisa que é gravado é um json vazio.

Avatar discord do usuario m.h1604

m.h1604

Ver Respostas

Olá pessoal, tudo bem?

Estou com um problema para receber as notificações do Pix.

Eu cadastro a URL de notificação certinho porem não estou recendo a resposta da transação.

Estou usando com o "x-skip-mtls-checking" => "true" pois o sistema do cliente está um host compartilhado na Hostgator.

Já tentei vários testes porém não recebo resposta na url de notificação.

Avatar discord do usuario matheusgomes9492

matheusgomes9492

Ver Respostas

Boa noite, estou tendo problemas para cadastrar minha url de webhook do pix, tem como cadastrar usando o sdk ? ou somente com postman

Avatar discord do usuario he128

he128

Ver Respostas

//Desenvolvido pela Consultoria Técnica da Efí
$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://pix-h.api.efipay.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 frajolex

frajolex

Ver Respostas

Boa noite!!!
Estou com problemas no certificado.pem
"string(311) "cURL error 58: could not load PEM client certificate from ./certs/homologacao.pem, OpenSSL error error:80000003:system library::No such process, (no key found, wrong pass phrase, or wrong file format?) (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) for https://api-pix-h.gerencianet.com.br/oauth/token"


Fatal error: Uncaught Error: Call to a member function getBody() on null in C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Request.php:64
Stack trace:
#0 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Auth.php(44): Gerencianet\Request->send('post', '/oauth/token', Array)
#1 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\ApiRequest.php(23): Gerencianet\Auth->authorize()
#2 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Endpoints.php(65): Gerencianet\ApiRequest->send('post', '/v2/cob', Array)
#3 C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Endpoints.php(42): Gerencianet\Endpoints->Gerencianet\{closure}(Array, Array)
#4 C:\xampp\htdocs\pix\pix\emitir_pix.php(36): Gerencianet\Endpoints->__call('pixCreateImmedi...', Array)
#5 {main}
thrown in C:\xampp\htdocs\pix\vendor\gerencianet\gerencianet-sdk-php\src\Gerencianet\Request.php on line 64

"

Avatar discord do usuario .viniciusc

.viniciusc

java
public static Token authorizeToken(String client_id, String client_secret, byte[] certificateBytes) {
Token token = null;
String basicAuth;
try {
System.out.println(certificateBytes.length);
basicAuth = Base64.getEncoder().encodeToString((client_id + ':' + client_secret).getBytes());

File tempFile = File.createTempFile("certificate", ".p12");
tempFile.deleteOnExit();

try (FileOutputStream fos = new FileOutputStream(tempFile)) {
fos.write(certificateBytes);
}

System.setProperty("javax.net.ssl.keyStoreType", "PKCS12");
System.setProperty("javax.net.ssl.keyStore", tempFile.getAbsolutePath());

SSLSocketFactory sslSocketFactory = (SSLSocketFactory) SSLSocketFactory.getDefault();

URL url = new URL("https://api-pix-h.gerencianet.com.br/oauth/token");
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("Authorization", "Basic " + basicAuth);
conn.setSSLSocketFactory(sslSocketFactory);
String input = "{\"grant_type\": \"client_credentials\"}";

OutputStream os = conn.getOutputStream();
os.write(input.getBytes());
os.flush();

Avatar discord do usuario igor_efi

igor_efi

@espartano9720, bom dia!
Antes de você utilizar este endpoint, você precisa autenticar na API informando o client_id e client_secret do jeito que você esta fazendo.
Na autenticação, vai ser retornado para você o access token, que você deverá utilizar nos demais endpoints.

Segue o exemplo em Python de autenticação:

py
#Desenvolvido pela Consultoria Técnica da Efí

import requests
import base64

credentials = {
"client_id": "YOUR-CLIENT-ID",
"client_secret": "YOUR-CLIENT-SECRET",
}

certificado = './certificado.pem' # A variável certificado é o diretório em que seu certificado em formato .pem deve ser inserido

auth = base64.b64encode(
(f"{credentials['client_id']}:{credentials['client_secret']}"
).encode()).decode()

url = "https://pix.api.efipay.com.br/oauth/token"

payload="{\r\n \"grant_type\": \"client_credentials\"\r\n}"
headers = {
'Authorization': f"Basic {auth}",
'Content-Type': 'application/json'
}

response = requests.request("POST",
url,
headers=headers,
data=payload,
cert=certificado)

print(response.text)

Avatar discord do usuario espartano9720

espartano9720

Ver Respostas

olá pessoal, bom dia
espero que alguém possa me ajudar, agradeço desde já!
estou tentando obter os dados dos pix's recebidos atraves de um código python:

certificado = 'producao-xxxxxxxxxxcert.pem'

auth = base64.b64encode(
(f"{credentials['client_id']}:{credentials['client_secret']}"
).encode()).decode()

url = "https://pix.api.efipay.com.br/v2/pix?inicio=2023-11-14T15:00:00Z&fim=2023-11-15T15:59:59Z" #Para ambiente de Desenvolvimento

payload="{\r\n \"grant_type\": \"client_credentials\"\r\n}"
headers = {
'Authorization': f"Basic {auth}",
'Content-Type': 'application/json'
}

response = requests.request("POST",
url,
headers=headers,
data=payload,
cert=certificado)

print(response.text)

Avatar discord do usuario vinicius_cs

vinicius_cs

Ver Respostas

É possível testar Webhook em homolog?

Estou desenvolvendo em Laravel, fiz a rota com o /webhook, no entanto ao executar:
https://pix-h.api.efipay.com.br/v2/webhook/:chave

É retornado:
{
"nome": "webhook_invalido",
"mensagem": "A URL informada respondeu com o código HTTP 419"
}

No WebhookController eu coloquei apenas isso para testar:

php
public function handle(Request $request)
{
$payload = $request->all();

return response()->json(['status' => 200]);
}

Nas rotas coloquei assim:
php
Route::prefix('webhook')->group(function () {
Route::get('/', [WebhookController::class, 'handle'])->name('webhook.handle');
Route::post('/', [WebhookController::class, 'handle'])->name('webhook.handle');
Route::put('/', [WebhookController::class, 'handle'])->name('webhook.handle');
});

Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

to mandando assim: curl_setopt_array($curl, array(
CURLOPT_URL => "https://pix-h.api.efipay.com.br/v2/cob", // 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 => $data,
CURLOPT_SSLCERT => $config["certificado"],
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $token",
"Content-Type: application/json"
),
));