Ir para conteúdo
  • Cadastre-se

dev botao

Boleto Sicoob via WebService


Ver Solução Respondido por Delcio,
  • Este tópico foi criado há 358 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Moderadores
39 minutos atrás, Junior.Jaru disse:

Alguém pode me enviar enviar os arquivos e o demo ? preciso implementar no meu sistema e o SNV nao tem essa versão.

Aguarde que vai ser disponibilizado no svn. está sendo feito validação dos códigos e refatorando o que é necessário.

o demo e fontes estão em anexo nos posts acima. lembrando que deposi tu vai ter que fazer revert senão vai perder correções e novas implementações

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

45 minutos atrás, Juliomar Marchetti disse:

Aguarde que vai ser disponibilizado no svn. está sendo feito validação dos códigos e refatorando o que é necessário.

o demo e fontes estão em anexo nos posts acima. lembrando que deposi tu vai ter que fazer revert senão vai perder correções e novas implementações

Ok.. Obrigado! Fico no aguardo!

Link para o comentário
Compartilhar em outros sites

  • Consultores

Por favor atualize seus fontes, pelo SVN do ACBr... 

Já subimos para o nosso repositório de fontes, modificações que podem corrigir algum dos itens referentes a esse tópico...

Por favor atualize seus fontes, faça testes, e se possível comente em uma nova resposta, se o problema foi resolvido...

Dúvidas, sobre o uso do SVN ?  Clique aqui e veja um vídeo

Bom dia,

@marcelosantos e @Delcio e demais presentes, conseguem testar o commit 29122?

  • Obrigado 2
Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Link para o comentário
Compartilhar em outros sites

  • Consultores
13 minutos atrás, Junior.Jaru disse:

O Erro parece estar aqui.. 

image.thumb.png.148e8e9b70472045c177b035aabf0123.png

Bom dia,

verifica novamente Completed: At revision: 29167  por favor

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Link para o comentário
Compartilhar em outros sites

  • Consultores
18 minutos atrás, Junior.Jaru disse:

Erro

 

image.thumb.png.9c95e1c74a4fb34ddbcd4a183d8876d3.png

image.thumb.png.18918116e88953a06b907d9af0ae0009.png

 

image.png

ele não está passando no setbanco e no create?

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Link para o comentário
Compartilhar em outros sites

  • Consultores
1 minuto atrás, Junior.Jaru disse:

@Victor H. Gonzales - Panda

 

Olá Victor, obrigado pela atenção.. o erro agora mudou.. é esse:

 

tem idéia do que pode ser?

image.thumb.png.abba639b144d41c458f6174996da71e5.png

401 é falta de permissão... tudo indica que está faltando credencial informada, como os certificados

Consultor SAC ACBr

Victor H Gonzales - Pandaaa
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

"Aprender é a única coisa que a mente nunca se cansa, nunca tem medo e nunca se arrepende” - Leonardo da Vinci

"Ter sucesso é falhar repetidamente, mas sem perder o entusiasmo"

Link para o comentário
Compartilhar em outros sites

1 minuto atrás, Victor H. Gonzales - Panda disse:

401 é falta de permissão... tudo indica que está faltando credencial informada, como os certificados

Tudo criado certinho no portal do sicoob.

não sei o que pode ser.

image.thumb.png.7311e29446e9fdf5447627f31be0b639.png

1 minuto atrás, Junior.Jaru disse:

Tudo criado certinho no portal do sicoob.

não sei o que pode ser.

image.thumb.png.7311e29446e9fdf5447627f31be0b639.png

Aparentemente tudo certo?

image.thumb.png.81eacf2be801cbb4ff481dba5c93eec9.png

5 minutos atrás, Victor H. Gonzales - Panda disse:

401 é falta de permissão... tudo indica que está faltando credencial informada, como os certificados

Configurei o certificado assim. Certo?

image.thumb.png.27f314613635cbe02908587da3cb409d.png

Link para o comentário
Compartilhar em outros sites

Bom dia @Junior.Jaru, tenta fazer o seguinte

•Ao inves de informar o pfx, informar o .pem e o .key separados.

exemplo

FACBr.Configuracoes.WebService.ArquivoCRT :=  '{seu_path}\SicoobCertificado.pem';
FACBr.Configuracoes.WebService.ArquivoKEY :=  '{seu_path}\SicoobChavePrivada.key';

•Informar client_secret igual o client_id.

•Setar o scope.

exemplo

