Histórico de mensagens sobre mtls em pix

EXIBINDO CONVERSAS RECENTES:

Texto: mtls
Canal: pix
Avatar discord do usuario marcelo_efi

marcelo_efi

Ver Respostas

Bom dia, @tellyscastro ! Tudo bem?

Não é possível cadastrar uma URL de Webhook que redirecione. Quando a API realiza os testes de validação do mTLS, ela já espera uma resposta imediata de sucesso ou falha. Você deve inserir a URL final da aplicação ou realizar o mTLS antes de qualquer redirecionamento.

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

O ambiente de homologação tem uma CA diferente para usar na configuracão de mTLS...

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Em uma VPS você tem a liberdade de alterar as configurações do Apache para configurar o mTLS.
Vou iniciar um atendimento para lhe dar mais detalhes.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Olá, @felipenunes0714. Infelizmente, não fizemos testes para configurar o mTLS com ReactPHP, então não temos esse conteúdo disponível

Avatar discord do usuario felipenunes0714

felipenunes0714

Ver Respostas

perdão, deixa eu reformular minha pergunta, no tutorial no canal da efipay é utilizado um servidor ubumtu para poder configurar o mtls no webhook, não existe uma forma mais prática só com php?

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @excarplex_27431! Tudo bem?
1. Para configurar um split de pagamento em uma cobrança Pix, você precisará seguir alguns passos específicos e utilizar os endpoints adequados da API. Aqui está um resumo das informações para te orientar:
1.1. Configuração do Split de Pagamento:
Primeiro, é necessário criar uma configuração de split. Isso é feito através do endpoint específico para configuração de split, disponível aqui. Esta configuração pode ser reutilizada em múltiplas cobranças Pix, o que facilita o processo se você tiver uma estrutura de split recorrente.
1.2. Criação da Cobrança Pix:
Após configurar o split, o próximo passo é criar a cobrança Pix. Isso pode ser feito de duas maneiras, dependendo do tipo de cobrança:
1.2.1. Cobrança Imediata: Utilize o endpoint para criar uma cobrança imediata com um TXID, disponível aqui.
1.2.2Cobrança com Vencimento: Se a cobrança tiver vencimento, utilize este endpoint.
1.3. Associação da Configuração de Split à Cobrança Pix:
Com a cobrança Pix criada, você precisará associar a configuração de split à cobrança. Isso é feito através do endpoint específico para vinculação de cobrança com split, disponível aqui.
Além disso, para melhor compreensão do processo de split de pagamento, você pode consultar o fluxograma disponível neste link.


2. O Split de pagamento Pix só pode ser realizado entre contas Efí, com limite máximo de 20 contas para o repasse.


3. Para configurar o webhook, você precisará fazer isso através de uma requisição HTTP utilizando o endpoint específico fornecido pela Efí. Esse processo envolve associar uma chave Pix registrada na sua conta Efí, que é a mesma chave que será utilizada na criação da cobrança, à URL de retorno da sua aplicação.
Você pode seguir o passo a passo detalhado na nossa documentação sobre webhooks. Lá, você encontrará o endpoint que deve ser utilizado para essa configuração.
Além disso, é essencial que você configure o mTLS (Mutual TLS) no seu servidor web para garantir que a comunicação siga os padrões de segurança estabelecidos. Mais detalhes sobre essa configuração podem ser encontrados na seção sobre mTLS na nossa documentação.

Se precisar de mais ajuda, conte com a gente!

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

# #
# Utilize o segundo exemplo, caso queira requerir o certificado para autenticação #
# mútua em apenas uma rota do domínio indicado no VirtualHost. #
# Exemplo: https://www.seu_dominio.com.br/webhook/ #
# #


:443> # Porta HTTPS
#
# ...
#

SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio
SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio

#Chave pública da Efí
SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt

# mTLS Efí
SSLVerifyClient none
SSLProtocol TLSv1.2


SSLVerifyClient require
SSLVerifyDepth 3


# Tratando o /pix, redirecionando as requisições sempre para /webhook
Alias "/webhook/pix/" "/var/www/webhook/index.php"
Alias "/webhook/pix" "/var/www/webhook/index.php"

#
# ...
#

Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

# #
# Utilize o primeiro exemplo, caso queira requerir o certificado para autenticação #
# mútua em qualquer rota do domínio indicado no VirtualHost. #
# Funciona bem para sub-domínios. Exemplo: https://www.webhook.seu_dominio.com.br #
#
#


:443> # Porta HTTPS
#
# ...
#

SSLCertificateFile /caminho_certificado/fullchain_ssl.pem #fullchain associado ao seu certificado SSL do domínio
SSLCertificateKeyFile /caminho_certificado/privkey_ssl.pem #privkey associada ao seu certificado SSL do domínio

#Chave pública da Efí
SSLCACertificateFile /caminho_certificado/chain-pix-prod.crt

# mTLS Efí
SSLVerifyClient require
SSLVerifyDepth 3

# Tratando o /pix, redirecionando as requisições sempre para /webhook
Alias "/pix/" "/var/www/webhook/index.php"
Alias "/pix" "/var/www/webhook/index.php"

#
# ...
#

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Consegue. Em nossa documentação na seção Skip-mTLS, você encontra essa informação.

Avatar discord do usuario _acb09

_acb09

Ver Respostas

{
"certificate": "CAMINHO_ABSOLUTO/web\\certificates\\efipay\\homologacao-544374-cert.pem",
"clientId": "Client_Id_????",
"clientSecret": "Client_Secret_???",
"debug": false,
"pwdCertificate": "",
"responseHeaders": true,
"sandbox": true,
"timeout": 30,
"headers": {
"x-skip-mtls-checking": true
}
}

