Histórico de mensagens sobre webhook pix em pix

EXIBINDO CONVERSAS RECENTES:

Texto: webhook pix
Canal: pix
Avatar discord do usuario rubenskuhl

rubenskuhl

Ver Respostas

Sim, para já receber o pagador no webhook sim. Mas o GET de /pix confirmando o CPF não precisa dessa mudança, caso você prefira dessa forma.

Avatar discord do usuario marshall0559

marshall0559

Ver Respostas

No caso a mudança eu faria aqui :

public function successful_webhook( $posted ) {
$pix = json_decode( $posted, true )['pix'];
// Percorre lista de notificações
$args = array(
'limit' => -1,
'orderby' => 'date',
'order' => 'DESC',
'meta_key' => '_gn_pix_txid',
'meta_compare' => '=',
'meta_value' => sanitize_text_field( $pix[0]['txid'] ),
);

// Busca pedidos
$orders = wc_get_orders( $args );

// Atualiza status
foreach ( $orders as $order ) {

if ( isset( $pix[0]['txid'] ) && $pix[0]['txid'] != '' && ( get_post_meta( $order->get_id(), '_gn_pix_txid', true ) == $pix[0]['txid'] ) ) {
add_post_meta( intval( $order->get_id() ), '_gn_pix_E2EID', $pix[0]['endToEndId'], true );

gn_log( $pix[0] );
if ( isset( $pix[0]['devolucoes'] ) && $pix[0]['devolucoes'][0]['status'] == 'DEVOLVIDO' ) {
$order->update_status( 'refund' );
} else {
$order->update_status( 'Paid' );
$order->payment_complete();
}
}
}

exit();
}

Avatar discord do usuario igor_efi

igor_efi

Ver Respostas

Ah sim, agora entendi a sua demanda.
Quando o seu cliente realizar o pagamento, vamos fazer um webhook para a sua URL (caso tenha cadastrado).
Quando você receber esta notificação, você pode executar a ação de redirecionamento do seu usuário.

Segue a página da nossa documentação que fala sobre webhook: https://dev.efipay.com.br/docs/api-pix/webhooks

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Não entendi. Você deve configurar seu servidor, depois cadastrar seu webhook através do endpoint PUT /v2/webhook/:chave. Em nossa documentação, você encontra todos os detalhes da configuração de servidor.

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Para receber o status de um Pix, você pode registrar uma webhook URL e as atualizações.
Em nossa documentação disponibilizamos um código que é responsável para captura o JSON das notificações.
https://dev.efipay.com.br/docs/api-pix/webhooks#exemplos-de-configurações-de-servidor

Avatar discord do usuario guilherme_efi

guilherme_efi

Ver Respostas

Bom dia, @vinicio254! Tudo bem?

Você pode usar o exemplo abaixo para registrar o webhook. Sobre a configuração do mTLS, você pode conferir este vídeo que ensina a configuração em servidor Apache.

php

$homolog = true; // false para produção

$config = [
"certificado" => realpath(__DIR__ . "/certificado.pem"), // certificado em .pem de produção ou homologação
"client_id" => "Client_Id",
"client_secret" => "Client_Secret"
];

$chavePix = "suachavepix";

$webhookUrl = "https://seudominio.com.br/webhook/hash=hashdeseguranca&ignorar="

$autorizacao = base64_encode($config["client_id"] . ":" . $config["client_secret"]);
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? "https://pix-h.api.efipay.com.br/oauth/token" : "https://pix.api.efipay.com.br/oauth/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 8,
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"
),
));
var_dump(curl_exec($curl));
$returnAuth = json_decode(curl_exec($curl), true);
$access_token = $returnAuth['access_token'];
curl_close($curl);


//Criação da cobrança
$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => $homolog ? "https://pix-h.api.efipay.com.br/v2/webhook/$chavePix" : "https://pix.api.efipay.com.br/v2/webhook/$chavePix"
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_POSTFIELDS => '{
"webhookUrl": $webhookUrl
}',
CURLOPT_SSLCERT => $config["certificado"], // Caminho do certificado
CURLOPT_SSLCERTPASSWD => "",
CURLOPT_HTTPHEADER => array(
"Authorization: Bearer $access_token",
"x-skip-mtls-checking: true",
"Content-Type: application/json"
),
));
$responsePix = json_decode(curl_exec($curl), true);
curl_close($curl);

echo '
' . json_encode($responsePix, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) . '
';

Avatar discord do usuario fernando.areco

fernando.areco

Ver Respostas

Boa tarde pessoal. Desde ja desculpem a ignorância. Minha duvida eh se na requisicao que o Webhook faz ao meu servidor, dado que o valor da chave (dicionario) 'pix' eh um array, posso ter mais de um elemento de cobranca, por exemplo?

{'pix': [{...}]}

Avatar discord do usuario hellps

hellps

Ver Respostas

eu fiz o teste de webhook em ambiente de produção utilizando a minha chave pix e funcionou.
fui testar em ambiente de homologação utilizando a chave pix de email da efipay e não gerou nenhum webhook

Avatar discord do usuario hellps

hellps

Ver Respostas

o webhook com a minha chave está funcionando fiz pix para testar

Avatar discord do usuario hellps

hellps

Ver Respostas

eu vi na documentação que eu posso gerar um webhook se eu gerar um pix com a chave "[email protected]" eu preciso fazer mais alguma alteração para isso funcionar?

Avatar discord do usuario stoliarskiykostiantyn

stoliarskiykostiantyn

Hi everyone! Could someone help me please! I'm trying to implement EfiPay to send payment to pix with such code from python sdk from github repo https://github.com/efipay/sdk-python-apis-efi

Code looks like this now:

class EfiClient:
EFI_FT_PIX_KEY: str
EFI_FT_PIX_WEBHOOK_URL: str
efi: EfiPay
creds: s.EfiCredentials

def configure(self, config: BaseConfig):
# Notion: Sandbox = False on prod machine
self.creds = s.EfiCredentials(
client_id=config.EFI_CLIENT_ID,
client_secret=config.EFI_CLIENT_SECRET,
sandbox=config.EFI_IS_SANDBOX,
certificate=config.EFI_CERTIFICATE,
)

self.efi = EfiPay(self.creds.model_dump())
self.EFI_FT_PIX_KEY = config.EFI_FT_PIX_KEY
self.EFI_FT_PIX_WEBHOOK_URL = config.EFI_FT_PIX_WEBHOOK_URL

And the toruble is that efipay class doesn't acceprt certificates, support told me to chage base_url BUT there no way to do it! Help please) Would be very grateful!

Avatar discord do usuario marcoglg_dev

marcoglg_dev

Ver Respostas

boa noite pessoal, estou tendo problemas para configurar o webhook pix sempre retona 403.

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

já testei e sei que o erro está nessa parte da config do nginx:

location /api/webhook {
if ($ssl_client_verify != SUCCESS) {
return 403;
}

já baixei o certicado certificate-chain-homolog.crt

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 yasmin_efi

yasmin_efi

Isso, ele vai no webhook, mas você pode encontra-lo também na sua conta ou nas consultas via GET da nossa API Pix

Avatar discord do usuario jessica_efi

jessica_efi

Ver Respostas

Retorna sim. O webhook é enviado dessa forma:

{
"pix": [
{
"endToEndId": "E1803615022211340s08793XPJ",
"txid": "fc9a43k6ff384ryP5f41719",
"chave": "2c3c7441-b91e-4982-3c25-6105581e18ae",
"valor": "0.01",
"horario": "2020-12-21T13:40:34.000Z",
"infoPagador": "pagando o pix"
}
]
}