Ir para conteúdo
  • Cadastre-se

dev botao

Implementação/Integração SICOOB via API


  • Este tópico foi criado há 397 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Olá a todos, segue a documentação da API de Cobranças Bancarias do SICOOB na versão 2

https://developers.sicoob.com.br/#!/apis

Detalhes:

É possivel consultar a mesma sem precisar estar logado no site, também é possível criar uma conta no site sem precisar ser correntista/cooperado do banco

Agora para criar uma aplicação e ter acesso ao Client_id é necessario ser correntista

Comecei a fazer uns testes mas esbarrei na necessidade de passar no Hearder a KEY "x-sicoob-clientid" com  VALUE [client_id]

no metodo da classe que vai gerar o Header fiz:

procedure TBoletoW_Sicoob_API.GerarHeader;
begin
  DefinirContentType;
  DefinirKeyUser;

  if NaoEstaVazio(Boleto.Cedente.CedenteWS.ClientID) then
    HTTPSend.Headers.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID);
end;

Mais este Header é limpo na procedure Executar da unit TBoletoWSREST

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Olá Pessoal, vou compartilhar aqui o que consegui fazer, não está muito orientado a objeto mas já consegui emitir boletos, as outras funcionalidades (consultas, alteração de campos do boleto, etc) aindam precisam ser implementadas/testadas

Há 4 "Problemas" que é preciso resolver, são eles:

1 - A Autenticação no Banco
2 - O Header das requisições que precisam da KEY x-sicoob-clientid: {{CLIENT_ID}}
3 - Os [ ] no objeto json
4 - O nome das das Units (Bancoop ou Sicoob) (rs)

1 - Autenticação no Banco

usar a autenticação como esta abaixo não funciona, pois o OAtuth requer obrigatoriamente o Client_secret e no Sicoob ele não usa este

function TBoletoW_Sicoob_API.GerarTokenAutenticacao: string;
begin
  FPContentType := 'application/x-www-form-urlencoded';
  OAuth.Payload := True;
  Result := inherited GerarTokenAutenticacao;
end;

para contornar eu usei uma solução nada OO, criei o objeto httpsend no metodo configurei ele localmente, disparei a conexão e no fim devolvi para o result o Token recebido (sei que este precisa ser melhorado)

outro detalhe da autenticação é que quando ele é chamado passa pelo metodo GerarHeader

procedure TBoletoW_Sicoob_API.GerarHeader;
begin
  DefinirContentType;
  DefinirKeyUser;

  if NaoEstaVazio(Boleto.Cedente.CedenteWS.ClientID) then
    HTTPSend.Headers.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID);
end;

ou seja, ele escreve x-sicoob-clientid, e este só deve ser usado após a autenticação, aqui pensei em colocar a condição "se autenticado" só não sei como pegar esta "variável"


2 - O Header das requisições que precisam da KEY x-sicoob-clientid: {{CLIENT_ID}}

Apesar de está sendo configurado/escrito em GerarHeader

if NaoEstaVazio(Boleto.Cedente.CedenteWS.ClientID) then
    HTTPSend.Headers.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID);

 ele não está chegando em ACbrBoletoWS.Rest, e para contornar isto estou forçado sua escrita com LHeaders.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID) nesta unit, ou seja inviabilizei com isso a utilização desta unit para todos os outros bancos

3 - Os [ ] no objeto json

No Sicoob a requisição de inclusão pode conter até 10 boletos, ou seja o Json enviando é um Array de Json que pode conter até 10 elementos (em outras palavras em vez do Json iniciar e terminar com "{ }" ele inicia e termina com "[ ]"). Não consegui resolver este detalhe em AcbrBoletoW_Sicoob_API.pas, então adicionei os colchetes em ACBrBoletoWS.Rest, mais precisamente no metodo Executar (inviabilizando novamente esta unit para os outros bancos)
 

   WriteStrToStream(HTTPSend.Document, AnsiString('[' + FPDadosMsg + ']'));

 

4 - O nome das Units (Bancoob ou Sicoob) (rs) 
Pessoal, em minha região (Nordeste, Pernambuco), todas as agencias do Banco 756 São SICOOB, e não Bancoop, não sei se Bancoop é a realidade de vocês (região do Sul / Sudeste), procurando aqui achei esta informação (que diz que: O Banco Cooperativo do Brasil (Bancoob) agora se chama Banco Sicoob) -> https://web.facebook.com/sicooboficial/posts/4554063361276071/?locale=ar_AR

E Consultando a Relação de Instituiçoes do Banco Central do Brasil ->  https://www.bcb.gov.br/pom/spb/estatistica/port/ASTR003.pdf, Também encontro Banco SICOOB S.A. para o numero 756

Não seria o caso de usar ACBrBoletoW_Sicoob_API.pas (como fiz) ao invez de ACBrBoletoW_Bancoop.pas?

