Páginas filhas
  • SERASA Bureau

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Introdução do acesso SERASA Bureau

Registros disponíveis no Credit Bureau – B49C para Pessoas Físicas. A saída atual da lib (jar file) pode vir por uma Hashtable<K,V> (Key,Value) ou uma exceção, sendo esta um erro de infraestrutura, layout, configuração, etc. Para cada registro, há uma chave de acesso para os valores equivalentes, e, no caso de múltiplos registros, acrescenta-se um sufixo sequencial “‘_N+1‘”, e.g. para acessar o valor do segundo registro de ‘B358_DTOCORR_2‘;

...

O controle final da quantidade de registros se dará por outra chave, no caso ‘B358_NUMPEFIN‘, então,

...

podemos ter:

...

 

...


Bloco de código
languagejava
linenumberstrue
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
BUREAU 

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

BUREAU/

PJ

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‘):

 

Bloco de código
languagehtml/xml
linenumberstrue
-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…

deve ser utilizado: (e.g. /home/jboss/intellector)

 

Bloco de código
languagejava
linenumberstrue
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 
 
  • a SERASA.


Bloco de código
languagehtml/xml
linenumberstrue
# Arquivo de properties para o SERASA BUREAU
#

# 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.

Aviso
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.


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 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.
  • Solicite à Serasa Experian o Layout B49C.
  • Arquivo ‘layout_p002.xml‘ – Header do Regsitro P002 – Registros adicionais ao protocolo. - BPCP (Score SERASA) e CLC6 (Limite de Crédito)
Bloco de código
languagehtml/xml
linenumberstrue
<?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>BPCP</value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>
		<id>P002_CHAVE1</id>
		<value> </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>CLC6</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>


  • Arquivo ‘layout_p005.xml‘ – Header do Regsitro P005 – Parcelas com cheques de Compromisso.


Bloco de código
languagehtml/xml
linenumberstrue
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Layout de entrada para Pessoa FISICA p005 -->
<serasa-bureau>
	<field>
		<id>P005_REGISTRO</id>
		<value>P005</value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>
		<id>P005_CMC7</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P005_COMP_BANCO_DESTRINCHADO</id>
		<value> </value>
		<size>3</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_NUM_AGENC_DESTRINCHADO</id>
		<value> </value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_MODULO_10_DESTRINCHADO</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		
		<id>P005_COMP_AG_DESTRINCHADO</id>
		<value> </value>
		<size>3</size>
		<type>S</type>
	</field>
	<field>
		
		<id>P005_NUM_CH_DESTRINCHADO</id>
		<value> </value>
		<size>6</size>
		<type>S</type>
	</field>
	<field>
		
		<id>P005_TIPIFICA_DESTRINCHADO</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		
		<id>P005_MOD10_DESTRINCHADO</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		
		<id>P005_CONTA_DESTRINCHADO</id>
		<value> </value>
		<size>10</size>
		<type>S</type>
	</field>
	<field>
		<id>P005_MODULO_10_1_DESTRINCHADO</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P005_VALOR_CH1</id>
		<value> </value>
		<size>12</size>
		<type>N</type>
	</field>
	<field>
		<id>P005_VENC_CH1</id>
		<value> </value>
		<size>8</size>
		<type>S</type>
	</field>
	<field>
		<id>P005_TIPO_MOV</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_RES1</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_COMP_BANCO</id>
		<value> </value>
		<size>3</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_NUM_AGENC</id>
		<value> </value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_MODULO_10</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_COMP_AG</id>
		<value> </value>
		<size>3</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_NUM_CH</id>
		<value> </value>
		<size>6</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_TIPIFICA</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_MOD10</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_CONTA</id>
		<value> </value>
		<size>10</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_MODULO_10_1</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_VALOR_CH2</id>
		<value> </value>
		<size>12</size>
		<type>N</type>
	</field>
	<field>		
		<id>P005_VENC_CH2</id>
		<value> </value>
		<size>8</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_TIPO_MOV_1</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_PESQ_FAIXA</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>		
		<id>P005_RES2</id>
		<value> </value>
		<size>6</size>
		<type>S</type>
	</field>
