UNPKG

@dueheads/citi-bank-boleto-sdk

Version:

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

61 lines (60 loc) 2.73 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DataInterpreter = void 0; /** * Classe responsável por interpretar e converter dados do seu formato de aplicação * para o formato esperado pelo CitiBankBoletoSDK. */ class DataInterpreter { /** * Converte o seu objeto JSON para o formato BoletoData do SDK. * @param payload O objeto de dados no formato da sua aplicação. * @returns Um objeto no formato BoletoData, pronto para ser usado pelo SDK. */ toSdkFormat(payload) { const { pagador, documento } = payload.dados; const { dadosBeneficiario } = payload; // Regra 1: Converte o tipo de inscrição do pagador const tipoPessoaPagador = pagador.tipo_inscricao === '1' ? 'F' : 'J'; // Regra 2: Constrói o endereço completo const enderecoCompleto = [ pagador.endereco.logradouro, pagador.endereco.numero, pagador.endereco.complemento ].filter(Boolean).join(', '); // Junta com vírgula apenas os campos que existem // Regra 3: Monta o objeto final, mapeando cada campo const boletoData = { GrpBenf: { CdtrNm: 'FINNET COMERCIO E SERVICOS DE TELEINFORM.', // Valor fixo do exemplo CdtrTaxId: dadosBeneficiario.inscricao, CdtrTaxTp: 'J', // Assumindo que o Beneficiário é sempre Pessoa Jurídica CdtrId: '42613104261310130100', // Valor fixo do exemplo }, GrpClPgd: { DbtrNm: pagador.nome, DbtrTaxId: pagador.inscricao, DbtrTaxTp: tipoPessoaPagador, GrpClPgdAdr: { DbtrAdrTp: enderecoCompleto, DbtrCtrySubDvsn: pagador.endereco.uf || '', DbtrPstCd: pagador.endereco.cep || '', DbtrTwnNm: pagador.endereco.cidade || '', }, }, TitlAmt: parseFloat(documento.valor), TitlBarCdInd: '0', // Valor padrão TitlCcyCd: '09', // Valor padrão para Real TitlCiaCdId: dadosBeneficiario.identificador, TitlDueDt: documento.data_vencimento, // Se não houver instrução de protesto, o padrão é '2' (Não Baixar) TitlInstrWrtOffInd: documento.protesto ? undefined : '2', TitlIssDt: documento.data_emissao, TitlOurNb: documento.nosso_numero, TitlPortCd: '1', // Valor padrão para Cobrança Simples TitlTpCd: documento.especie, TitlYourNb: documento.numero, }; return boletoData; } } exports.DataInterpreter = DataInterpreter;