Objetivo

Esse acesso permite que se consulte o CDL-BH trazendo dados pessoais e fazendo uma análise de risco.

Registro
  • “SPC100″ – Solicitação de Consulta: permite solicitar ao SPC-BRASIL as consultas SPC Mix (Spc+Cheque)
Configurando o acesso

Para a execução desse acesso externo a partir da linha de comando, deve-se informar inicialmente, por indicação à JVM, o path onde é encontrado o arquivo de propriedades e o arquivo de configuração do log4j.

A linha de comando para a execução do acesso é:

 

java -Dlog4j.configuration=log4j.properties -Dcdl-bh.datadir=/Tools/ws_acessos_externos/project-cdl-bh -jar poject-cdl-bh.jar
Usando a execução acima, não esqueça de colocar no CLASSPATH todas as dependências.
Propriedades do acesso

Inicialmente o Arquivo de Propriedade 'cdlbh.properties‘ contido dentro do ‘.jar‘ do arquivo já está configurado corretamente, porém essas informações podem ser alteradas pelo órgão.

Conteúdo inicial do arquivo:

 

##listar o arquivo de propriedades com os dados que serão consultados 
#cdlbh.ip=200.189.1.62
#cdlbh.porta=3339
cdlbh.ip=200.189.1.62
cdlbh.porta=28001
# timeout do socket (da conexao) em milisegundos
cdlbh.socket_timeout=30000
  
##Configuracoes do acesso
cdlbh.codtransacao=SPC100
cdlbh.codestacao=
cdlbh.versao=011
cdlbh.meioacesso=20
cdlbh.codoperador=0001080074
cdlbh.senha=02022012
cdlbh.codproduto=03
cdlbh.tpresposta=A

 

Onde as Propriedades representam:

  • cdlbh.ip = IP que será configurado para acessar o órgão
  • cdlbh.porta = porta que será utilizada para o acesso
  • cdlbh.codestacao = Código que será utilizado para especificar o serviço utilizado
  • cdlbh.versao = versão do serviço utilizado
  • cdlbh.meioacesso = Meio de acesso. Informado pelo SPC Brasil
  • cdlbh.codoperador = Código do operador que acessará o órgão
  • cdlbh.senha = Senha do operador
  • cdlbh.codproduto = Código do produto que será utilizado. (Produto do SPC-BRASIL)
  • cdlbh.tpresposta = Tipo de resposta (A – Analítica ou S – Sintética ) 

As duas Propriedade IP e Porta representam o meio de acesso ao Órgão.

 

Entrada e Saída do Acesso

Variáveis de Entrada
 
  • TPDOCUMENTO – Tipo de Documento (1 – CPF ou 2 – CNPJ)
  • RG – RG do cliente consultado
  • ORIGEMCHEQUE – Tipo de entrada dos dados do Cheque (C – Dados CMC7 D – Dados do Cheque)
  • CODBANCO – Codigo do banco a ser consultado
  • CODAGENCIA – Codigo da agencia a ser consultada
  • NUMCC – Numero da conta corrente a ser consultada
  • DIGITOCC – Digito da Conta corrente a ser consultada
  • NUMCHEQUEINICIAL- Numero do primeiro cheque as ser consultado
  • DIGITOCHEQUEINICIAL – Digito do primeiro cheque a ser consultado
  • CMC7 – CMC7 do cheque inicial
  • QUANTCHEQUES – Quantidade de Cheques a serem consultados sequencialmente
  • VALORGARANTIA – Valor da Garantia/Entrada
  • TPCREDITO – Utilizado para registro de Credito Concedido
  • INTERVALOPARCELAS – Intervalo entre as parcelas
  • DTVENCIMENTOPRIMEIRAPARCELA – Data de vencimento da 1. Parcela / Data deposito (Garantia de cheque)
  • QTPARCELAS – Quantidade de parcelas/cheques
  • VALORTOTALOPERACAO – Valor Total da Compra ou da Operação
  • CEPORIGEM – CEP de origem da consulta
  • DDD – DDD Telefone a ser consultado
  • TELEFONE – Numero do Telefone a ser consultado
  • DTABERTURACC – Data Abertura da Conta Corrente
  • PRACACOMPENSACAOCHEQUE – Praça Compensação do cheque
  • NUMAUTORIZACAOCHEQUE – Numero da autorização da Garantia de Cheque
  • CODCANCELAMENTOCHEQUE – Código do motivo de cancelamento da Garantia de Cheque

Resposta da Consulta