</serasa-bureau>


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


Bloco de código
languagejava
linenumberstrue
<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Layout de entrada para Pessoa FISICA p006 -->
<serasa-bureau>
	<field>
		<!-- Registro sempre enviado no PF	 -->
		<id>P006_REGISTRO</id>
		<value>P006</value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_GRAFIAS</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_DET_GRAFIAS</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_RES_SINT</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_CONSULTAS</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_PARTICIPA</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_%</id>
		<value>99</value>
		<size>2</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_OCORREN</id>
		<value>99</value>
		<size>2</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_RES_NEGATIV</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_PENDENCIAS</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_DIVIDA_VENC</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_ACHEI_CCF</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_RECHEQUE</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_PROTESTO</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_ACAO_JUDIC</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_FALENCIA</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_RES1</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_HISTORICO</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_PREV_PG</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_COMPR_PREV</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_REFEREN</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_DOCUMENTOS</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>P006_RES2</id>
		<value> </value>
		<size>88</size>
		<type>S</type>
	</field>	
</serasa-bureau>


  • Arquivo layoutPF_b49c.xml - Header transacional para a consulta Pessoa Física.
Bloco de código
languagehtml/xml
linenumberstrue
<?xml version="1.0" encoding="ISO-8859-1"?>
<serasa-bureau>

	<!-- Definição do bloco B49C -->
	<!-- id: referência da tag -->
	<!-- value: valor default    -->
	<!-- size: tamanho do valor  -->
	<!-- type: tipo do valor     -->
	
	<field>
		<id>B49C_REGISTRO</id>
		<value>B49C</value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_ESTACAO</id>
		<value> </value>
		<size>6</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_NUM_DOC</id>
		<value> </value>
		<size>15</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_TIPO_PESSOA</id>	
		<value>F</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_BASE_CONS</id>	
		<value>C</value>
		<size>6</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_MODALIDADE</id>	
		<value>FI</value>
		<size>2</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_VLR_CONSUL</id>	
		<value>8888888</value>
		<size>7</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_CENTRO_CUST</id>
		<value> </value>
		<size>12</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_CODIFICADO</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_QTD_REG</id>
		<value>99</value>
		<size>2</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_CONVERSA</id>
		<value>S</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_FUNCAO</id>
		<value>INI</value>
		<size>3</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_TP_CONSULTA</id>
		<value>A</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_ATUALIZA</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_IDENT_TERM</id>
		<value> </value>
		<size>18</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_PASSA_REG</id>
		<value> </value>
		<size>10</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_DELTS</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_COBRA</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_PASSA</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_CONS_COLLEC</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_LOCALIZADOR</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_DOC_CREDOR</id>
		<value> </value>
		<size>9</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_QTDE_CHEQUE</id>
		<value> </value>
		<size>2</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_END_TEL</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_RES1</id>
		<value> </value>
		<size>8</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_CTA_CORRENT</id>
		<value>0000000000</value>
		<size>10</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_DG_CTA_CORR</id>
		<value>0</value>
		<size>1</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_AGENCIA</id>
		<value>0000</value>
		<size>4</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_ALERTA</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_LOGON</id>
		<value> </value>
		<size>8</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_RES2</id>
		<value> </value>
		<size>1</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_RESPOSTA</id>
		<value> </value>
		<size>1</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_PERIODO_COMPRO</id>
		<value>9</value>
		<size>1</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_PERIODO_ENDERECO</id>
		<value>9</value>
		<size>1</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_RES3</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_DT_QUALITY</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_PRODO_ORIGEM</id>
		<value> </value>
		<size>2</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_TRANORIGEM</id>
		<value> </value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_CONSULTANTE</id>
		<value> </value>
		<size>15</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_RES4</id>
		<value> </value>
		<size>25</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_QTD_COMPR</id>
		<value> </value>
		<size>2</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_NEGATIVOS</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_RES4</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_DATA_CONSUL</id>
		<value> </value>
		<size>8</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_HORA_CONSUL</id>
		<value> </value>
		<size>6</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_TOTAL_REG</id>
		<value> </value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_QTD_REG1</id>
		<value> </value>
		<size>4</size>
		<type>N</type>
	</field>
	<field>
		<id>B49C_COD_TAB</id>
		<value> </value>
		<size>4</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_RES5</id>
		<value> </value>
		<size>176</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_ACESS_RECHQ</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_TEM_OCOR_RECHQ</id>
		<value>N</value>
		<size>1</size>
		<type>S</type>
	</field>
	<field>
		<id>B49C_RES6</id>
		<value> </value>
		<size>1</size>
		<type>S</type>
	</field> 