FACBr.Cedente.CedenteWS.Scope             :=  'cobranca_boletos_consultar cobranca_boletos_incluir cobranca_boletos_baixa';

 

Editado por William Mattos
Link para o comentário
Compartilhar em outros sites

6 minutos atrás, William Mattos disse:

Bom dia @Junior.Jaru, tenta fazer o seguinte

•Ao inves de informar o pfx, informar o .pem e o .key separados.

exemplo

FACBr.Configuracoes.WebService.ArquivoCRT :=  '{seu_path}\SicoobCertificado.pem';
FACBr.Configuracoes.WebService.ArquivoKEY :=  '{seu_path}\SicoobChavePrivada.key';

•Informar client_secret igual o client_id.

•Setar o scope.

exemplo

FACBr.Cedente.CedenteWS.Scope             :=  'cobranca_boletos_consultar cobranca_boletos_incluir cobranca_boletos_baixa';

 

Olá @William Mattos Obrigado pela atenção.. fiz conforme indicado.. o erro agora é

 

Você gostaria de contactar na minha máquina para dar uma olhadinha? rsrs Zap (69) 9 9250-3445

 image.thumb.png.513d579c41d5847ca936fb9d5d867653.png

Link para o comentário
Compartilhar em outros sites

Em 18/03/2023 at 18:02, Delcio disse:

@Pedro A. Araújo Pra facilitar aí:

1 - Extrair a Chave pública e privada do certificado da empresa, detalhe: Tem que ser um certificado A1 ICP-BRASIL, não serve gerar um certificado auto assinado. Para facilitar a extração, usar o Demo do ACBRPixCD.

2 - Cadastrar o aplicativo no https://developers.sicoob.com.br/portal/, conforme o vídeo abaixo, mudar somente na parte da seleção da API, deve selecionar a API "Cobrança Bancária", no vídeo está a selecionando a do PIX. Na parte que pede o certificado, inserir o arquivo da chave pública do certificado extraído anteriormente. Copiar o Client ID do aplicativo cadastrado.

Vídeo Cadastro Aplicativo Sicoob.

3 - Configurar o ACBRBoleto da mesma forma que configura para emitir por arquivo de remessa e incluir:

          AcBrBoleto.Cedente.CedenteWS.ClientID     := Client_Id gerado no portal developpers sicoob;
          AcBrBoleto.Cedente.CedenteWS.ClientSecret := Client_Id gerado no portal developpers sicoob;
          AcBrBoleto.Cedente.CedenteWS.Scope        := 'cobranca_boletos_consultar cobranca_boletos_incluir cobranca_boletos_baixa';
          AcBrBoleto.Cedente.CedenteWS.IndicadorPix    := True; //para boleto híbrido
          
          AcBrBoleto.Configuracoes.WebService.Ambiente           := taProducao; //Só tem produção
          AcBrBoleto.Configuracoes.WebService.SSLCryptLib        := cryOpenSSL;
          AcBrBoleto.Configuracoes.WebService.SSLHTTPLib         := httpOpenSSL;
          AcBrBoleto.Configuracoes.WebService.SSLType            := LT_TLSv1_2;
          AcBrBoleto.Configuracoes.WebService.TimeOut            := 30000;
          AcBrBoleto.Configuracoes.WebService.UseCertificateHTTP := True;
          AcBrBoleto.Configuracoes.WebService.ArquivoCRT         := 'c:\ChavePublica.pem'; \\Chave pública extraída no passo 1
          AcBrBoleto.Configuracoes.WebService.ArquivoKEY         := 'c:\ChavePrivada.key'; \\Chave privada extraída no passo 1

Demais scopes se for usar algum outro endpoint:

{ cobranca_boletos_consultar cobranca_boletos_incluir- cobranca_boletos_pagador cobranca_boletos_segunda_via
            cobranca_boletos_descontos cobranca_boletos_abatimentos cobranca_boletos_valor_nominal cobranca_boletos_seu_numero cobranca_boletos_especie_documento
            cobranca_boletos_baixa cobranca_boletos_rateio_credito cobranca_pagadores cobranca_boletos_negativacoes_incluir cobranca_boletos_negativacoes_alterar
            cobranca_boletos_negativacoes_baixar cobranca_boletos_protestos_incluir cobranca_boletos_protestos_alterar cobranca_boletos_protestos_desistir cobranca_boletos_solicitacao_movimentacao_incluir
            cobranca_boletos_solicitacao_movimentacao_consultar cobranca_boletos_solicitacao_movimentacao_download cobranca_boletos_prorrogacoes_data_vencimento
            cobranca_boletos_prorrogacoes_data_limite_pagamento cobranca_boletos_encargos_multas cobranca_boletos_encargos_juros_mora cobranca_boletos_pix cobranca_boletos_faixa_nn_disponiveis }