ACBrBoleto.rar

Editado por marcelosantos
  • Curtir 2
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

1 - A Autenticação no Banco

OAuth, conforme te enviei os arquivos, está sendo gerado a autenticação, e o método de consulta está funcionando.


2 - O Header das requisições que precisam da KEY x-sicoob-clientid: {{CLIENT_ID}}

Nos headers que precisar informar adicionar a linha

    HTTPSend.Headers.Add('x-sicoob-clientid: ' + Boleto.Cedente.CedenteWS.ClientID);


3 - Os [ ] no objeto json

O ACBrBoleto não faz envio de boletos em lote, o envio é individual, por mais que o registro seja, para isso teria que mudar a forma do fluxo.

Mas iniciar de forma unitária depois podemos verificar de mudar para lotes.


4 - O nome das das Units (Bancoop ou Sicoob) (rs)

A questão do Bancoob como comentamos pelo discord, como ambos são a "mesma" instituição, e no componente é utilizado Bancoob, por convenção manteremos para o WS como Bancoob tambem.

 

Lembrando que para o bancoob funcionar, a camada de Rest precisa estar com a ultima release do componente.

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

  • Membros Pro

Victor/Panda, atualzei tudo

fiz algumas alterações na escrita e leitura dos objetos JSON, mais ainda há muita coisa para fazer

detectei um pequeno problema que não consegui resolver sem alterar a ACbrBoletoWS.REST.pas

segue para sua analise a procedure que tive que alterar
 

procedure TBoletoWSREST.DefinirCertificado;
begin
  // Adicionando o Certificado
  if NaoEstaVazio(Boleto.Configuracoes.WebService.ArquivoCRT) then
    HTTPSend.Sock.SSL.CertificateFile := Boleto.Configuracoes.WebService.ArquivoCRT;

  if NaoEstaVazio(Boleto.Configuracoes.WebService.ArquivoKEY) then
    HTTPSend.Sock.SSL.PrivateKeyFile := Boleto.Configuracoes.WebService.ArquivoKEY;
end;

Toquei BoletoWS.ArquivoCRT por Boleto.Configuracoes.WebService.ArquivoCRT, e a mesma coisa para o ArquivoKEY, o problema é que o objeto BoletoWS.ArquivoCRT estava chegando neste ponto vazio e eu não entendi o porque (apesar do objeto ACBRboleto está configurado corretamente)


A inclusão na API funciona, preciso finalizar a escrita do retorno do banco (QRCode e o PDF que está chegando via BASE64)

A Consulta que você alterou também funciona, só que alguns dados do retorno não estão devidamente mapeados 

Todos os outros Endpoints ainda precisa ser avaliados e implementados

Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia,

verifica por favor agora

  • Curtir 1
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

  • Membros Pro

Pessoal bom dia, segue uma outra questão


Os outros bancos que já trabalham com API, devolvem na resposta da inclusão do boleto o PDF em Base64? (Igual o Sicoob)


caso positivo, não seria o caso de termos esta propriedade no componente de Boleto?


Sou ciente que já temos no projeto ACBr, a geração dos boletos, e que nestas temos mais de 5 modelos disponíveis em 2 componentes diferentes

A questão aqui é simplismente dar ao usuario a opção de escolher (gerar o seu próprio ou imprimir o que o banco gerou automaticamente)

Link para o comentário
Compartilhar em outros sites

  • Consultores

BB que me recordo não devolve essa situação.

as demais API teria que olhar a documentação, mas acredito que se de 10 WS que tem, a do Inter talvez e agora essa

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

  • Administradores

Boa tarde,

7 horas atrás, marcelosantos disse:

A questão aqui é simplismente dar ao usuario a opção de escolher (gerar o seu próprio ou imprimir o que o banco gerou automaticamente)

Por favor anexe  o manual do banco para que possamos analisar melhor.

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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 !!

Link para o comentário
Compartilhar em outros sites

  • Administradores

Boa tarde Marcelo,
 Referente a classe como um todo, tem conseguido avançar?

Em relação a questão do retorno em PDF, percebemos que como o componente gera o boleto para ser impresso, o processamento do arquivo gerado pelo banco pode requerer mais análise, já que quase nenhum banco atua desta forma...sendo assim, acreditamos que seria interessante enviar ao svn a integração e futuramente rever este ponto.

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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 !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
2 horas atrás, Juliana Tamizou disse:

Boa tarde Marcelo,
 Referente a classe como um todo, tem conseguido avançar?

Em relação a questão do retorno em PDF, percebemos que como o componente gera o boleto para ser impresso, o processamento do arquivo gerado pelo banco pode requerer mais análise, já que quase nenhum banco atua desta forma...sendo assim, acreditamos que seria interessante enviar ao svn a integração e futuramente rever este ponto.

