- A configuração dos acessos externos SERASA RELATO 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‘):
 
-Dserasa-relato.datadir=/home/jboss/intellector -Dlog4j.configuration=/home/jboss/intellector -Daccess.ssl=/home/jboss/intellector/ssl
Para o uso direto em testes, deve usaríamos(e.g. /home/jboss/intellector).
java -jar -cp. -Dserasa-relato.datadir=/home/jboss/intellector SerasaRelato.jar
‘https.properties‘ – Arquivos de propriedades do certificado e conexão ‘host-to-host‘ com a SERASA.
# Arquivo de properties para o SERASA RELATO # # Informações de autenticacao e certificados do serasa user.url=sitenethomologa.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.
Configurando SSL e HTTPS: sem Certificado ’não funciona’ e, entenda bem o conceito, leia sobre isso. Esse certificado é fornecido pela própria entidade, tipo host<->host.
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.
‘layout_p002.xml‘ – Header do Registro P002 – IP20(RELATO)/P8GL.
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- layout_p002.xml - Registro P002 - Outras Opcoes de Consulta Pessoa Juridica --> <serasa-relato> <field> <id>P002_REGISTRO</id> <value>P002</value> <size>4</size> <type>S</type> </field> <field> <id>P002_COD1</id> <value>IP20</value> <size>4</size> <type>S</type> </field> <field> <id>P002_CHAVE1</id> <value>Q</value> <size>21</size> <type>S</type> <!-- chave de acesso para consultar a 1a opcao se necessario --> </field> <field> <!-- codigo da 2a opcao para consultar outro produto, feature ou base (ver tabela 30 --> <id>P002_COD2</id> <value>P8GL</value> <size>4</size> <type>S</type> </field> <field> <!-- chave de acesso para consultar a 2a opcao se necessario --> <id>P002_CHAVE2</id> <value> </value> <size>21</size> <type>S</type> </field> <field> <!-- codigo da 3a opcao para consultar outro produto, feature ou base (ver tabela 30 --> <id>P002_COD3</id> <value> </value> <size>4</size> <type>S</type> </field> <field> <!-- chave de acesso para consultar a 3a opcao se necessario --> <id>P002_CHAVE3</id> <value> </value> <size>21</size> <type>S</type> </field> <field> <!-- codigo da 4a opcao para consultar outro produto, feature ou base (ver tabela 30 --> <id>P002_COD4</id> <value> </value> <size>4</size> <type>S</type> </field> <field> <!-- chave de acesso para consultar a 4a opcao se necessario --> <id>P002_CHAVE4</id> <value> </value> <size>21</size> <type>S</type> </field> <field> <id>P002_FILLER</id> <value> </value> <size>11</size> <type>S</type> </field> </serasa-relato>
<?xml version="1.0" encoding="ISO-8859-1"?> 
<serasapj> 
    <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>J</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> 
</serasapj>
# Arquivo de properties para o SERASA RELATO # # 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
Esse será o método usado pelo reflection da politica.
<!-- metodo de acesso para ser carregado no acesso --> <code name="br.com.tools.acessos.serasa.SerasaRelato"/>
<!-- esse deverah ser sufixo para ser acrescentado ao nome --> <!-- vindo da politica, entao irei buscar na hash da politica --> <!-- hash.getKey(cnpj_serasa); um de/para para os elementos --> <nome_acesso>serasa_relato</nome_acesso>
Exemplo:
serIn.put("B49C_NUM_DOC", "0000000000191");
Exception:
throw new LayoutException("Erro preenchendo HashMap " + this.toString());
<!-- contem os dados necessarios para entrada no serasa PJ       -->
<entrada> 
    <!-- posso testar pelo valor obrigatorio dentro de cada     -->
    <!-- acesso,  ele dever ser "CNPJ"                           -->
    <field description="CNPJ da empresa consultada" type="String" format="">CNPJ</field> 
</entrada>
<!-- Obs.: quando counter=alguma_coisa, entao todo o bloco       --> 
<!-- abaixo sofrerah um looping baseado nesse counter            --> 
<saida id="R104" counter="R104_NUMRELAT" >
    <register description="Data da Fundação" type="Date" format="yyyymmdd">R104_DATAFUNDACAO_</register>
    <register description="Data do CNPJ" type="Date" format="yyyymmdd">R104_DATACNPJ_</register>
    <register description="Número de Filiais" type="String" format="">R104_NUMEROFILIAIS_</register>
    <register description="Código SERASA" type="String" format="">R104_CODIGOSERASA_</register>
</saida>
<saida id="R203" counter="" > 
     <register description="Descrição do Período" type="String" format="">R203_DESCREG</register> 
     <register description="Quantidade do período" type="String" format="">R203_QTDPERIODO</register> 
     <register description="Percentual do Período" type="String" format="">R203_PERPERIODO</register> 
</saida>
Variáveis
| Variável | Descrição | Tipo | Formato | 
|---|---|---|---|
| R430_SUBTPREG_ | Subtipo do registro | String | |
| R430_DTCALCLIM_ | Data cálculo limite crédito | Date | yyyyMMdd | 
| R430_HRCALCLIM_ | Hora cálculo limite crédito | Integer | |
| R430_VLCALCLIM_ | Valor cálculo limite crédito | Double | |
| R430_OBSERV_ | Observação | String | 
A variável abaixo deverá ser preenchida com total valor, somente se a discriminação for ’PROTESTO’; caso contrário, virá ’zera