Histórico de mensagens sobre url

EXIBINDO CONVERSAS RECENTES:

Texto: url
# pix
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)

# pix
Avatar discord do usuario espartano9720

espartano9720

@guilherme_efi eu sou iniciante com o uso de Api's, coloquei o esse código aqui:

response = requests.get(url,
headers=headers,
data=payload,
cert=certificado)

print(response.text)

# pix
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)

# devs
Avatar discord do usuario kauaa_zll

kauaa_zll

Ver Respostas

eu estou tentando criar um servidor com certificado para cadastrar a url no webhook

# pix
Avatar discord do usuario nandinhatnl

nandinhatnl

Ver Respostas

Yasmin, fiz o put recebi com sucesso o retorno da requisição , mas quando há o pagamento não recebo nada nesta url cadastrada, o que pode estar errado?

# pix
Avatar discord do usuario yasmin_efi

yasmin_efi

Ver Respostas

Boa tarde @vitor.oliveira94! Tudo bem? Apos o PUT do cadastro com sucesso, as notificações serão encaminhadas para a URL cadastrada

# pix
Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Ver Respostas

boa tarde. Não consegui ter um retorno sobre o pagamento pix ainda. Pelo que entendi fazemos um PUT para apontar qual será a URL de retorno de uma determinada chave. Apos isso como fazemos para receber as notificações? Estou utilizando PHP

# pix
Avatar discord do usuario allanmello

allanmello

Ver Respostas

João, fiz a alteração p/ usar "hmac", e estou recebendo o status 400:
{
"nome": "webhook_invalido",
"mensagem": "A autenticação de TLS mútuo não está configurada na URL informada"
}

# pix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia @vitor.oliveira94, tudo bem?
A sua URL só irá aparecer registrada ao consultar essa rota uma vez que o PUT /v2/webhook/:chave responda com sucesso.

# pix
Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Bom dia @allanmello, tudo bem?
Uma solução que talvez atenda seu caso seja a adição de um hmac para acessar sua URL.
Você pode dar um olhada nisso em https://dev.efipay.com.br/docs/api-pix/webhooks/#entendendo-o-padr%C3%A3o-mtls

# pix
Avatar discord do usuario _ganimedes

_ganimedes

Ver Respostas

Bom dia,
Estou com problema na hora de enviar a URL de configuracao do pix
estou recebendo o seguinte erro
error {
nome: 'webhook_invalido',
mensagem: 'A URL informada respondeu com o código HTTP 403'
}

# pix
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');
});

# pix
Avatar discord do usuario jaimepremy

jaimepremy

Ver Respostas

Oi Rubens, obrigado por responder. Então, o mesmo código roda com sucesso no loclahost. Só no servidor que dá este problema. Consigo baixar o cerificado digitando o url do servidor, então não há problema de perimissões no diret´rio

# pix
Avatar discord do usuario peterfritz

peterfritz

E verifica o IP e o segredo passado na sua URL do webhook antes de processar o callback!
imagem enviada na mensagem pelo usuario peterfritz

# pix
Avatar discord do usuario peterfritz

peterfritz

Algo assim funcionaria:

js
import axios from "axios";
import https from "https";

const subdomain = process.env.NODE_ENV === "production" ? "pix" : "pix-h";

const clientCreds = clientId + ":" + clientSecret;
const authorization = Basic ${Buffer.from(clientCreds).toString("base64")};

const certificate = Buffer.from(certificateBase64Encoded, "base64");

const httpsAgent = new https.Agent({
pfx: certificate,
passphrase: "",
});

const oAuthResponse = await axios.post(
https://${subdomain}.api.efipay.com.br/oauth/token,
{
grant_type: "client_credentials",
},
{
headers: {
Authorization: authorization,
"Content-Type": "application/json",
},
httpsAgent,
}
);

const token = oAuthResponse.data.access_token;

const efiApi = axios.create({
baseURL: https://${subdomain}.api.efipay.com.br,
headers: {
Authorization: Bearer ${token},
"Content-Type": "application/json",
},
httpsAgent,
});

await efiApi.put(
/v2/webhook/${process.env.PIX_KEY},
{
webhookUrl:
${process.env.WEBHOOK_BASE_URL}/api/webhook/efi?secret=${process.env.WEBHOOK_SECRET}&ignore=.replace(
"//api",
"/api"
),
},
{
headers: {
"x-skip-mtls-checking": "true",
},
}
);

# pix
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"
),
));

# pix
Avatar discord do usuario vitor.oliveira94

vitor.oliveira94

Boa tarde! Tudo bem? Estou fazendo a integração com a API pix PHP e tudo certo ao gerar o token. Porém quando vou fazer a requisição para 'https://pix-h.api.efipay.com.br/v2/cob' recebo error : client invalid. Teria algum exemplo com curl?

# pix
Avatar discord do usuario peterfritz

peterfritz

Ver Respostas

Fala @blini_10032, tem sim, uso serverless e edge para receber os callbacks, então pra mim também não foi possível usar mTLS. Mas a Efí suporta um cabeçado x-skip-mtls-checking na criação do webhook que, se tiver como valor true, irá pular a validação do mTLS.
https://dev.efipay.com.br/docs/api-pix/webhooks/#:~:text=Certbot%20por%20exemplo.-,Skip%2DmTLS,-Para%20hospedagem%20em>">Documentação do Skip-mTLS.

> Só lembre-se de verificar se o IP que envia a requisição https://sejaefi.com.br/central-de-ajuda/api/quais-enderecos-de-ip-gerencianet-utiliza#conteudo>">pertence à Efí e enviar um segredo conhecido apenas pelo seu servidor na URL quando criar o seu webhook como recomendado na documentação.