Sicoob.Cobranca
1.0.0
dotnet add package Sicoob.Cobranca --version 1.0.0
NuGet\Install-Package Sicoob.Cobranca -Version 1.0.0
<PackageReference Include="Sicoob.Cobranca" Version="1.0.0" />
paket add Sicoob.Cobranca --version 1.0.0
#r "nuget: Sicoob.Cobranca, 1.0.0"
// Install Sicoob.Cobranca as a Cake Addin #addin nuget:?package=Sicoob.Cobranca&version=1.0.0 // Install Sicoob.Cobranca as a Cake Tool #tool nuget:?package=Sicoob.Cobranca&version=1.0.0
APIs Sicoob
O objetivo deste repositório para comunicação via API com o banco Sicoob.
Para comunicação com o Sicoob é necessário um "Cadastro de Aplicativo" em developers.sicoob.com.br. Para isso é necessário ter os dados bancarios da conta a ser automatizada e de seu respectivo certificado ICP-Brasil em arquivo.
Cada conta bancária a ser automatizada deve ter um cadastro como Aplicativo, entre em contato com sua agência e solicite auxílio.
É necessário ter o certificado em dois formatos:
- *.PFX (padrão quando um certificado A1 é adiquirido) com a senha e - para comunicação;
- *.CER (apenas a chave pública em formato Base-64) - para o cadastro
Durante o cadastro será informado os dados da conta bancária sendo automatizada e o certificado no formato PEM. Será gerado um ClientId
.
O Sicoob possui APIs para:
- PIX
- Cobrança Bancária (Boleto)
- Conta Corrente
- Conta Poupança
API Cobrança: [Em breve]
API Conta Corrente e Poupança:
A documentação do Sicoob é falha, incompleta e em alguns tópicos é completamente ausente. O Gerente não tem acesso à documentação, o WhatsApp das APIs manda solicitar via e-mail, e o e-mails não são respondidos. Farei o póssível para documentar aqui as funções não documentadas lá, porém sob o risco de errar alguma funcionalidade
Link da documentação oficial: https://developers.sicoob.com.br
O Sicoob parece respeitar bem as definições Públicas Padrão do PIX, então usarei de base o repositório https://github.com/SharpSistemas/PIX-BCB
Sicoob.PIX
APIs do Sicoob para funções PIX
Funcionalidades da API:
- Consultar e Devolver PIX recebidos no período (com e sem txId)
- Criar, Consultar e revisar Pix-Cobrança imediato
- Criar, Consultar e revisar Pix-Cobrança com vencimento
- Criar, Consultar e revisar lotes de Pix-Cobrança com vencimento
- Criar, Consultar e revisar PayloadLocation de Pix (cria um acesso público para dados de uma cobrança)
- Criar, consultar e cancelar Webhook
Exemplos de uso
Criação do objeto API
// Cria configuração
var cfg = new ConfiguracaoAPI()
{
ClientId = "00000000-0000-0000-0000-000000000000", // Obtém no "Aplicativo" no developers.sicoob.com.br
Scope = AuthorizationScope.PIX_SomenteLeitura(),
CertificadoSenha = "SenhaCertificado",
UrlCertificadoPFX = "caminho/do/pfx/com/chave/privada.pfx"
};
// cria o objeto de comunicação com as APIs de PIX
var sicoob = new SicoobPIX(cfg);
// Inicializa o acesso das APIs
await sicoob.SetupAsync();
// A autenticação dura 300 segundos (5min) e é auto renovado pela biblioteca
// Cada chamada verifica e, se necessário, atualiza o token
// Chame AtualizarCredenciaisAsync() para renovar manualmente
// É possível consultar dados da vigência do Token nas propriedades:
// * sicoob.ExpiresIn
// * sicoob.ExpiresAtUTC
// * sicoob.Expired
Atenção: Por segurança, o construtor da classe Sicoob (e todas suas derivações, como o SicoobPIX) apaga a propriedade CertificadoSenha
do objeto de configuração
Nota: É possível inicializar a classe passando o certificado x509 diretamente no construtor ao invés de utilizar a configuração.
Funções Cobrança para PIX-Imediato
// Listar todas as cobranças num período
var cobs = await sicoob.ListarCobrancasAsync(new ConsultarCobrancaImediata
{
inicio = DateTime.UtcNow.Date.AddDays(-1),
fim = DateTime.UtcNow.AddDays(1).Date,
});
// Criar uma Cobrança para a chave: "12.345.678/0001-00", no valor de R$ 19,90, com limite de 1h para pagamento
var transactionId = gerarNovaTxId(); // Controle interno (string), pode ser um guid (pattern: ^[a-zA-Z0-9]{26,35}$)
var dadosCobranca = PIX.Models.Cobranca.CriarCobrancaRequest.Padrao(chave: "12345678000100", valor: 19.90M, expiracaoSegundos: 3600));
var nova = await sicoob.CriarCobrancaAsync(transactionId, dadosCobranca);
// Baixar QR Code
var pngBytes = await sicoob.ConsultarImagemCobrancaAsync(transactionId);
// Consultar cobrança
var consulta = await sicoob.ConsultarCobrancaAsync(transactionId);
// Função interna da empresa para gerar Ids de Transação
string gerarNovaTxId()
=> Guid.NewGuid().ToString();
Funções de consulta de PIX Recebidos
/* PIX */
var pixPeriodo = await sicoob.ListarPIXAsync(new ConsultarPix()
{
inicio = DateTime.UtcNow.Date.AddDays(-1),
fim = DateTime.UtcNow.AddDays(1).Date,
});
Permissões
A autenticação para o endpoint PIX do sicoob separa as diversas funções em diferentes escopos, cada um com a variante Read e Write:
- cob: permissões para endpoints de cobrança imediata
- cobv: permissões para endpoints de cobrança com vencimento
- lotecobv: permissões para endpoints de lotes cobrança com vencimento
- pix: permissões para consulta e alteração de transações PIX (com ou sem cobrança)
- webhook: permissões para endpoints de webhook
- payloadlocation: permissões para endpoints de payloads
Confira aqui a classe para configuração dos Scopes AuthorizationScope
Veja detalhes em https://developers.sicoob.com.br/#!/documentacao?section=apis&item=pix
Webhook
A documentação do Webhook é um dos casos aonde só há informações parciais
Existe a documentação dos endpoints para criar e gerenciar o cadastro de Webhooks, porém não há nenhuma documentação da requisição que será feita pelo Sicoob no endpoint.
Ao consultar o suporte do sicoob no setor de APIs, fomos informados que não há documentação e devemos trabalhar por tentativa e erro (veja abaixo), portanto a documentação pode estar incompleta ou errada.
Após registrar o Webhook, todo PIX recebido que tenha TransactionId será notificado através de uma chamada Webhook, aonde os servidores do Sicoob farão uma chamada REST na aplicação com informações sobre o PIX.
Exemplo:
É registrado um Webhook para a chave: "12.345.678/0001-00":
await sicoob.CriarWebHook("12345678000100", "https://meu.site.com.br/api/");
O Sicoob vai fazer um POST para ttps://meu.site.com.br/api/pix
, repare que é feito um POST para o endereço registrado adicionado de /pix
no final.
Caso seja registrado como https://meu.site.com.br/api/pix
, será feito um POST para https://meu.site.com.br/api/pix/pix
(repare o duplo pix
).
O POST não tem nenhum header especial, e contém um array de dados do PIX no payload conforme model: Sicoob.PIX.Models.Webhook.WebhookPostRequest
// Exemplo de um Endpoint em ASP
[HttpPost]
[Route("cuidado com sua rota aqui/pix")] // não esquecer do /pix
public IActionResult Webhook_Pix([FromBody] Sicoob.PIX.Models.Webhook.WebhookPostRequest payload){
// Processa o payload
return Ok();
}
Dump de uma requisição do sicoob capturada
{
"method": "POST",
"uri": "/api/pix",
"headers": {
"Via": "1.1 wsap501.sicoob.com.br:80 (Cisco-WSA/12.0.3-007)",
"X-Imforwards": "20",
"Content-Length": "164",
"User-Agent": "axios/0.21.4",
"Content-Type": "application/json",
"Accept": "application/json, text/plain, */*",
"Connection": "close"
},
"body": "{\"pix\":[{\"endToEndId\":\"xxxxxxxxxxx\",\"txid\":\"xxxxxxxxxxx\",\"valor\":\"xxx.xx\",\"horario\":\"2020-01-01T00:00:00.000Z\",\"devolucoes\":[]}]}",
}
Segue o Contato com a equipe do suporte ao desenvolvedor do Sicoob em JAN/2023:
Nós:
Eu estou lendo a documentação sobre o registro, consulta e edição de WebHook
Mas não achei o protocolo da chamada que o Sicoob vai fazer
Não achei COMO o sicoob vai bater no meu endpoint
Qual método? (POST/GET?), não tem se vai mandar parâmetros, headers, qual o payload ....
Como eu faço para saber o que vou receber?
Sicoob ([NOME REMOVIDO]):
Você será notificado na URL cadastrada do Webhook e poderá identificar pelos IPs do Webhook PIX do Sicoob.
Infelizmente não temos exemplos disponíveis, será necessário testar sua aplicação.
Protocolo do Atendimento: [REMOVIDO]
Sicoob.Conta
APIs do Sicoob para funções de Conta Bancária
Funcionalidades da API:
- Consultar Saldo e Extrato para Conta Corrente
- Consultar Saldo e Extrato para Conta Poupança
Exemplos de uso
Criação do objeto API
// Cria configuração
var cfg = new ConfiguracaoAPI()
{
ClientId = "00000000-0000-0000-0000-000000000000", // Obtém no "Aplicativo" no developers.sicoob.com.br
Scope = AuthorizationScope.TodosContaCorrente(),
CertificadoSenha = "SenhaCertificado",
UrlCertificadoPFX = "caminho/do/pfx/com/chave/privada.pfx"
};
// cria o objeto de comunicação com as APIs de PIX
var sicoob = new SicoobContaCorrente(cfg);
// Inicializa o acesso das APIs
await sicoob.SetupAsync();
// A autenticação dura 300 segundos (5min) e é auto renovado pela biblioteca
// Cada chamada verifica e, se necessário, atualiza o token
// Chame AtualizarCredenciaisAsync() para renovar manualmente
// É possível consultar dados da vigência do Token nas propriedades:
// * sicoob.ExpiresIn
// * sicoob.ExpiresAtUTC
// * sicoob.Expired
Repare que a única diferença na inicialização entre PIX e Conta é no Scope e no nome da classe
Consulta de Saldo
var saldo = await sicoob.ObterSaldoAsync();
Consulta de Extrato
var extrato = await sicoob.ObterExtratoAsync(12, 2022);
O sicoob limita extrato aos últimos 3 meses
Permissões
A autenticação para o endpoint de Conta do sicoob é diferente do PIX, seguem os escopos:
- Conta Corrente:
- openid: Obrigatório
- cco_extrato: Permite consultar extrato
- cco_saldo: Permite consultar saldo
- Poupança:
- poupanca_contas: Permite listar as contas
- poupanca_extrato: Permite consultar extrato
- poupanca_saldo: Permite consultar saldo
Confira aqui a classe para configuração dos Scopes AuthorizationScope
Veja detalhes em https://developers.sicoob.com.br/ navegue para:
- APIs → Conta-Corrente
- APIs → Poupança
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Sicoob.Shared (>= 1.0.4)
- Simple.API (>= 1.8.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 94 | 10/3/2024 |
0.0.2-alpha | 144 | 1/24/2023 |
0.0.1-alpha | 139 | 1/24/2023 |
See examples and documentation on the GitHub page
https://github.com/SharpSistemas/SicoobAPI