Qualquer dúvida estou a disposição.

@Junior.Jaru siga as instruções acima.
Já estamos operando em produção. Centenas de boletos já registrados via API.

Link para o comentário
Compartilhar em outros sites

5 minutos atrás, Junior.Jaru disse:

Olá avancei mais um pouco.

 

estou recebendo o seguinte erro:

Nosso Número é inválido

tentei enviar sem informar o campo mas msm assim da erro, embora o campo seja opcional na documentação da api.

Help.. Help... rsrs

image.thumb.png.d358e89df3cd63e12a19fa64b4a0afb1.png

Aqui eu continuo mandando o nosso número. A rotina responsável por alimentar o componente ACBrBoleto com os títulos continua a mesma, seja para gerar remessa ou enviar via API.

Link para o comentário
Compartilhar em outros sites

Encontrei alguns problemas ao passar a utilizar a versão do SVN.

Segue algumas alterações anexadas.

Alterações em ACBrBoletoW_Bancoob.pas:    

  •     TBoletoW_Bancoob.GeraJuros()
    • Ao enviar um novo boleto, e o CodigoMoraJuros = cjIsento, retornava erro acusando que o campo "tipoJurosMora" é obrigatório (pois a procedure só incluía o campo se o valor dos juros > 0).
  •     TBoletoW_Bancoob.RequisicaoJson()      
    • Alterei para gerar o pix respeitando a configuração em ATitulo.ACBrBoleto.Cedente.CedenteWS.IndicadorPix, antes estava hard-coded.        

Alterações em ACBrBoletoRet_Bancoob.pas:

    TRetornoEnvio_Bancoob.LerRetorno()
        O retorno 'qrcode' do JSON estava preenchendo a propriedade txId incorretamente, pois o conteúdo de 'qrcode' se trata do EMV, sem essa mudança, o qrcode não aparece no boleto.       
   

Ficaria grato se puderem avaliar as alterações, obrigado.

 

ACBrBoletoRet_Bancoob.pas ACBrBoletoW_Bancoob.pas

Editado por William Mattos
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

@Pedro A. Araújo, @William Mattos, @Junior.Jaru e @carlitomorais
Sobre o tópico:  "Problemas com boleto hibrido (boleto com Pix) Sicoob", o mesmo foi fechado para continuarmos aqui, para que possamos concentrar as contribuições em um único lugar apenas.
Criado a tarefa K-3540-1 para que seja analisada as contribuições pela equipe de boleto.

 

  • Curtir 1
Consultor SAC ACBr

Daniel de Morais (Infocotidiano)
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Link para o comentário
Compartilhar em outros sites

Olá pessoal!

Estou dedicado em tentar finalizar a cobrança Sicoob através de API e me deparei com as seguintes situações que entendo devam ser atualizadas no repositório (segue em anexo unit devidamente modificada):

Arquivo: ACBrBoletoW_Bancoob.pas

1) Formato da data, linhas 269/270

SVN:   result := FormatDateBr( aValue, 'YYYY-MM-DD') + 'T' + FormatDateTime('hh:nn:ss', AValue) + PegaTimeZone; 
       //'2023-05-26T03:00:00.000Z' - versão acbr - fora do formato esperado

SOLUÇÃO PROPOSTA (não é desenvolvimento meu, mas de versões anteriores que está funcionando corretamente):
       result := FormatDateBr( aValue, 'YYYY-MM-DD') + 'T' + FormatDateTime('hh:nn:ss', AValue) + PegaTimeZone;       
       //'2023-05-26T00:00:00-03:00' - correto, dentro do padrão definido pelo SICOOB
       
       function TBoletoW_Bancoob.PegaTimeZone: string;
       var TimeZone: TTimeZoneInformation;
       begin
         GetTimeZoneInformation(TimeZone);
         Result := FormatFloat('00', TimeZone.Bias div -60) + ':00';
       end;