Código de Serviço 05
 
  • Indica que a descrição da base se encontra indisponível.
    1. ‘COD05‘: TRATADO POR EXCEÇÃO DE INFRAESTRUTURA
Código de Serviço 99
 
  • Mensagem de Erro
    • ‘COD99‘: TRATADO POR EXCEÇÃO DE INFRAESTRUTURA
  • Código de erro =
    1. 01 – String de Consulta Inválida.
    2. 02 – Acesso não permitido.
    3. 03 – Erro na Consulta ao Produto.
    4. 04 – Erro na formatação da resposta.
    5. 05 – Nova senha é de fácil dedução. Senha não alterada.
    6. 06 – Banco Inválido.
    7. 07 – Conta corrente ou dígito inválido.
    8. 08 – Problema na inclusão do Crédito Concedido.
    9. 09 – Número de autorização de garantia inexistente.
    10. 10 – Garantia já cancelada.
    11. 11 – Código de motivo de cancelamento inexistente.
    12. 12 – Cancelamento de garantia não permitido.
    13. 13 – Opção não disponível para esse operador.
    14. 14 – Operador Bloqueado. Excesso tentativa senha inválida
    15. 70 – Cheque ou digito inválido
    16. 71 – Agencia inválida
    17. 72 – DDD inválido
    18. 73 – Telefone inválido
    19. 74 – DDD não informado
    20. 75 – Telefone não informado
    21. 76 – Banco não informado
    22. 77 – Agencia não informada
    23. 78 – Conta corrente não informada
    24. 79 – Cheque inicial não informado
    25. 80 – CMC7 Invalido
    26. 81 – Conta Corrente pertence a outro CPF/CNPJ
Registros Disponíveis
 
  • 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. ‘REG01_NOME‘.

  • Abaixo o XML de saída com o ‘contador‘.
  • Exemplo ‘com‘ um contador… observe que ‘counter=REG86_NUMOCORRENCIAS‘ indica quantos registros, se existirem, ‘REG86‘ foram retornados pelo CDL-BH. 

 

<saida id="REG86" counter="REG86_NUMOCORRENCIAS" >
    <register description="Codigo de servico" type="String" format="">REG86_CODSERVICO_</register>
    <register description="Endereco" type="String" format="">REG86_ENDERECO_</register>
    <register description="Complemento" type="String" format="">REG86_COMPLEMENTO_</register>
    <register description="Bairro" type="String" format="">REG86_BAIRRO_</register>
    <register description="Cidade" type="String" format="">REG86_CIDADE_</register>
    <register description="CEP" type="String" format="">REG86_CEP_</register>
    <register description="UF" type="String" format="">   REG86_UF_</register>
</saida>

 

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

 

<saida id="REG80" counter="" >
        <register description="Codigo de servico" type="String" format="">REG8O_CODSERVICO</register>
        <register description="Nome do Assinante" type="String" format="">REG8O_ASSINANTE</register>
        <register description="Tipo de Logradouro" type="String" format="">REG8O_TPLOGRADOURO</register>
        <register description="Endereco" type="String" format="">REG8O_ENDERECO</register>
        <register description="Numero" type="String" format="">REG8O_NUMERO</register>
        <register description="Cidade" type="String" format="">REG8O_CIDADE</register>
        <register description="Bairro" type="String" format="">REG8O_BAIRRO</register>
        <register description="CEP" type="String" format="">REG8O_CEP</register>
        <register description="UF" type="String" format="">REG8O_UF</register>
