Edson_Ramos
-
Total de ítens
11 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Posts postados por Edson_Ramos
-
-
1 hora atrás, danielsk8 disse:
Já estou usando em produção para consultar os títulos e para registrar...
segue a classe que fiz para facilitar o uso e algumas melhorias pessoais...
mas os créditos são todos de vcs q compartilharam os fontes.. valeu;
Este é um exemplo de uso
WS_CEF := TWebService_CEF_SIGCB.Create;
WS_CEF.Beneficiario_CodigoCedente := Params.ItemsString['Cod_Cedente'].AsString;
WS_CEF.Beneficiario_Cnpj := Params.ItemsString['Cnpj'].AsString;
WS_CEF.Beneficiario_Agencia := Params.ItemsString['Agencia'].AsString;
WS_CEF.Titulo_Nosso_numero := Params.ItemsString['Nosso_Numero'].AsString;
result := Xml_To_Json( WS_CEF.Consultar_Boleto_XML);////////result := Xml_To_Json( WS_CEF.Registrar_Boleto );
FreeAndNil( WS_CEF);Ficou show Daniel, parabéns!
21 minutos atrás, Italo Jurisato Junior disse:Boa tarde a todos,
Alguém sabe dizer se esse layout do XML é exclusivo da Caixa ou é um layout a ser adotado por todos os Bancos?
Boa tarde Italo,
Na verdade, o que sei, é esse padrão é somente da Caixa E.Federal.
Acredito que outros bancos tem esse sistema também, porém, quase certeza que não é do mesmo padrão.
- 1
-
1 hora atrás, Davi De Sousa Calixto disse:
Segue projeto completo testado no meu código de beneficiário para inclusão, alteração, baixa e consulta de boletos no web service caixa.
Projeto testado em Delphi 10.2, para Delphi 7 ou inferior é necessário substituir a função Hash e SHA256!
Certifique-se que seu código de beneficiário está liberado na sua agência para o uso de Web Service.
Preencha os campos sendo a primeiro boleto Numero 1.
Seja feliz!
Agradeço a contribuição de todos e espero que possa ajudar!
Muito bom, valeu mesmo Davi !
-
Sim claro, preciso entrar em contato na agencia para ativar esse serviço.
Fiz os procedimentos e como retornou aqueles xmls estou a 97% de concluído o serviço.
Obrigado pela dica do xml retorno, quando funcional.
-
2 minutos atrás, Davi De Sousa Calixto disse:
Fez os testes em qual ambiente? Pois utilizando as funções esta dando divergencia do hash na consulta e erro na estrutura de dados na inclusão.
Lembrando que em homologação o nosso número inicia com 14.
Vou dar mais uma olhada e posto aqui a aplicacão completada sem banco de dados.
Muito obrigado pela contribuição!
Fiz os teste nessa url que está na unit, ele retorna os seguintes xmls. E sobre o hash, a função usei a que você passou, como mostra na unit Principal.
Xml de retorno da inclusão :
<?xml version="1.0" encoding="ibm-367"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <manutencaocobrancabancaria:SERVICO_SAIDA xmlns:manutencaocobrancabancaria="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sibar_base="http://caixa.gov.br/sibar"> <sibar_base:HEADER> <VERSAO>1.2</VERSAO> <AUTENTICACAO>9leZCacMyrIZzctYQnhp6LoGPWFBOUBQU1BlSyZ9Kz8=</AUTENTICACAO> <USUARIO_SERVICO>SGCBS02P</USUARIO_SERVICO> <OPERACAO>INCLUI_BOLETO</OPERACAO> <SISTEMA_ORIGEM>SIGCB</SISTEMA_ORIGEM> <UNIDADE>0353</UNIDADE> <DATA_HORA>20181201110933</DATA_HORA> </sibar_base:HEADER> <COD_RETORNO>00</COD_RETORNO> <ORIGEM_RETORNO>MANUTENCAO_COBRANCA_BANCARIA</ORIGEM_RETORNO> <MSG_RETORNO></MSG_RETORNO> <DADOS> <CONTROLE_NEGOCIAL> <ORIGEM_RETORNO>SIGCB</ORIGEM_RETORNO> <COD_RETORNO>1</COD_RETORNO> <MENSAGENS> <RETORNO>(89) OPERACAO NAO PERMITIDA - CEDENTE INFORMADO NAO POSSUI AUTORIZACAO PARA UTILIZAR SERVICO WEBSERVICE</RETORNO> </MENSAGENS> </CONTROLE_NEGOCIAL> </DADOS> </manutencaocobrancabancaria:SERVICO_SAIDA> </soapenv:Body> </soapenv:Envelope>
Xml da consulta :
<?xml version="1.0" encoding="ibm-367"?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Body> <consultacobrancabancaria:SERVICO_SAIDA xmlns:consultacobrancabancaria="http://caixa.gov.br/sibar/consulta_cobranca_bancaria/boleto" xmlns:sibar_base="http://caixa.gov.br/sibar"> <sibar_base:HEADER> <VERSAO>1.2</VERSAO> <AUTENTICACAO>w17DVCjz+nn8tasGTNAZI83eooCnab6xuJ86H64ePDI=</AUTENTICACAO> <USUARIO_SERVICO>SGCBS02P</USUARIO_SERVICO> <OPERACAO>CONSULTA_BOLETO</OPERACAO> <SISTEMA_ORIGEM>SIGCB</SISTEMA_ORIGEM> <UNIDADE>0353</UNIDADE> <DATA_HORA>20181201125618</DATA_HORA> </sibar_base:HEADER> <COD_RETORNO>00</COD_RETORNO> <ORIGEM_RETORNO>CONSULTA_COBRANCA_BANCARIA</ORIGEM_RETORNO> <MSG_RETORNO></MSG_RETORNO> <DADOS> <CONTROLE_NEGOCIAL> <ORIGEM_RETORNO>SIGCB</ORIGEM_RETORNO> <COD_RETORNO>1</COD_RETORNO> <MENSAGENS> <RETORNO>(89) OPERACAO NAO PERMITIDA - CEDENTE INFORMADO NAO POSSUI AUTORIZACAO PARA UTILIZAR SERVICO WEBSERVICE</RETORNO> </MENSAGENS> </CONTROLE_NEGOCIAL> </DADOS> </consultacobrancabancaria:SERVICO_SAIDA> </soapenv:Body> </soapenv:Envelope>
-
20 horas atrás, Davi De Sousa Calixto disse:
Poderia compartilhar as Unit ausentes no projeto:
ConfigBancoFD in '..\..\Source-Sindicato\Comum\ConfigBancoFD.pas',
uFDSeek in '..\..\Source-Sindicato\Comum\uFDSeek.pas';Essas units nem são essenciais para o objetivo e finalidade do WebService Soap da Caixa, adicionei e usei para
a busca em meu banco de dados de outra aplicação.
O Datamodulo nao posso enviar porque é onde estão todas as minhas tabelas parte de outra aplicação.
É só criar um datamodulo e colocar o database (FDConnection) do firedac e as querys (FDQuery) da sua tabela onde está os boletos e liga-las
a unit Principal.pas, ok.
A funcionalidade necessária está toda dentro da unit Principal.pas, os procedimentos para uso está o mais possível desacoplados .
-
Pessoal estou postando novamente os arquivo
Estão com as operações de Baixar, Alterar e consultar incluidos
- 1
-
1 hora atrás, Amarildo de Matos disse:
bom dia.. otimo. elsoft.. e parabens..ai por esta contribuindo..
é isso ai.. juntos somos fortes.. valeu a contribuiçao.. e tambem vou comecar a fazer isso..
Tudo que precisa pra incluir um boleto e enviar para a caixa está ai.
Valeu.
- 1
-
1 minuto atrás, Amarildo de Matos disse:
bom dia.. otimo. elsoft.. e parabens..ai por esta contribuindo..
é isso ai.. juntos somos fortes.. valeu a contribuiçao.. e tambem vou comecar a fazer isso..
Amarildo, bom dia
Eu não manjo nada de webservices soap, mas to me matando aqui pra fazer isso funcionar...
Assim que conseguir posto aqui pra vocês.
- 1
-
Em 28/09/2018 at 10:21, joemil disse:
bom dia galera
to pesquisando tb sobre o assunto. ja existe alguma frente de trabalho sobre o assunto? tem algum lugar pra baixar os fontes pra contribuir?
Comecei por aqui e consegui gerar pelo menos o xml.
function TfrmPrincipal.GeraXml(banco: TConfigBanco; guia: TDataSet): string; var vsxml : TStringList; vsdata, vsNossoNumero, AEspecieDoc, vsCNPJCPF, vsNome, vsAutenticacao: string; ValorMoraJuros, DataMoraJuros, PercentualMulta: string; begin vsdata := FormatDateTime('yyyymmddhhmmss',now); vsNossoNumero := copy(guia.fieldbyname('nossonum').asstring,1,17); ////////// especie do documento ////////// if AnsiSameText(banco.EspecieDoc, 'DM') then AEspecieDoc := '02' else if AnsiSameText(banco.EspecieDoc, 'BP') then AEspecieDoc := '32' else AEspecieDoc := '99'; ////////////////////////////////////////// ////////////// multa e juros ///////////////// if (guia.FieldByName('juros').AsString <> '') and (guia.FieldByName('juros').AsCurrency > 0 ) then begin ValorMoraJuros := FormatFloat('0.##',guia.FieldByName('juros').AsCurrency); DataMoraJuros := '<DATA>'+ FormatDateTime('yyyy-mm-dd', guia.FieldByName('datven').AsDateTime+1) + '</DATA>'; if (guia.FieldByName('multa').AsCurrency > 0) then PercentualMulta := FormatFloat('0.##',guia.FieldByName('multa').AsCurrency) else PercentualMulta := ''; end else begin ValorMoraJuros := '0.00'; DataMoraJuros := ''; PercentualMulta := ''; end; ///////////////////////////////////////// ////////////// CNPJ CPF //////////////// if FCgcCpf(guia.FieldByName('ncadastro').AsString) then begin vsCNPJCPF := Trim(guia.FieldByName('ncadastro').asString); end else if FCgcCpf(guia.FieldByName('cpfcnpj').AsString) then begin vsCNPJCPF := Trim(guia.FieldByName('cpfcnpj').asString); end; if Length(Trim(guia.FieldByName('cpfcnpj').asString)) = 14 then begin vsCNPJCPF := '<CNPJ>'+vsCNPJCPF+'</CNPJ>'; vsNome := '<RAZAO_SOCIAL>'+guia.FieldByName('nome').AsString+'</RAZAO_SOCIAL>'; end else if Length(Trim(guia.FieldByName('cpfcnpj').asString)) = 11 then begin vsCNPJCPF := '<CPF>'+vsCNPJCPF+'</CPF>'; vsNome := '<NOME>'+guia.FieldByName('nome').AsString+'</NOME>'; end; //////////////////////////////////////// ////// autenticacao //////////////////// vsAutenticacao := Format('%7.7d',[StrToInt(banco.NroCedLimpo)]) +vsNossoNumero +FormatDateTime('ddmmyyyy',guia.fieldbyName('datven').asDateTime) +FormatFloat('000000000000000',guia.fieldbyname('valpre').asCurrency) +FormatFloat('00000000000000',Strtofloat( LimpaNCadastro(banco.CnpjCedente))); vsAutenticacao := TNetEncoding.Base64.EncodeBytesToString(GetStrHashSHA256(vsAutenticacao)); vsxml := TStringList.Create; try with vsxml do begin //add('<?xml version="1.0" encoding="iso-8859-1"?>') //add('<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"'); //add(' xmlns:ext="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo"'); //add(' xmlns:sib="http://caixa.gov.br/sibar">'); //add('<soapenv:Header/>'); //add(' <soapenv:Body>'); //add(' <ext:SERVICO_ENTRADA>'); //add(' <sib:HEADER>'); add('<?xml version="1.0" encoding="UTF-8"?>'); add('<manutencaocobrancabancaria:SERVICO_ENTRADA xmlns:manutencaocobrancabancaria="http://caixa.gov.br/sibar/manutencao_cobranca_bancaria/boleto/externo" xmlns:sibar_base="http://caixa.gov.br/sibar">'); add(' <sibar_base:HEADER>'); add(' <VERSAO>1.2</VERSAO>'); add(' <AUTENTICACAO>'+vsAutenticacao+'</AUTENTICACAO>'); add(' <USUARIO_SERVICO>SGCBS02P</USUARIO_SERVICO>'); add(' <OPERACAO>INCLUI_BOLETO</OPERACAO>'); add(' <SISTEMA_ORIGEM>SIGCB</SISTEMA_ORIGEM>'); add(' <UNIDADE>'+banco.NroAgencia+'</UNIDADE>'); add(' <DATA_HORA>'+vsdata+'</DATA_HORA>'); add(' </sib:HEADER>'); add(' <DADOS>'); add(' <INCLUI_BOLETO>'); add(' <CODIGO_BENEFICIARIO>'+banco.NroCedLimpo+'</CODIGO_BENEFICIARIO>'); add(' <TITULO>'); add(' <NOSSO_NUMERO>'+vsNossoNumero+'</NOSSO_NUMERO>'); add(' <NUMERO_DOCUMENTO>'+copy(guia.FieldByName('nossolimpo').AsString,1,11)+'</NUMERO_DOCUMENTO>'); add(' <DATA_VENCIMENTO>'+FormatDateTime('yyyy-mm-dd',guia.FieldByName('datven').AsDateTime)+'</DATA_VENCIMENTO>'); add(' <VALOR>'+FormatFloat('0.##',guia.FieldByName('valpre').AsCurrency)+'</VALOR>'); add(' <TIPO_ESPECIE>'+AEspecieDoc+'</TIPO_ESPECIE>'); add(' <FLAG_ACEITE>N</FLAG_ACEITE>'); add(' <DATA_EMISSAO>'+FormatDateTime('yyyy-mm-dd',Now)+'</DATA_EMISSAO>'); add(' <JUROS_MORA>'); add(' <TIPO>TAXA_MENSAL</TIPO>'); Add(' '+DataMoraJuros); add(' <PERCENTUAL>'+ValorMoraJuros+'</PERCENTUAL>'); add(' </JUROS_MORA>'); add(' <POS_VENCIMENTO>'); add(' <ACAO>DEVOLVER</ACAO>'); add(' <NUMERO_DIAS>29</NUMERO_DIAS>'); add(' </POS_VENCIMENTO>'); add(' <CODIGO_MOEDA>09</CODIGO_MOEDA>'); add(' <PAGADOR>'); add(' '+vsCNPJCPF); add(' '+vsNome); add(' <ENDERECO>'); add(' <LOGRADOURO>'+copy(guia.FieldByName('endereco').AsString+' '+guia.FieldByName('numero').AsString,1,40)+'</LOGRADOURO>'); add(' <BAIRRO>'+copy(guia.FieldByName('bairro').AsString,1,15)+'</BAIRRO>'); add(' <CIDADE>'+copy(guia.FieldByName('nomcid').AsString,1,15)+'</CIDADE>'); add(' <UF>'+copy(guia.FieldByName('nomest').AsString,1,2)+'</UF>'); add(' <CEP>'+copy(RemoveString('-',guia.FieldByName('cep').asString),1,8)+'</CEP>'); add(' </ENDERECO>'); add(' </PAGADOR>'); if PercentualMulta<>'' then begin add(' <MULTA>'); add(' '+DataMoraJuros); add(' <PERCENTUAL>'+PercentualMulta+'</PERCENTUAL>'); add(' </MULTA>'); end; add(' <FICHA_COMPENSACAO>'); add(' <MENSAGENS>'); add(' <MENSAGEM>'+copy(guia.FieldByName('descricao').asString+' Ref. '+guia.FieldByName('ref').asString ,1,40)+'</MENSAGEM>'); if PercentualMulta<>'' then begin add(' <MENSAGEM>MULTA DE '+PercentualMulta+' JUROS '+ValorMoraJuros+' AO MÊS</MENSAGEM>'); end; add(' </MENSAGENS>'); add(' </FICHA_COMPENSACAO>'); add(' <RECIBO_PAGADOR>'); add(' <MENSAGENS>'); add(' <MENSAGEM>'+copy(guia.FieldByName('descricao').asString+' Ref. '+guia.FieldByName('ref').asString ,1,40)+'</MENSAGEM>'); if PercentualMulta<>'' then begin add(' <MENSAGEM>MULTA DE '+PercentualMulta+' JUROS '+ValorMoraJuros+' AO MÊS</MENSAGEM>'); end; add(' </MENSAGENS>'); add(' </RECIBO_PAGADOR>'); //add(' <PAGAMENTO>'); //add(' <QUANTIDADE_PERMITIDA>1</QUANTIDADE_PERMITIDA>'); //add(' <TIPO>ACEITA_VALORES_ENTRE_MINIMO_MAXIMO</TIPO>'); //add(' <VALOR_MINIMO>500.00</VALOR_MINIMO>'); //add(' <VALOR_MAXIMO>1500.00</VALOR_MAXIMO>'); //add(' </PAGAMENTO>'); add(' </TITULO>'); add(' </INCLUI_BOLETO>'); add(' </DADOS>'); Add('</manutencaocobrancabancaria:SERVICO_ENTRADA>'); //add(' </ext:SERVICO_ENTRADA>'); //add(' </soapenv:Body>'); //add('</soapenv:Envelope>'); end; vsxml.SaveToFile(vsNossoNumero+'.xml'); finally vsxml.Free; end; end;
-
Em 24/10/2017 at 18:01, toninhonunes disse:
Olá Colegas,
Mudou tudo, estou adaptando agora a nova realidade, vai a dica, a sindical vai usar o SIGCB padrão, porém algumas coisas a mais no arquivo remessa serão obrigatórias, estou adaptando ainda, por enquanto o antigo ainda está sendo compensado.
Toninho Nunes
bom dia toninhonunes
quando vc adaptar envie para nós fazermos uns teste ok
Obrigado
Ajuste no método TipoOcorrenciaToCod do Bancoob
em ACBrBoleto
Postado
Bom dia,
Verifiquei no método TipoOcorrenciaToCod da unit do Bancoob um código de retorno faltando, conforme imagem, vou anexar a unit com o item adicionado.
ACBrBancoBancoob.pas