</serasa-bureau>



Propriedades Configuráveis do Acesso
 
  • As propriedades abaixo podem sofrer alterações, e essas podem ser feitas pelo site do Intellector : 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
linenumberstrue
#Arquivo de properties para o SERASA BUREAU
#
# 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
linenumberstrue
<!-- metodo de acesso para ser carregado no acesso       -->
<code name="br.com.tools.acessos.serasa.SerasaBureau"/>


  • 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
linenumberstrue
<!-- 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>serasa_bureau</nome_acesso>

  • ‘Somente com P006‘ – Opções de Consulta Cadastro Sintético (mínimo)
    1. Registros chave para ser informado na hashtable de entrada
      • ‘CPF‘ – contém o CPF para consulta, sem “.” (ponto) ou “-” (hífen)
        e.g. java code.


Bloco de código
languagejava
linenumberstrue
serIn.put("B49C_NUM_DOC", "00000000191");


  1. Arquivo XML                   


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


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

Chave na ‘HashMap‘ (default=false).           


Bloco de código
languagehtml/xml
linenumberstrue
// 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
linenumberstrue
<!-- 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>
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 tipificaçã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


Exception

Bloco de código
languagehtml/xml
linenumberstrue
throw new LayoutException("Erro preenchendo HashMap " + this.toString());
Dica
'Contador’ – sempre existe um atributo no XML nomeado ’counter’ como indexador dos registros


Dados de Entrada do Acesso
  • Para o preenchimento da HashMap de entrada, é imprescindível entender o layout B49C e, devem conter as seguintes chaves de entrada (UPPERCASE); cada campo contém os seguintes dados, sendo eles validados pelo Compilador:
    1. ‘description‘ – Propriedade da tag “field”, contem a descrição do campo
    2. ‘type‘ –           Propriedade da tag “field”, define o tipo de dado Pure Java, como StringIntegerDoubleDate e Boolean.
    3. ‘format‘ –        Propriedade da tag “field”, contem o formato do dado; atualmente, só os dados de datas tem esse campo preenchido.
    4. ‘field‘ –           Tag relativa ao nome do campo, escrito em maiúsculas (não necessariamente), como por ex. ‘TPRESPOSTA‘ .


