Skip to content

Efí: API Pix com mTLS — de 1 para 4 capacidades #95

Description

@mariolucasdev

A Efí é hoje o gateway mais fraco da biblioteca: 1 de 5 capacidades, só a API de Cobranças (boleto). Mas a Efí tem uma segunda API, a API Pix, em outro host, e ela cobre justamente o que falta.

O que a API Pix oferece

Capacidade Endpoint Hoje
Chaves Pix POST/GET/DELETE /v2/gn/evp
Webhooks PUT/GET/DELETE /v2/webhook/:chave
Assinaturas Pix Automático: /v2/rec, /v2/locrec, /v2/cobr
Cobrança Pix /v2/cob (imediata), /v2/cobv (com vencimento), devolução

Com isso a Efí vai de 1/5 para 4/5, empatando com Mercado Pago, PagBank e Pagar.me. Clientes continuam fora: a API Pix não tem cadastro de cliente.

Por que é uma mudança de infraestrutura

mTLS é obrigatório em toda requisição da API Pix, inclusive na de autorização, com o certificado .p12/.pem da aplicação. Nenhum gateway atual precisou disso.

Esse é o padrão do BACEN para API Pix de banco, e Inter, BB, Itaú, Sicoob e Sicredi usam o mesmo esquema. Por isso o certificado vira um value object genérico (PHPay\Http\Certificate), e não algo da Efí. Construir isso uma vez abre a categoria inteira de bancos.

Decisões

  • Mesmo EfiGateway, sem quebrar a v2. As credenciais são as mesmas nas duas APIs, e o certificado entra como parâmetro opcional novo. charge() continua sendo boleto (API de Cobranças). A cobrança Pix é pixCharge(), um extra do gateway concreto, como o webhookDeliveries() do Pagar.me.
  • Cada API tem o seu token, em cache no gateway e renovado ao expirar. O token Pix dura 1h, e um gateway vivo num worker de fila passaria disso.
  • Valor em reais como string ("123.45", padrão BACEN), diferente da API de Cobranças da Efí, que usa centavos. Por isso entra Money::toDecimal().
  • O certificado só é exigido quando a biblioteca monta o próprio client. Os testes injetam o client mockado e não precisam de certificado.

Fontes

  • SDK oficial: efipay/sdk-php-apis-efi, arquivo src/Efi/Endpoints/Pix.php (rotas, métodos e hosts)
  • Especificação do BACEN: bacen/pix-api, arquivo openapi.yaml (RecRevisada.status = CANCELADA, CobRSolicitada, periodicidades)
  • https://dev.efipay.com.br/docs/api-pix/credenciais

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions