Páginas filhas
  • SERASA Bureau

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

 

Bloco de código
languagejava
for( int i=0; i < Integer.valueOf(hash.get("B358_NUMPEFIN")); i++) {
    System.out.println("registro: " + hash.get("B358_DTOCORR_" + String.valueOf(i)));
}

 

Configurando acesso ao SERASA PF
  • Lembrar sempre que a correta interpretação dos registros depende da leitura atenta do layout B49C/B49L.

A configuração dos acessos externos SERASA PF/PJ deve inicialmente passar por uma indicação para a JVM do path do arquivo de properties, do certificado e do ‘log4j‘; veja abaixo o setting para a JVM (‘-D option‘):

 

Bloco de código
languagehtml/xml
-Dserasa-bureau.datadir=/home/jboss/intellector
-Dlog4j.configuration=/home/jboss/intellector
-Daccess.ssl=/home/jboss/intellector/ssl

Para o uso direto em testes, usaríamos… (e.g. /home/jboss/intellector)

 

Bloco de código
languagejava
java -jar -cp. -Dserasa-bureau.datadir=/home/jboss/intellector SerasaBureau.jar

 

 

Aviso

Usando o método de execução acima, não esqueça de colocar no ’CLASSPATH’ todas as dependências; e o mesmo para JAVA_OPTS no JBoss…

 

 

 

Propriedades para o Acesso Seguro (HTTPS)
  • Arquivo ‘https.properties‘ – arquivos de propriedades do certificado e conexão ‘host-to-host‘ com a SERASA 

 

Bloco de código
languagehtml/xml
# Arquivo de properties para o SERASA PJ
# $Revision: 1.2 $
#

# Informações de autenticacao e certificados do serasa
user.url=sitenet07.serasa.com.br
user.root=/Homologa/consultahttps
user.jks=lVaxvlqeVH5ugq/rba5vYvSWhu8kYJqO3Q==O63WLqgqpA==
user.cert=/home/jboss/intellector-files/serasa.jks

 

 

  • Existe no Site do Intellector, uma funcionalidade para configurar os arquivos de propriedades, lá você poderá gerar a senha criptografada.

Aviso
Configurando SSL e HTTPS, leia aqui; sem Certificado ’não funciona’ e, entenda bem o conceito, leia sobre isso. Esse certificado é fornecido pela própria entidade, tipo host<->host.

 

Auditoria dos dados de Acesso

Para efeitos de auditoria, esse plugin persiste os dados da string de Envio e Retorno do acesso (dados brutos), sendo possível consultar esses dados via web service de Auditoria e verificar ou fazer uso dessas strings. O conteúdo dessa string bruta é composto pelos campos que compõe o layout de entrada e saída, especificada na documentação do SERASA.

Layouts para o Acesso
  • Nos Layouts são apresentados dados fixos, que provavelmente não sofrerão alterações; caso haja, a codificação do acesso também deverá ser alterada; basicamente, são dados transacionais.
  • Baixe aqui o Layout B49C.
  • Arquivo ‘layout_p002.xml‘ – Header do Regsitro P005 – Parcelas com cheques de Compromisso.

 

Bloco de código
languagehtml/xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- layout_p002.xml - Registro P002 - Outras Opcoes de Consulta Pessoa Fisica -->
<serasa_bureau>
    <field>
    <!-- Tipo de registro TIPO-REG -->
        <name>P002</name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
    <!-- codigo da 1a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
        <name>IP20</name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
    <!-- chave de acesso para consultar a 1a opcao se necessario -->
        <name>Q</name>
        <size>21</size>
        <type>S</type>
    </field>
    <field>
    <!-- codigo da 2a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
        <name> </name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
    <!-- chave de acesso para consultar a 2a opcao se necessario -->
        <name> </name>
        <size>21</size>
        <type>S</type>
    </field>
    <field>
    <!-- codigo da 3a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
        <name> </name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
    <!-- chave de acesso para consultar a 3a opcao se necessario -->
        <name> </name>
        <size>21</size>
        <type>S</type>
    </field>
  
    <field>
    <!-- codigo da 4a opcao para consultar outro produto, feature ou base (ver tabela 30 -->
        <name> </name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
    <!-- chave de acesso para consultar a 4a opcao se necessario -->
        <name> </name>
        <size>21</size>
        <type>S</type>
    </field>
    <field>
    <!-- filler de COMPLEMENTO do registro P002 -->
        <name> </name>
        <size>11</size>
        <type>S</type>
    </field>
</serasa_bureau>

 

 
  • Arquivo layout_p006.xml - Opções de consulta do Cadastro Sintético 

 

Bloco de código
languagejava
<?xml version="1.0" encoding="ISO-8859-1"?>
<serasapf>
    <field>
    <!-- Layout de consulta P006: trata-se de uma sequencia de S/N, para cada registro -->
    <!-- para uma melhor visualizacao e configuracao, verificar o layout de consulta do P006 -->
        <name>P006SNSSS9999SSSSSSSN NNNSN</name>
        <size>27</size>
        <type>S</type>
    </field>
    <field>
    <!-- filler (7): filler de COMPLEMENTO do registro P006 -->
        <name> </name>
        <size>88</size>
        <type>S</type>
    </field>
</serasapf>

 

  • Arquivo layoutPF_b49c.xml - Header transacional para a consulta Pessoa Física 
Bloco de código
languagehtml/xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Layout PF B49C -->
<serasapf>
    <field>
        <!-- header Credit Bureau -->
        <name>B49C</name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
        <!-- Filler -->
        <name> </name>
        <size>6</size>
        <type>S</type>
    </field>
    <field>
        <!-- NUM_DOC=CPF; está neste XML ilustrando, pois o mesmo é tratado numa -->
        <!-- tag de entrada, serve como referencia pra substituicao do real CPF -->
        <name>cpf</name>
        <size>15</size>
        <type>N</type>
    </field>
    <field>
    <!-- Tipo Pessoa F=pessoa fisica; J=pessoa juridica -->
        <name>F</name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
        <!-- Base de consulta -->
        <name>C</name>
        <size>6</size>
        <type>S</type>
    </field>
    <field>
    <!-- Modalidade -->
        <name>FI</name>
        <size>2</size>
        <type>S</type>
    </field>
    <field>
    <!-- valor da consulta -->
        <name>8888888</name>
        <size>7</size>
        <type>N</type>
    </field>
    <field>
    <!-- Centro de custo -->
        <name> </name>
        <size>12</size>
        <type>S</type>
    </field>
    <field>
    <!-- Codificado (S/N) -->
        <name>N</name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- quantidade de registros por transmissao de dados -->
        <name>99</name>
        <size>2</size>
        <type>N</type>
    </field>
    <field>
    <!-- Deseja dialogo de comunicacao (S/N) -->
        <name>S</name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- Funcao: INI,CON,ENC,ERR,TMD,FIM -->
        <name>INI</name>
        <size>3</size>
        <type>S</type>
    </field>
    <field>
    <!-- Tipo de consulta -->
        <name>A</name>
        <size>1</size>>
        <type>S</type>
    </field>
    <field>
    <!-- atualiza dados enviados (S/N) -->
        <name>N</name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- Filler (2) -->
        <name> </name>
        <size>42</size>
        <type>S</type>
    </field>
    <field>
    <!-- quantidade de cheques sequenciais -->
        <name>00</name>
        <size>2</size>
        <type>N</type>
    </field>
    <field>
    <!-- endereço + telefone -->
        <name>N</name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- filler (3) -->
        <name> </name>
        <size>8</size>
        <type>S</type>
    </field>
    <field>
    <!-- conta corrente -->
        <name>0000000000</name>
        <size>10</size>
        <type>N</type>
    </field>
    <field>
    <!-- digito da conta corrente -->
        <name>0</name>
        <size>1</size>
        <type>N</type>
    </field>
    <field>
    <!-- agencia -->
        <name>0000</name>
        <size>4</size>
        <type>N</type>
    </field>
    <field>
    <!-- filler (4) -->
        <name> </name>
        <size>61</size>
        <type>N</type>
    </field>
    <field>
    <!-- quantidade de compromisso encontrados -->
        <name> </name> 
        <size>2</size>
        <type>N</type>
    </field>
    <field>
    <!-- tem anotacoes negativas (S/N/B) -->
        <name> </name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- anotacoes de cheques (S/N/B) -->
        <name> </name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- data da consulta -->
        <name> </name>
        <size>8</size>
        <type>S</type>
    </field>
    <field>
    <!-- hora da consulta -->
        <name> </name>
        <size>6</size>
        <type>S</type>
    </field>
    <field>
    <!-- total de registros -->
        <name> </name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
    <!-- quantidade de registros enviados por transmissao -->
        <name> </name>
        <size>4</size>
        <type>N</type>
    </field>
    <field>
    <!-- numero de controle de atualizacao das tabelas -->
        <name> </name>
        <size>4</size>
        <type>S</type>
    </field>
    <field>
    <!-- filler (5) -->
        <name> </name>
        <size>176</size>
        <type>S</type>
    </field>
    <field>
    <!-- acessou recheque online (S/N) -->
        <name>N</name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- tem ocorrencia de Recheque ultimo ano (S/N) -->
        <name>N</name>
        <size>1</size>
        <type>S</type>
    </field>
    <field>
    <!-- filler (6) -->
        <name> </name>
        <size>1</size>
        <type>S</type>
    </field>
</serasapf>

 

Propriedades Configuráveis do Acesso
  • As propriedades abaixo podem sofrer alterações, e essas podem ser feitas pelo site do Intellector (veja aqui); muita atenção no preenchimento dessas informações, pois elas definem o acesso ao conteúdo (informações) e, não de conexão ao host da SERASA.
  • Arquivo serasapf.properties

 

Bloco de código
languagehtml/xml
#Arquivo de properties para o SERASA PF
# $Revision: 1.2 $
#
# type S=string, N=numeric
#
# Informaçoes de Login no SERASA
serasa.login=00186487
serasa.login_size=8
serasa.login_type=N
serasa.password=11003344   
serasa.pass_size=8
serasa.pass_type=S
serasa.newpass= 
serasa.npass_size=8
serasa.npass_type=S


Preenchimento da HashMap de Entrada

  • Método de acesso no XML

Esse será o método usado pelo reflection da politica

<
Bloco de código
languagehtml/xml
!-- metodo de acesso para ser carregado no acesso       -->
<code name="br.com.tools.acessos.serasa.SerasaPF"/>

 

  • Sufixo para as variáveis internas da política

Será usada apenas pelo cliente e pela politica, mas deve ser informado.

 

Bloco de código
languagehtml/xml
<!-- esse deverah ser sufixo para ser acrescentado ao nome   -->
<!-- vindo da politica, entao irei buscar na hash da politica    -->
<!-- hash.getKey(cpf_serasa); um de/para para os elementos   -->
<nome_acesso>serasapf</nome_acesso>
  • ‘Somente com P006‘ – Opções de Consulta Cadastro Sintético (mínimo)
    1. Registros chave para ser informado na hashtable de entrada
      1. ‘CPF‘ – contém o CPF para consulta, sem “.” (ponto) ou “-” (hífen)

e.g. java code

 

 

Bloco de código
languagehtml/xml
serIn.put("CPF", "00000000191");

 

  • Arquivo XML

 

Bloco de código
languagehtml/xml
<!-- posso testar pelo valor obrigatorio dentro de cada     -->
<!-- acesso,  ele dever ser "CPF"                -->
<field description="CPF a ser consultado" type="String" format="">CPF</field>

 

  • ‘Com utilização do P005‘ – Parcelas com Cheque de Compromisso 

Chave na ‘HashMap‘ (default=false)

 

Bloco de código
languagehtml/xml
// deve ser informado; ele avisa true/false para a consulta ao P005
serIn.put("P005", "false");

 

    1. Registros chave para ser informado na hashtable de entrada
      1. ‘CMC7‘ (30 bytes) – contém o CMC7 do cheque
      2. ‘VLR_CHEQUE‘ – valor do cheque
      3. ‘VENC_CHEQUE‘ – data de vencimento do cheque
      4. ‘TIPO_MOV‘ – tipo de movimento (“I”=incluir cheque; “B”=baixar cheque; “E”=baixar cheque que terá novo cheque incluido na sequência; “C”=consultar cheque)
  • ‘xml‘ 
Bloco de código
languagehtml/xml
<!-- contem os dados necessarios para entrada no serasa PF       -->
<entrada>
    <!-- posso testar pelo valor obrigatorio dentro de cada     -->
    <!-- acesso,  ele dever ser "CPF"                            -->
    <field description="CPF a ser consultado" type="String" format="">CPF</field>
    <!-- no caso de ser "CPF", pode-se optar pelo protocolo  -->
    <!-- P005, entao  verifico se o dado abaixo(CMC7?) existe    -->
    <!-- como "true" ou "false", soh entao ele usa os dados      -->
    <field description="Indicação de uso da consulta P005: true/false" type="Boolean" format="">P005</field>
    <field description="CMC7" type="String" format="">CMC7</field>
    <field description="Valor de cheque consultado" type="Double" format="">VLR_CHEQUE</field>
    <!-- Data de vencimento do cheque; deverah vir AAAAMMDD      -->
    <field description="Data de vencimento do cheque; deverá ser AAAAMMDD" type="Date" format="yyyymmdd">VENC_CHEQUE</field>
    <!-- Tipo de movimento sao:                              -->
    <!-- "I"=incluir cheque;"B"=baixar cheque;"E"=baixar cheque -->
    <!-- que terah novo cheque incluido na sequencia;            -->
    <!-- "C"=consultar cheque                                    -->
    <!-- como defensive programing                               -->
    <field description="Tipo de movimento: I/B/E/C" type="String" format="">TIPO_MOV</field>
</entrada>

 

  • Exception‘ 

Bloco de código
languagehtml/xml
throw new LayoutException("Erro preenchendo HashMap " + this.toString());

 

 

Bloco de código
languagehtml/xml
Curiosidade: o CMC7 é composto pelas seguintes sequências:

a) código de compensação do banco

b) número da agência bancária

c) dígito módulo 10 dos campos

d) código da câmera de compensação

e) número do cheque

f) código de tipicação do documento (5, 6, 7 e 8)

g) digito módulo 10 dos campos banco e agência

h) número da conta corrente i) dígito módulo 10 do campo conta

 

 

Dica
'Contador’ – sempre existe um atributo no XML nomeado ’counter’ como indexador dos registros