Bloco de código
languagehtml/xml
linenumberstrue
	<entrada>
		<!-- posso testar pelo valor obrigatorio dentro de cada -->
		<!-- acesso, ele dever ser "CPF" -->
		<field description="CPF a ser consultado" type="String" format="">B49C_NUM_DOC</field>
		<field description="Modalidade do Negócio" type="String" format="">B49C_MODALIDADE</field>
		<field description="Periodo de visualização de compromissos" type="String" format="">B49C_PERIODO_COMPRO</field>
		<field description="Periodo de visualização de endereços" type="String" format="">B49C_PERIODO_ENDERECO</field>

		<field description="Outras opções de consulta" type="Integer" format="">FL_HABILITA_P002</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="Habilita registro P006 (1 - sim, 0 - não)" type="Integer" format="">FL_HABILITA_P005</field>
		<field description="CMC7" type="String" format="">P005_CMC7</field>
		<field description="Valor de cheque consultado" type="Double" format="">P005_VALOR_CH1</field>
		<!-- Data de vencimento do cheque; deverah vir AAAAMMDD -->
		<field description="Data de vencimento do cheque; deverá ser AAAAMMDD" type="Date" format="yyyyMMdd">P005_VENC_CH1</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="">P005_TIPO_MOV</field>

		<!-- Registro opcional - Será habilitado a validação e envio se FL_HABILITA_P006 for informado -->
		<field description="Habilita registro P006 (1 - sim, 0 - não)" type="Integer" format="">FL_HABILITA_P006</field>
		<field description="Quer resumo de cadastro Sintético? (S - sim, N - não)" type="String" format="">P006_RES_SINT</field>
		<field description="Quer detalhe de registro de consultas? (S - sim, N - não)" type="String" format="">P006_CONSULTAS</field>
		<field description="Quer participações societárias do CPF? (S - sim, N - não)" type="String" format="">P006_PARTICIPA</field>
		<field description="Quer resumo de anotação negativa? (S - sim, N - não)" type="String" format="">P006_RES_NEGATIV</field>
		<field description="Quer detalhe de pendências de pagamentos? (S - sim, N - não)" type="String" format="">P006_PENDENCIAS</field>
		<field description="Quer detalhe de dívida vencida? (S - sim, N - não)" type="String" format="">P006_DIVIDA_VENC</field>
		<field description="Quer detalhe de cheques sem fundos? (S - sim, N - não)" type="String" format="">P006_ACHEI_CCF</field>
		<field description="Quer detalhe de cheques sustados? (S - sim, N - não)" type="String" format="">P006_RECHEQUE</field>
		<field description="Quer detalhe de protestos? (S - sim, N - não)" type="String" format="">P006_PROTESTO</field>
		<field description="Quer detalhe de ações judiciais? (S - sim, N - não)" type="String" format="">P006_ACAO_JUDIC</field>
		<field description="Quer detalhe de falência? (S - sim, N - não)" type="String" format="">P006_FALENCIA</field>
		
		<!-- B141  - como "true" ou "false", soh entao ele usa os dados para enviar o Gerencie/Monitore carteira PF -->
		<field description="Habilita registro B141 (1 - sim, 0 - não)" type="Integer" format="">FL_HABILITA_B141</field>
		<field description="PERIODO QUANTIDADE MESES - 00 INDETERMINADO" type="Integer" format="">B141_QTDE_MESES_MONITORAMENTO</field>
		<field description="MONITORA CADASTRO? (S - sim, N - não)" type="String" format="">B141_MONITORA_CADASTRO</field>
		<field description="MONITORA DADOS COMPORTAMENTAIS? (S - sim, N - não)" type="String" format="">B141_MONITORA_POS</field>
		<field description="MONITORA NEGATIVO? (S - sim, N - não)" type="String" format="">B141_MONITORA_NEG</field>
		<field description="MONITORA SCORING? (S - sim, N - não)" type="String" format="">B141_MONITORA_SCO</field>
		<field description="MONITORA PASSASGEM RECHEQUE? (S - sim, N - não)" type="String" format="">B141_MONITORA_PAS_CH</field>
		<field description="MONITORA PASSASGEM CREDITO? (S - sim, N - não)" type="String" format="">B141_MONITORA_PAS_CR</field>
		<field description="TIPO DE MOVIMENTO (I=Inclusão,A=Alteração, E=Exclusão)" type="String" format="">B141_TIPO_MOVIMENTO</field>
		<field description="MONITORS ADMINISTRA CARTEIRA? (S - sim, N - não)" type="String" format="">B141_MONITORA_ADM_CARTEIRA</field>
		<field description="MONITORA CONFIRMEI? (S - sim, N - não)" type="String" format="">B141_MONITORA_CONFIRMEI</field>
		<field description="MONITORA PARTICIPACAO SOCIETARIA? (S - sim, N - não)" type="String" format="">B141_MONITORA_PARTICIPACAO_SOCIETARIA</field>
		<field description="MONITORA OBITO? (S - sim, N - não)" type="String" format="">B141_MONITORA_OBITO</field>
		<field description="MONITORA BASE DE INCONSISTENCIA? (S - sim, N - não)" type="String" format="">B141_MONITORA_BASE_INCONSISTENCIA</field>
		
		<field description="GRUPO EMAIL" type="String" format="">B141_GRUPO_EMAIL</field>
		<field description="REFERENCIA" type="String" format="">B141_REFERENCIA</field>
		<field description="PERFIL" type="String" format="">B141_PERFIL</field>

		<!-- B001  - Gerencie/Monitore carteira PF -->
		<field description="Grafia B001 - Nome " type="String" format="">B001_GRAFIA_NOME</field>

		
	</entrada>