</saida>

 

  • ‘Código de serviço 06‘ – Resposta de Grafia PJ.
  • ‘Código de serviço 10‘ – Resposta de SPC.
    1. n = REG10_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 20‘ – Resposta de Cheque.
    1. n = REG20_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 25‘ – Resposta de Banco, Agencia, Conta Corrente com Documento Diferente do Consultado.
    1. n = REG25_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 26‘ – Resposta de Dados da Agência Bancária do Cheque Consultado.
    1. n = REG26_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 27‘ – Resposta de informação on-line da Instituição Financeira – mensagem.
    1. n = REG27_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 28‘ – Resposta de informação on-line da Instituição Financeira – Cheque Sustado.
    1. n = REG28_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 30‘ – Resposta de Protestos.
    1. n = REG30_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 40‘ – Resposta de Ações.
    1. n = REG40_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 50‘ – Resposta de Credito Concedido.
    1. n = REG50_NUMCONSULTAS – contador do número de ocorrências
  • ‘Código de serviço 60‘ – Resposta de Alerta
    1. n = REG60_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 70‘ – Resposta de Consultas Realizadas (Passagens).
    1. n = REG70_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 80‘ – Resposta de Dados Telefônicos.
    1. n = REG80_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 84‘ – Resposta de Telefones Vinculados ao Documento Consultado.
    1. n = REG84_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 85‘ – Resposta de Dados Telefônicos Informados Anteriormente para o documento consultado.
    1. n = REG85_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 86‘ – Resposta de Dados de Últimos Endereços Informados para o documento consultado.
    1. n = REG86_NUMCONSULTAS – contador do número de ocorrências
  • ‘Código de serviço 88‘ – Resposta de Contra-Ordem a Cheques com Agências Diferentes da Consultada.
    1. n = REG88_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 89‘ – Resposta de Contra-Ordem a Cheques com Agência/Conta Diferentes da Consultada.
    1. n = REG89_NUMCONSULTAS – contador do número de ocorrências
  • ‘Código de serviço 90‘ – Resposta de Contra-Ordem a Cheques com Documentos Diferente do Consultado.
    1. n = REG90_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 92‘ – Resposta de Cheque Sustado p/Motivo 21 => Contumácia – máximo de 10 ocorrências Esta informação não é desabonadora ao cliente.
    1. n = REG92_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 95‘ – Resposta de Síntese Cadastral.
  • ‘Código de serviço 96‘ – Sócios Proprietários da Pessoa Jurídica.
    1. n = REG96_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 97‘ – Participação Societária da Pessoa Física.
    1. n = REG97_NUMCONSULTAS – contador do número de ocorrências.
  • ‘Código de serviço 98‘ – Reposta da Garantia de Cheque.
    1. n = REG98_NUMCONSULTAS – contador do número de ocorrências.

 Exemplo de código fonte
 
HashMap<String, Object> in = new HashMap<String, Object>();
HashMap<String, Object> out = new HashMap<String, Object>();
ConsultaCdlBh cdl = new ConsultaCdlBh();
  
in.put("TPDOCUMENTO","1");
in.put("CPFCNPJ","07607413790");
in.put("RG","                ");
in.put("ORIGEMCHEQUE"," ");
in.put("CODBANCO","000");
in.put("CODAGENCIA","0000");
in.put("NUMCC","               ");
in.put("DIGITOCC","  ");
in.put("NUMCHEQUEINICIAL" , "000000");
in.put("DIGITOCHEQUEINICIAL","0");
in.put("CMC7","000000000000000000000000000000");
in.put("QUANTCHEQUES",00);
in.put("VALORGARANTIA" ,Double.parseDouble("000000000000")) ;
in.put("TPCREDITO","  ");
in.put("INTERVALOPARCELAS" ,Integer.parseInt("000"));
Date data= UtilData.getDate("01/01/1900", UtilData.SHORTDATE);
in.put("DTVENCIMENTOPRIMEIRAPARCELA", data);
in.put("QTPARCELAS",0);
in.put("VALORTOTALOPERACAO", Double.valueOf("000000000000"));
in.put("CEPORIGEM","00000000");
in.put("DDD" , "000");
in.put("TELEFONE","0000000000");
in.put("DTABERTURACC",data);
in.put("PRACACOMPENSACAOCHEQUE","000");
in.put("NUMAUTORIZACAOCHEQUE","00000000");
in.put("CODCANCELAMENTOCHEQUE","00");
  
try {
    out = ConsultaCdlBh.execute(in);
  
    Iterator<String> ele = out.keySet().iterator();
        while (ele.hasNext()) {
            String valueHash = (String) ele.next();
            String msg = "[" + valueHash + "] >> [" + out.get(valueHash) + "]";
            log.info(msg);
    }
}catch (InfraException e) {
    log.error("O serviço da CDL-BH encontra-se indisponível");
    log.debug(e.getMessage());
} catch (LayoutException e) {
    log.error("Existe diferença entre o layout enviado a CDL-BH e o esperado pelo órgão");
    log.debug(e.getMessage());
} catch (ConfigException e) {
    log.error("Existe um erro na configuração do serviço: " + e.getMessage());
    log.debug(e.getMessage());
}catch(Exception e){
    log.error("Existe um erro na configuração do serviço: " + e.getMessage());
    log.debug(e.getMessage());
} finally {
    log.debug("<<TesteCDL-BH.process()");
    log.info("Finalizou a execução do acesso a CDL-BH");
}

 

 

  • Sem rótulos