Executando verificação de segurança...
5

Pitch: Resolvendo o "JSON sem Boleto": Como emitir e gerar boletos Itaú (mTLS) com TypeScript

Recentemente, precisei integrar a API de cash management (V2) do Itaú para emissão de boletos. Quem já passou por isso sabe que o processo é burocrático: exige autenticação via mTLS (certificados .crt e .key), gerenciamento rigoroso de tokens e, o principal "problema": a API do banco não gera o boleto visual (PDF/HTML). Ela retorna apenas a linha digitável e o código de barras, deixando o trabalho de renderização para o desenvolvedor.

Para resolver isso e facilitar a vida de quem usa Node.js/TypeScript, publiquei a biblioteca @willyantomaz/itau-payment-gateway.

O que esta biblioteca resolve?

  1. Abstração do mTLS: O HttpClient interno já lida com a leitura dos certificados e a comunicação segura com os endpoints de produção e sandbox.
  2. Gerenciamento de Token Automático: Você não precisa se preocupar em renovar o token; a lib verifica a expiração e solicita um novo antes da próxima chamada.
  3. Validação de Documentos: Possui utilitários robustos para validar CPF e CNPJ antes de enviar a requisição ao banco, evitando erros de API por dados mal formatados.
  4. Geração do Layout do Boleto: Diferente da API padrão, incluí um TemplateRenderer que utiliza um template HTML (baseado no padrão oficial do Itaú) para transformar os dados retornados em um boleto pronto para impressão ou envio ao cliente.

Exemplo Rápido


const credentials = {
  client_id: process.env.ITAU_CLIENT_ID,
  client_secret: process.env.ITAU_CLIENT_SECRET,
  cert_path: './certs/client.crt',
  key_path: './certs/client.key',
};

// 'false' para usar o ambiente de Sandbox (DEV)
const gateway = new gateway(credentials, false);

async function gerarCobranca() {
  try {
    const response = await gateway.createBillet(billetRequest);
    console.log('Boleto criado com sucesso!');
    console.log('Linha Digitável:', response.dados_individuais_boleto[0].numero_linha_digitavel);
  } catch (error) {
    console.error('Erro na emissão:', error.message);
  }
}

Por que usar?
Muitas empresas acabam usando intermediários e pagando taxas por boleto emitido apenas para não lidar com a complexidade da API direta do banco. Com essa lib, a ideia é dar autonomia para o desenvolvedor brasileiro integrar diretamente com o Itaú de forma gratuita e segura.

O projeto é open-source (MIT) e estou aberto a contribuições para adicionar suporte a Webhooks, cancelamento de boletos e PIX no futuro.

O que acham dessa abordagem de renderização no lado do cliente da lib? Alguma sugestão para melhorar a segurança no manejo dos certificados em produção?

Carregando publicação patrocinada...