Resposta da Consulta

Dados de Saída do Acessos
 
    • A HasMap de saída dos acessos, seguem o mesmo princípio da entrada, exceto pelo fato de que os dados de um determinado registros, podem se repetir, nesse caso, há a presença de um ‘contador‘ para um eventual looping de tratamento pelas aplicações clientes. Cada campo contém os seguintes dados, sendo eles validados pelo Compilador:
    1. ‘description‘ – Propriedade da tag “register”, contem a descrição do campo
    2. ‘type‘ –           Propriedade da tag “register”, define o tipo de dado Pure Java, como StringIntegerDoubleDate e Boolean.
    3. ‘format‘ –        Propriedade da tag “register”, contem o formato do dado; atualmente, só os dados de datas tem esse campo preenchido.
    4. ‘register‘ –      Tag relativa ao nome do campo, escrito em maiúsculas (não necessariamente), como por ex. ‘R104_DATAFUNDACAO_
  • Abaixo o XML de saída com o ‘contador‘.
  • Exemplo ‘com‘ um contador… observe que ‘counter=B002_NUMREGISTROS‘ indica quantos registros, se existirem, ‘B002‘ foram retornados pelo SERASA.


Bloco de código
languagehtml/xml
linenumberstrue
<!-- Obs.: quando counter=alguma_coisa, entao todo o bloco       -->
<!-- abaixo sofrerah um looping baseado nesse counter            -->
<saida id="B002" counter="B002_NUMREGISTROS">
		<register description="Data de atualização do registro (AAAAMMDD)" type="Date" format="yyyyMMdd">B002_DTATUALIZA_</register>
		<register description="Data Nascimento (AAAAMMDD)" type="Date" format="yyyyMMdd">B002_DATANASC_</register>
		<register description="Nome da mãe" type="String" format="">B002_NOMEMAE_</register>
		<register description="Sexo" type="String" format="">B002_SEXO_</register>
		<register description="Tipo do documento" type="String" format="">B002_TIPODOC_</register>
		<register description="Número do documento" type="String" format="">B002_NUMDOC_</register>
		<register description="Órgão emissor do documento de identidade" type="String" format="">B002_ORGAOEMISS_</register>
		<register description="Data da última alteraçãocadastral(AAAAMMDD)" type="Date" format="yyyyMMdd">B002_DATAEMISS_</register>
		<register description="UF da emissão" type="String" format="">B002_UFEMISSOR_</register>
	</saida>


  • Exemplo ‘com‘ um contador explicitamente informando o numero MÁXIMO de registros desejados no retorno da consulta.