Avatar discord do usuario _acb09

_acb09

Ver Respostas

Boa tarde!
Estou recebendo o seguinte erro ao criar um webhook de pix:

{
"code": 400,
"error": "json_invalido",
"errorDescription": "Parâmetro \".headers['x-skip-mtls-checking']\", deve ser igual a um dos valores predefinidos"
}

Estou usando o SDK, e todos endpoints funcionam (cartão, pix e boleto) porém não consigo gerar o webhook. Ou recebo o erro acima, ou recebo Curl 52 Error.

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Que tipo de servidor você utiliza e como você esta tentando fazer a configuração do mTLS?

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Você configurou o mTLS eu seu servidor?

Avatar discord do usuario yasmin_efi

yasmin_efi

Ver Respostas

Boa noite @felipenunes0714! Tudo bem? Você configurou o mTLS em seu servidor?

Avatar discord do usuario felipenunes0714

felipenunes0714

400
json_invalido
Parâmetro ".headers['x-skip-mtls-checking']", deve ser igual a um dos valores predefinidos


$options["headers"] = [
"x-skip-mtls-checking" => false
];

Avatar discord do usuario felipenunes0714

felipenunes0714

Ver Respostas

me retornou o seguinte erro:


400
json_invalido
Parâmetro ".headers['x-skip-mtls-checking']", deve ser igual a um dos valores predefinidos
{
"Server": [
"nginx"
],
"Date": [
"Tue, 06 Aug 2024 18:59:18 GMT"
],
"Content-Type": [
"application/json; charset=utf-8"
],
"Content-Length": [
"241"
],
"Connection": [
"keep-alive"
],
"x-request-id": [
"xxxx"
],
"Vary": [
"Origin"
],
"Access-Control-Allow-Credentials": [
"true"
],
"ETag": [
"xxx""
]
}

Avatar discord do usuario felipenunes0714

felipenunes0714


/
Detailed endpoint documentation
https://dev.efipay.com.br/docs/api-pix/webhooks#configurar-o-webhook-pix
/

$autoload = realpath(__DIR__ . "../../../../../../../vendor/autoload.php");
if (!file_exists($autoload)) {
die("Autoload file not found or on path $autoload.");
}
require_once $autoload;

use Efi\Exception\EfiException;
use Efi\EfiPay;

$optionsFile = __DIR__ . "/../../credentials/options.php";
if (!file_exists($optionsFile)) {
die("Options file not found or on path $options.");
}
$options = include $optionsFile;

$options["headers"] = [
"x-skip-mtls-checking" => false
];

$params = [
"chave" => ""
];

$body = [
"webhookUrl" => ""
];


try {
$api = new EfiPay($options);
$response = $api->pixConfigWebhook($params, $body);

if (isset($options["responseHeaders"]) && $options["responseHeaders"]) {
print_r("

" . json_encode($response->body, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
print_r("
" . json_encode($response->headers, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
} else {
print_r("
" . json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
}
} catch (EfiException $e) {
print_r($e->code . "
");
print_r($e->error . "
");
print_r($e->errorDescription) . "
";
if (isset($options["responseHeaders"]) && $options["responseHeaders"]) {
print_r("
" . json_encode($e->headers, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
}
} catch (Exception $e) {
print_r($e->getMessage());
}

Avatar discord do usuario felipenunes0714

felipenunes0714

Ver Respostas


/
Detailed endpoint documentation
https://dev.efipay.com.br/docs/api-pix/webhooks#configurar-o-webhook-pix
/

$autoload = realpath(__DIR__ . "/../../../vendor/autoload.php");
if (!file_exists($autoload)) {
die("Autoload file not found or on path $autoload.");
}
require_once $autoload;

use Efi\Exception\EfiException;
use Efi\EfiPay;

$optionsFile = __DIR__ . "/../../credentials/options.php";
if (!file_exists($optionsFile)) {
die("Options file not found or on path $options.");
}
$options = include $optionsFile;

$options["headers"] = [
"x-skip-mtls-checking" => false
];

$params = [
"chave" => "12345"
];

$body = [
"webhookUrl" => "www.meulink.com"
];

try {
$api = new EfiPay($options);
$response = $api->pixConfigWebhook($params, $body);

if (isset($options["responseHeaders"]) && $options["responseHeaders"]) {
print_r("

" . json_encode($response->body, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
print_r("
" . json_encode($response->headers, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
} else {
print_r("
" . json_encode($response, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
}
} catch (EfiException $e) {
print_r($e->code . "
");
print_r($e->error . "
");
print_r($e->errorDescription) . "
";
if (isset($options["responseHeaders"]) && $options["responseHeaders"]) {
print_r("
" . json_encode($e->headers, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . "
");
}
} catch (Exception $e) {
print_r($e->getMessage());
}

Avatar discord do usuario joaolucas_efi

joaolucas_efi

Ver Respostas

Nesse caso você provavelmente não irá conseguir configurar o mTLS, para contornar isso você pode seguir estes passos descritos aqui
imagem enviada na mensagem pelo usuario joaolucas_efi

Avatar discord do usuario celsoalexandre

celsoalexandre

Ver Respostas

bom dia. Eu implementei o webhook pix e por ser um servidor que vai ter outras rotas além dos webhooks da efi, eu optei por desabilitar o mtls e validar um query param "secreto" ao invés disso. Existem mais medidas de segurança recomendadas que posso implementar pra esse webhook?