Pular para o conteúdo principal

Webhook

Esta seção reúne endpoints para gerenciamento de notificações por parte do PSP recebedor ao usuário recebedor.


Validação mTLS

Para utilizar a API Abertura de Contas, é necessário que o seu servidor tenha a versão mínima do TLS 1.2. e obedeça o padrão de comunicação mTLS.


Entendendo o padrão mTLS

Por norma do Banco Central, será necessário a inserção de uma chave pública da Efí em seu servidor para que a comunicação obedeça o padrão mTLS. Em seu domínio que representa o seu servidor, deverá ser feita uma configuração para exigir a chave pública (mTLS) que estamos disponibilizando para que ocorra a autenticação mútua.

A Efí irá fazer 2 requisições para o seu domínio (servidor):

  1. Primeira Requisição: Verificaremos se seu servidor está exigindo nossa chave pública. Enviaremos uma requisição sem certificado, e seu servidor não deve aceitar essa requisição. Após sua resposta negativa, passaremos para a segunda requisição.
  2. Segunda Requisição: Enviaremos a notificação junto com nossa chave pública. Seu servidor, que deve possuir nossa chave pública disponibilizada, irá realizar o "Hand-Shake" para estabelecer a comunicação.

Em seu servidor você deve configurar uma rota 'POST' com uma resposta padrão como uma string "200". Deve ser inserido o nosso certificado de produção ou homologação em seu servidor, abaixo temos alguns exemplos.

Servidor de hospedagem

Recomenda-se que você tenha um servidor dedicado para conseguir realizar as configurações do webhook, pois é necessário ter acesso a alguns arquivos para realizar as configurações como nos próximos exemplos.


Exemplos de configurações de servidor

Para configurar seu servidor, você precisará das chaves públicas da Efí. A seguir estão os endereços das chaves para os ambientes de Produção e Homologação. Essas chaves devem ser baixadas e dispostas em seu servidor.

AtributoURL da chave pública
Produçãohttps://certificados.efipay.com.br/webhooks/certificate-chain-prod.crt
Homologaçãohttps://certificados.efipay.com.br/webhooks/certificate-chain-homolog.crt


Os trechos de código abaixo buscam exemplificar as configurações necessárias em seu servidor para que seja possível realizar o hand-shake com nossos servidores.
from flask import Flask, jsonify, request
import ssl
import json
app = Flask(__name__)

@app.route("/", methods=["POST"])
def imprimir():
response = {"status": 200}
return jsonify(response)


@app.route("/pix", methods=["POST"])
def imprimirPix():
imprime = print(request.json)
data = request.json
with open('data.txt', 'a') as outfile:
outfile.write("\n")
json.dump(data, outfile)
return jsonify(imprime)

if __name__ == "__main__":
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.verify_mode = ssl.CERT_REQUIRED
context.load_verify_locations('caminho-certificados/certificado-público.crt')
context.load_cert_chain(
'caminho-certificados/server_ssl.crt.pem',
'caminho-certificados/server_ssl.key.pem')
app.run(ssl_context=context, host='0.0.0.0')
#Desenvolvido pela Consultoria Técnica da Efí

Para obter um SSL válido, você precisa entrar em contato com uma Autoridade Certificadora e gerar uma chave privada server_ssl.key.pem e uma chave pública server_ssl.crt.pem. Isso garante a integridade da conexão. Você pode fazer isso gratuitamente usando um utilitário como o Certbot, por exemplo.


Configurar o webhook

Configura webhook para a API Abertura de Contas.

POST /v1/webhook
Requer autorização para o escopo: gn.registration.webhook.write


Requisição

{
"webhookUrl": "https://sejaefi.com.br/meu-webhook"
}

Respostas

As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.

{
"identificadorWebhook": "92ecc0a8-9631-4601-a188-feacf8288c13"
}

Detalhar webhook

Detalha webhook configurado para a API Abertura de Contas.

GET /v1/webhook/:identificadorWebhook
Requer autorização para o escopo: gn.registration.webhook.read


Respostas

As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.

{
"webhookUrl": "https://sejaefi.com.br/meu-webhook",
"identificadorWebhook": "92ecc0a8-9631-4601-a188-feacf8288c13",
"criacao": "2021-10-26T11:23:35.000Z"
}

Listar webhooks

Lista webhooks configurados para a API Abertura de Contas.

GET /v1/webhooks
Requer autorização para o escopo: gn.registration.webhook.read


Requisição


A requisição enviada para esse endpoint não precisa de um body, apenas os cabeçalhos de autorização OAuth, parâmetros e o certificado da conta.

Respostas

As respostas abaixo representam Sucesso(200) e Falhas/erros do consumo.

Success
{
"parametros": {
"inicio": "2020-04-01T00:00:00.000Z",
"fim": "2020-04-01T23:59:59.000Z",
"paginacao": {
"paginaAtual": 0,
"itensPorPagina": 100,
"quantidadeDePaginas": 1,
"quantidadeTotalDeItens": 1
}
},
"webhooks": [
{
"webhookUrl": "https://sejaefi.com.br/meu-webhook",
"identificadorWebhook": "92ecc0a8-9631-4601-a188-feacf8288c13",
"criacao": "2021-10-26T11:23:35.000Z"
}
]
}

Cancelar webhook

Cancela webhook configurado para a API Abertura de Contas.

DELETE /v1/webhook/:identificadorWebhook
Requer autorização para o escopo: gn.registration.webhook.write


Requisição

A requisição enviada para esse endpoint não precisa de um body, apenas os cabeçalhos de autorização, OAuth, parâmetro e o certificado da conta.

Respostas

As respostas abaixo representam Sucesso(204) e Falhas/erros do consumo.

No content 

* Webhook configurado para cadastro foi cancelado.

Recebendo Callbacks

Esse serviço está protegido por uma camada de autenticação mTLS. Os callbacks são enviados pela Efí via POST url-webhook-cadastrada.


Requisição