@dueheads/citi-bank-boleto-sdk
Version:
SDK para registro de boletos na API do Citibank via mTLS.
61 lines (60 loc) • 2.73 kB
JavaScript
;
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;