At.

Foi necessario parar o desenvolvimento nesta, por necessidade da empresa aqui

está em Standy by, assim que finalizar as outras coisas, vou voltar a trabalhar nesta 

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

  • Membros Pro

Segue o que já foi feito

 Alterado os metodos
 RequisicaoJson
 Gerar Pagador
 Gerar Juros
 Gerar Multa
 Adicionado GerarInstrucao


Inclusão do Boleto já funciona, precisa mapear o retorno da inclusão;
Consulta ao Boleto já funciona, precisa mapear o retorno ao objeto ACBr

 


 

ACBrBoleto.rar

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

  • Administradores

Boa tarde @marcelosantos

Me parece que está evoluindo bem com estas mudanças... vc continua atuando nos itens faltantes ou no momento está em pausa?

At.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

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 !!

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
18 horas atrás, Juliana Tamizou disse:

Boa tarde @marcelosantos

Me parece que está evoluindo bem com estas mudanças... vc continua atuando nos itens faltantes ou no momento está em pausa?

At.

Isso compartilhei aqui o que já tinha feito, pois havia uns 2 usuarios que gostariam de contribuir, não sei se eles fizeram alguma coisa

Estou finalizado umas outras demandas da empresa, e pretendo sim continuar, caso ninguém já tenha feito

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

  • Membros Pro

Pessoal bom carnaval para todos, segue abaixo a continuação da implementação para o Banco SICOOB
 

Alterados neste o Retono da Inclusão e da Consulta (com algumas melhorais/mapeamentos)

Escritos neste os metodos para Alterar Vencimento,  Protestar,  Baixar,  Alterar Descontos , Atribuir Descontos, Alterar Valor da Multa,  Alterar Valor de Juros,  Alterar Abatimento,  Alterar Especie e  Sustar Protesto* (precisou da inclusão do Metodo HTTP  DELETE em ACBrBoletoConversao), detalhe para todos estes inscritos é, a conta da empresa aqui não tem estes serviços liberados pelo banco e todos eles estão retornando: (tenho a mesma resposta utilizando o POSTMAN)

{
    "httpCode": "401",
    "httpMessage": "Unauthorized",
    "moreInformation": "Cannot pass the security checks that are required by the target API or operation, Enable debug headers for more details."
}

Ou seja, ainda é preciso escrever o mapeamento/retorno destes no componente

Na Próxima quinta-feira, vamos falar com o gerente para solicitar esta liberação de serviços para poder testar estes eventos/endpoints

Segue os arquivos para analise e melhorias

ACBrBoleto.rar

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

  • 3 semanas depois ...
  • Membros Pro
Em 21/02/2023 at 07:25, marcelosantos disse:

Pessoal bom carnaval para todos, segue abaixo a continuação da implementação para o Banco SICOOB
 

Alterados neste o Retono da Inclusão e da Consulta (com algumas melhorais/mapeamentos)

Escritos neste os metodos para Alterar Vencimento,  Protestar,  Baixar,  Alterar Descontos , Atribuir Descontos, Alterar Valor da Multa,  Alterar Valor de Juros,  Alterar Abatimento,  Alterar Especie e  Sustar Protesto* (precisou da inclusão do Metodo HTTP  DELETE em ACBrBoletoConversao), detalhe para todos estes inscritos é, a conta da empresa aqui não tem estes serviços liberados pelo banco e todos eles estão retornando: (tenho a mesma resposta utilizando o POSTMAN)

{
    "httpCode": "401",
    "httpMessage": "Unauthorized",
    "moreInformation": "Cannot pass the security checks that are required by the target API or operation, Enable debug headers for more details."
}

Ou seja, ainda é preciso escrever o mapeamento/retorno destes no componente

Na Próxima quinta-feira, vamos falar com o gerente para solicitar esta liberação de serviços para poder testar estes eventos/endpoints

Segue os arquivos para analise e melhorias

ACBrBoleto.rar 55.11 kB · 2 downloads

Algum avanço na implementação?

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois ...
  • Membros Pro

Pessoal o projeto está funcionando, mas não está pronto

se vocês forem PRO basta baixar, substituir as unit e ir usando/corrigindo erros

se não forem, pensem em ajudar a comunidade

a equipe do ACBr só vai subir para o repositorio oficial quando muitos estiverem precisando, ou quando o projeto estiver 100%
 

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

  • Consultores

Bom dia @marcelosantos

Pelo que vimos aqui no fórum, existem mais pessoas trabalhando com o mesmo banco.
Como usuários da comunidade que estão contribuindo não tem acesso a área pro,  vamos deixar somente um tópico ativo para acesso de todos que estão colaborando com o projeto deste banco.
 

Tópico que vai ficar ativo:
 

 

 

  • 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

  • Este tópico foi criado há 397 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.