Bloco de código
languagehtml/xml
linenumberstrue
<!-- Obs.: quando counter=alguma_coisa, entao todo o bloco       -->
<!-- abaixo sofrerah um looping baseado nesse counter            -->
<saida id="B002" counter="5" >
		<register description="Data de atualização do registro (AAAAMMDD)" type="Date" format="yyyyMMdd">B002_DTATUALIZA_</register>
		<register description="Data Nascimento (AAAAMMDD)" type="Date" format="yyyyMMdd">B002_DATANASC_</register>
		<register description="Nome da mãe" type="String" format="">B002_NOMEMAE_</register>
		<register description="Sexo" type="String" format="">B002_SEXO_</register>
		<register description="Tipo do documento" type="String" format="">B002_TIPODOC_</register>
		<register description="Número do documento" type="String" format="">B002_NUMDOC_</register>
		<register description="Órgão emissor do documento de identidade" type="String" format="">B002_ORGAOEMISS_</register>
		<register description="Data da última alteraçãocadastral(AAAAMMDD)" type="Date" format="yyyyMMdd">B002_DATAEMISS_</register>
		<register description="UF da emissão" type="String" format="">B002_UFEMISSOR_</register>
</saida>


  • Exemplo ‘sem‘ um contador… neste caso, ‘counter=”"‘ indica que somente um registro, se existir, foi retornado pela SERASA.


Bloco de código
languagehtml/xml
linenumberstrue
<saida id="B280" counter="" >
	<register description="Descrição do Score" type="String" format="">B280_DESCSCORE</register>
	<register description="Pontos no Score" type="String" format="">B280_PONTSCORE</register>
	<register description="Range do Score" type="String" format="">B280_RANGESCORE</register>
	<register description="Taxa do Score" type="String" format="">B280_TAXASCORE</register>
	<register description="Mensagem do Score" type="String" format="">B280_MSGSCORE</register>
	<register description="Código da mensagem do Score" type="String" format="">B280_CODMSGSCORE</register>
</saida>
Dica
TODOS os registros seguem a mesma lógica e, o ’XML completo com todos os registros do acesso’, importado pelo Compilador, pode ser baixado aqui.

