Histórico de mensagens sobre Skip-mTLS em pix

EXIBINDO CONVERSAS RECENTES:

Texto: Skip-mTLS
Canal: pix
Avatar discord do usuario diogo.f.m.7

diogo.f.m.7

Ver Respostas

No webhook do Pix q seria mais complicado por conta do mtls... Mas vc pode usar o skip-mtls....

Avatar discord do usuario jhon0029

jhon0029

Ver Respostas

from efipay import EfiPay
from credenciais import CREDENTIALS

gn = EfiPay(CREDENTIALS)
headers = {'x-skip-mtls-checking': 'false'}
params = {'chave': ''}
body = {'webhookUrl': 'http://xxx.xxx.xxx.xxx:5000/webhook/pix'}
response = gn.pix_config_webhook(params=params, body=body, headers=headers)
print(response)

alguem pode me dizer se com este exemplo consigo verificar se meu server webhook está funcionando?

Avatar discord do usuario trtavares

trtavares

Webhook devidamente configurado com skip-mtls

Avatar discord do usuario tarcizio5821

tarcizio5821

Tem algum tutorial para webhook em servidor compartilhado?
Segui os passos para usar Skip-mTLS sem sucesso.
Só funciona no Postman com sucesso sem usar a hash: https://seu_dominio.com.br/webhook?hmac=xyz&ignorar=sua_chave, na hora de usar com PHP informando a hash, não funciona de jeito nenhum.
Alguém que possa ajudar?
Meu servidor compartilhado é da Hostinger.

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 matheuzin6375

matheuzin6375

Ver Respostas

Boa tarde.

codigo:

def configure_webhook():
url = "https://api-pix.gerencianet.com.br/v2/webhook/chave"
headers = {
"x-skip-mtls-checking": "true",
}

body = {
"webhookUrl": "https://ac7-1bd37c9a12e8.herokuapp.com/show/webhook?hmac={HASH_SECRET_KEY}&ignorar=",
"chave": "6831e783-a812-45c7-a98f-962745a78ad4"
}

response = requests.put(url, headers=headers, data=body)

return response

response = configure_webhook()

erro:

requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(10054, 'Foi forçado o cancelamento de uma conexão existente pelo host remoto', None, 10054, None))

alguém consegue me explicar?

Avatar discord do usuario joaovicto

joaovicto

no meu arquivo de options
contem o seguinte trecho de codigo como retorno:
onde "x-skip-mtls-checking" => true
esta configurada como true
imagem enviada na mensagem pelo usuario joaovicto

Avatar discord do usuario _josemax

_josemax

Ver Respostas

Tentando 54.242.231.66:443... Conectado ao pix-h.api.efipay.com.br (54.242.231.66) porta 443 (#0) ALPN, oferecendo http/1.1 CAfile: /etc/ssl/ certs/ca-certificates.crt CApath: /etc/ssl/certs Conexão SSL usando TLSv1.3 / TLS_AES_256_GCM_SHA384 ALPN, servidor aceito para usar http/1.1 Certificado do servidor: subject: C=BR; ST=MINAS GERAIS; L=OURO PRETO; O=EFI SA - INSTITUIÇÃO DE PAGAMENTO; CN=.api.efipay.com.br data de início: 17 de maio 19:31:27 2023 GMT data de expiração: 17 de junho 19:31:26 2024 GMT subjectAltName: host "pix-h.api.efipay. com.br" certificado correspondente ".api.efipay.com.br" emissor: C=BE; O=GlobalSign nv-sa; CN=GlobalSign RSA OV SSL CA 2018 Certificado SSL verificado ok. > PUT /v2/webhook/9f86e12a-370d-44dd-bd47-4b6a0b17bae5 HTTP/1.1 Host: pix-h.api.efipay.com.br User-Agent: GuzzleHttp/7 Content-Type: application/json Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 ..VrAQ4hHRYVRvl9dzWsvX79j_VvtOcz-fSvo0LxuaQgY api-sdk: efi-php-1.6.1 x-skip-mtls-checking: false Content-Length: 51 ID de sessão SSL antigo está obsoleto, removendo Marcar pacote como não compatível com multiuso < HTTP/1.1 400 Solicitação incorreta Conexão #0 ao host pix-h.api.efipay.com.br deixada intacta 400
webhook_invalido Uma URL informada respondeu com o código HTTP 400

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não, vai só o x-skip-mtls-checking

Avatar discord do usuario iberemendes

iberemendes

Ver Respostas

'x-skip-mtls-checking' => 'true'
isso vai no header ?

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 guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @m.h1604. Tudo bem?
Caso opte por deixar o x-skip-mtls-checking como true __a Efí vai continuar a enviar o certificado na requisição__, mas como descrito, seu servidor irá ignorá-lo. No entanto é aconselhável que você encontre uma forma de configurar o mTLS e validar se é a Efí quem está enviando a notificação.
Uma outra sugestão é verificar o IP de quem está notificando, pois a Efí comunica os webhook através do IP 34.193.116.226

Para facilitar a tratativa da adição do /pix quando a Efí envia a notificação, você pode registrar a URL com um parâmetro. Exemplo: https://seudominio.com.br/webhook/?ignorar=. Assim sua aplicação receberá as notificações sempre na rota /webhook.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Você está respondendo também em URL+"/pix" ? Pq você precisa atender nos dois, e as notificações só são enviados para o +"/pix".

Sobre o skip-mTLS, desligar a checagem não significa que você possa deixar de fazer mTLS. A Hostgator precisaria te passar o certificado usado na conexão para você fazer o mTLS na sua aplicação. Limitação do ambiente não é carta-branca para desobedecer o manual do Pix.

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 andervieiradev

andervieiradev

passei o "headers" => [
"x-skip-mtls-checking" => "true",
],

Avatar discord do usuario vinicius_vale

vinicius_vale

Ver Respostas

Boa tarde, estou com algumas dúvidas sobre a api do pix com o webhook.

Está retornando o erro: 'A URL informada respondeu com o código HTTP 403'

com a url genérica https://webhook.site/

header contendo: 'x-skip-mtls-checking': 'true' e bearer token, passando agent com certificado hml.

Estou perdendo alguma info que deveria passar na request?

Avatar discord do usuario berzacola

berzacola

Ver Respostas

Basta colocar o parametro no header x-skip-mtls-checking para false

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Não testei com a Efí, mas o Glitch.com deve funcionar com a API Pix se você passar o x-skip-mtls-check. O que em homologação não é problema.

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Isso é referente ao Hand-Shake que realizamos para validar se o servidor está apresentado o CA da Efí, no seu caso ao implementar o hmac já está fazendo uma validação para garantir que somos nós que estamos lhe enviando a requisição.
Portanto caso não queria configurar o hand-shake pode enviar no cabeçalho da requisição de configuração o x-skip-mtls-checking como true.
As informações com relação à isso estão nessa mesma página que envie antes.

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