UNPKG

@dueheads/citi-bank-boleto-sdk

Version:

SDK para registro de boletos na API do Citibank via mTLS.

125 lines (96 loc) 4.64 kB
# SDK para Integração de Boletos com CitiBank Este é um SDK para Node.js, escrito em TypeScript, que facilita a integração com a API de registro de boletos do CitiBank. Ele abstrai a complexidade da comunicação SOAP e da construção do XML, oferecendo uma interface moderna e fluida para o desenvolvedor. ## Funcionalidades * **Padrão Builder:** Crie boletos de forma legível e segura, encadeando métodos (`setBeneficiario`, `setPagador`, etc.). * **Suporte a Payload Direto:** Para flexibilidade, permite o envio do objeto completo do boleto de uma só vez. * **Tratamento de Respostas com Hooks:** Utilize `onSuccess`, `onError` e `onFail` para lidar com os diferentes cenários de resposta da API de forma assíncrona. * **Tipagem Forte com TypeScript:** Aproveite a segurança e o autocompletar do TypeScript com interfaces bem definidas para todas as estruturas de dados. * **Modo de Depuração:** Ative logs detalhados para facilitar a identificação de problemas durante a integração. ## Instalação ```bash npm install @dueheads/citi-bank-boleto-sdk --save ``` ## Configuração Primeiro, importe e instancie o SDK, fornecendo a configuração necessária, incluindo os caminhos para seus certificados de segurança. ```typescript import { CitiBankBoletoSDK } from '@dueheads/citi-bank-boleto-sdk'; const sdk = new CitiBankBoletoSDK({ certPath: './certs/cert.crt', keyPath: './certs/private.key', rejectUnauthorized: false, // Em produção, use 'true'. debug: true, // Ativa logs detalhados no console. }); ``` ## Como Usar Existem duas maneiras principais de registrar um boleto. ### Exemplo 1: Usando o Padrão Builder (Recomendado) Este método é mais verboso, porém mais seguro e legível, pois utiliza métodos específicos para cada parte do boleto. ```typescript import { CitiBankBoletoSDK, SuccessResponse, ErrorResponse, SoapFaultResponse, BeneficiarioData, PagadorData, SacadorData, DocumentoData } from '@dueheads/citi-bank-boleto-sdk'; // 1. Defina os dados do boleto const beneficiario: BeneficiarioData = { /* ... */ }; const pagador: PagadorData = { /* ... */ }; const sacador: SacadorData = { /* ... */ }; const documento: DocumentoData = { /* ... */ }; // 2. Registre os hooks e encadeie os métodos para construir e enviar o boleto try { await sdk .onSuccess((res: SuccessResponse) => { console.log('SUCESSO (Builder):', res); }) .onError((res: ErrorResponse) => { console.error('ERRO DE NEGÓCIO (Builder):', res); }) .onFail((error: SoapFaultResponse | Error) => { console.error('FALHA GERAL (Builder):', error); }) .setBeneficiario(beneficiario) .setPagador(pagador) .setSacador(sacador) .setDocumento(documento) .registraBoleto(); // O método send() dispara o processo } catch (error) { console.error('Ocorreu um erro fatal na execução do SDK (Builder):', error); } ``` ### Exemplo 2: Usando o Payload Completo Este método é útil se você já possui o objeto completo do boleto. ```typescript import { CitiBankBoletoSDK, BoletoPayload } from '@dueheads/citi-bank-boleto-sdk'; // 1. Monte o objeto completo do boleto const boletoCompleto: BoletoPayload = { dadosBeneficiario: { /* ... */ }, dados: { pagador: { /* ... */ }, sacador: { /* ... */ }, documento: { /* ... */ } } }; // 2. Registre os hooks e chame o método de registro try { sdk.onSuccess((res) => { /* ... */ }) .onError((res) => { /* ... */ }) .onFail((err) => { /* ... */ }); await sdk.registraBoletoWithPayload(boletoCompleto); } catch (error) { console.error('Ocorreu um erro fatal na execução do SDK (Payload):', error); } ``` ## Tratamento de Respostas (Hooks) * `.onSuccess(callback)`: É chamado quando o boleto é registrado com sucesso. A callback recebe um objeto `SuccessResponse`. * `.onError(callback)`: É chamado quando a API retorna um erro de negócio, como um campo inválido. A callback recebe um objeto `ErrorResponse` com um array de erros detalhados. * `.onFail(callback)`: É chamado em caso de falha na comunicação (ex: erro de certificado, timeout, SOAP Fault) ou exceção interna do SDK. ## Interfaces Todas as estruturas de dados (`BoletoPayload`, `PagadorData`, `SuccessResponse`, etc.) são tipadas e exportadas pelo pacote para garantir a consistência e segurança do seu código.