2) Rotina de geração do juros de mora
    procedure TBoletoW_Bancoob.GerarJuros(AJson: TJsonObject);
    begin
     if Assigned(aTitulo) then
      begin
        if Assigned(AJson) then
        begin
          if (aTitulo.ValorMoraJuros > 0) then
          begin

            if ATitulo.CodigoMora = '' then
            begin
              case aTitulo.CodigoMoraJuros of
                cjValorDia   : aTitulo.CodigoMora := '1';
                cjTaxaMensal : aTitulo.CodigoMora := '2';
                cjIsento     : aTitulo.CodigoMora := '0';
              end;
            end;

            case (StrToIntDef(aTitulo.CodigoMora, 0)) of
              0:    // Isento
                begin
                  AJson.Add('tipoJurosMora').Value.AsInteger :=  0;
                  AJson.Add('valorJurosMora').Value.asNumber := 0;
                end;
              1:     // Dia
                begin
                 // AJson.Add('taxa').Value.asNumber := aTitulo.ValorMoraJuros;
                  AJson.Add('tipoJurosMora').Value.AsInteger :=  1; <<<<<<------ Isso está correto. A função do repositório Integer(aTitulo.CodigoMoraJuros) retorna o valor 0 (zero)
                  AJson.Add('dataJurosMora').Value.asString := DateTimeToDateBancoob(aTitulo.DataMulta);
                  AJson.Add('valorJurosMora').Value.asNumber := aTitulo.ValorMoraJuros;
                end;
              2: // Mês
                begin
                  AJson.Add('tipoJurosMora').Value.AsInteger :=  2; <<<<<<------ Isso está correto. A função do repositório Integer(aTitulo.CodigoMoraJuros) retorna o valor 1 (um)
                  AJson.Add('dataJurosMora').Value.asString := DateTimeToDateBancoob(aTitulo.DataMulta);
                  AJson.Add('valorJurosMora').Value.asNumber := aTitulo.ValorMoraJuros;
                end;
             end;
          end;
        end;
      end;
    end;

Atenciosamente,


        

ACBrBoletoW_Bancoob.pas

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
Em 19/04/2023 at 11:46, Junior.Jaru disse:

Fui no portal do sicoob exclui todos os aplicativos e criei um novo só para boleto. agora o erro é esse

 

image.thumb.png.f12354e4ce5a816db255088b4f226abf.png

 

mesmo setando indicadorpix para false

image.thumb.png.f5617ecd78f30944537881b9671e0712.png

Opa, beleza junior ?

Estou tendo o mesmo problema em relação ao PIX. Alterei no ACBrBoletoW_Bancoob.pas e coloquei na linha 399

de

Json.Add('codigoCadastrarPIX').Value.AsInteger    := 1;

para

Json.Add('codigoCadastrarPIX').Value.AsInteger    := 0;

e mesmo assim o JSON vem com 1.

Conseguiu resolver isso ?

Atualizei os fontes hoje pelo SVN.

Obrigado.

 

www.apisystems.com.br

Link para o comentário
Compartilhar em outros sites

1 hora atrás, sergio_api disse:

Opa, beleza junior ?

Estou tendo o mesmo problema em relação ao PIX. Alterei no ACBrBoletoW_Bancoob.pas e coloquei na linha 399

de

Json.Add('codigoCadastrarPIX').Value.AsInteger    := 1;

para

Json.Add('codigoCadastrarPIX').Value.AsInteger    := 0;

e mesmo assim o JSON vem com 1.

Conseguiu resolver isso ?

Atualizei os fontes hoje pelo SVN.

Obrigado.

 

Sergio_api, a unit que postei acima está redondinha. É pegar e usar. Vamos aguardar a revisão para disponibilizarem no repositório.

Marcelo.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

19 horas atrás, mlgoncalves disse:

Sergio_api, a unit que postei acima está redondinha. É pegar e usar. Vamos aguardar a revisão para disponibilizarem no repositório.

Marcelo.

Boa tarde.

Na linha 329

Json.Add('seuNumero').Value.asString                        := OnlyNumber(aTitulo.ACBrBoleto.Banco.MontarCampoNossoNumero(aTitulo));

Não poderia ser o seuNumero mesmo ao invés do nossoNumero?

No seuNumero eu normalmente informo o meu id do titulo interno(chave primaria),

para ficar mais fácil de localizar o titulo no banco de dados no retorno das consultas por exemplo.

E o identificacaoBoletoEmpresa não poderia ser o numero do documento?

 

image.thumb.png.5976d0153434ec8709b2256515563857.png

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 358 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.