Registros Disponíveis Pessoa Física
 
  • Todos os registros contém seus respectivos espaços, se houverem; não existe “trim()” nos blocos lidos.
  • Registro B001 – Identificação
    1. n = ‘B001_QTDCPFGRAFIA‘ – contador da quantidade de grafias por CPF consultado (deverá ser controle de loop)
  • Registro B002 – Cadastro Sintético – BX14
    1. n = ‘B002_NUMREGISTROS
  • Registro B003 – Cadastro Sintético – BX14
    1. n = ‘B003_NUMREGISTROS
  • Registro B004 – Cadastro Sintético – BX14
    1. n = ‘B004_NUMREGISTROS
  • Registro B005 – Cadastro Sintético – BX14
  • Registro B006 – Cadastro Sintético – BX14
    1. n = ‘B006_NUMREGISTROS
  • Registro B012 – Referências Bancárias – BX64
    1. indexador = ‘B012_NUMREFERENCIAS
  • Registro B013 – Referências Cheque Especial – BX64
    1. n = ‘B013_NUMREFERENCIAS
  • Registro B231 – Compromissos – Previsão Pagamento – BX32
    1. n = ‘B231_NUMCOMPROMISSOS
  • Registro B232 – Compromissos – BX34
    1. n = ‘B232_NUMCOMPROMISSOS
  • Registro B233 – Compromissos – BX34
    1. n = ‘B233_NUMCOMPROMISSOS
  • Registro B234 – Detalhe de parcelas – BX34
    1. n = ‘B234_NUMPARCELAS
  • Registro B280 – Cálculo de Scoring
  • Registro B352 – Participação Societária
    1. n = ‘B352_NUMPARTICIP‘ – Contador do número de participações;
  • Registro B353 – RESUMO – Registro de Consultas
  • Registro B354 – Detalhe Registro da Consulta – BX16
    1. n = ‘B354_NUMCONSULTA‘ – contador da quantidade de detalhes na consulta
    2. processo de somatoria das datas
      1. B354_MENORDTCONSULTA – contém a menor data nas consultas
      2. B354_MAIORDTCONSULTA – contem a maior data nas consultas
  • Registro B355 – Detalhe de Contumácia – BX18
    1. n = ‘B355_NUMOCORR‘ – contador do número de ocorrências de contumácia
  • Registro B356 – Detalhe de Cheques Sustados – BX18
    1. Usado para consulta de Pessoa Fisica e Juridica
    1. n = ‘B356_NUMCHEQUESSUSTADOS‘ – Contador de número de detalhes de cheques sustados
    2. contém o registro atual da menor data e maior data dos registros; como o formato da data eh YYYYMMDDHHMM, pode-se compará-la diretamente
      1. B356_MENORDTCHQSUSTADO
      2. B356_MAIORDTCHQSUSTADO
  • Registro B357 – Resumo Pendência de Pagamento – BX20
    1. n = ‘B357_NUMPENDENCIAS‘ – contador do número de pendências de pagamento
  • Registro B358 – Detalhe Pendência de Pagamento – BP22
    1. n = ‘B358_NUMPEFIN‘ – contador das ocorrências de PEFIN
    2. contém o registro atual da menor data e maior data dos registros;
      1. B358_MENORDTPENDPAG
      2. B358_MAIORDTPENDPAG
  • Registro B359 – Resumo de Cheque sem Fundo – BX20
  • Registro B360 – Detalhe de Cheque sem Fundos – BP24
    1. n = ‘B360_NUMCHQSEMFUNDOS‘ – contador do número de ocorrências de cheques sem fundo
    2. os registros abaixo contém o registro atual da menor data e maior data dos registros de cheques sem fundos
      1. B360_MENORDTSEMFUNDOS
      2. B360_MAIORDTSEMFUNDOS
  • Registro B361 – Resumo Ocorrências de Protestos
  • Registro B362 – Detalhe Protesto – BP26
    1. n = ‘B362_NUMPROTESTOS‘ – contador do número de protestos
  • Regsitro B363 – Resumo de Ações Judiciais
  • Registro B364 – Detalhe Ação Judicial – BP28
    1. n = ‘B364_NUMACAOJUD‘ – Contador do numero de ocorências de Ações Judiciais
  • Registro B365 – Resumo Participações em Falências – BP30
  • Registro B366 – Detalhe Participação em Falências – BP30
    1. n = ‘B366_NUMFALENCIAS‘ – contador de ocorrências do número de falências
  • Registro B367 – Resumo Convem Devedores – BX20
  • Registro B368 – Detalhe Divida Vencida – BP23
    1. n = ‘B368_NUMDIVIDAS‘ – contador do número de ocorrências de dívidas vencidas

    2. contém o registro atual da menor data e maior data dos registros de dívida vencida
      1. B368_MENORDTDIVIDA
      2. B368_MAIORDTDIVIDA
  • Registro B369 – Registro de Endereços e Telefones Alternativos (tipo 0, 1 e 2)
  • Registro B370 – Registro de Endereços e Telefones Alternativos (tipo 1 e 2)
  • Registro B373 – Registro com Dados do Recheque Online
  • Registro B381 – Grafias
    1. n = ‘B381_NUMSITUACAO‘ – contador do número de grafias
  • Registro F900 – Cálculo de Limites e Títulos em Cobrança
    1. registroF900() * IMPLEMENTADO LIMITE DE CRÉDITO - CLC6*
    • Variáveis CLC6

      VariávelDescriçãoTipoFormato
      F900_CLC6_CD_FEAT_
      Código FeatureString
      F900_CLC6_VLR_LIMCRED_Valor Limite de CréditoDouble
      F900_CLC6_MSG_LIMCRED_Mensagem de Limite de creditoString
  • Registro B389
    1. n = ‘B389_NUMREFIN‘ – número de regsitros disponíveis