diff --git a/Sicoob.Cobranca/SicoobCobranca.cs b/Sicoob.Cobranca/SicoobCobranca.cs
index 75eafc8..08ca0ce 100644
--- a/Sicoob.Cobranca/SicoobCobranca.cs
+++ b/Sicoob.Cobranca/SicoobCobranca.cs
@@ -3,37 +3,36 @@
* Autor: Rafael Estevam *
* gh/SharpSistemas/SicoobAPI *
\**************************************/
+namespace Sicoob.Cobranca;
+
using Sicoob.Shared.Models.Acesso;
using Simple.API;
using System.Net.Http;
-namespace Sicoob.Cobranca
+public sealed class SicoobCobranca : Shared.Sicoob
{
- public sealed class SicoobCobranca : Shared.Sicoob
- {
- // Documentações
- // > APIs tipo "Swagger":
- // https://developers.sicoob.com.br/#!/apis
-
- private ClientInfo clientApi;
- public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
+ // Documentações
+ // > APIs tipo "Swagger":
+ // https://developers.sicoob.com.br/#!/apis
- public SicoobCobranca(Shared.Models.ConfiguracaoAPI configApi)
- : base(configApi)
- {
- ConfigApi = configApi;
- }
+ private ClientInfo clientApi;
+ public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
- protected override void setupClients(HttpClientHandler handler)
- {
- clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
- clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
- }
+ public SicoobCobranca(Shared.Models.ConfiguracaoAPI configApi)
+ : base(configApi)
+ {
+ ConfigApi = configApi;
+ }
- protected override void atualizaClients(TokenResponse token)
- {
- clientApi.SetAuthorizationBearer(token.access_token);
- }
+ protected override void setupClients(HttpClientHandler handler)
+ {
+ clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
+ clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
+ }
+ protected override void atualizaClients(TokenResponse token)
+ {
+ clientApi.SetAuthorizationBearer(token.access_token);
}
+
}
diff --git a/Sicoob.Conta/SicoobContaCorrente.cs b/Sicoob.Conta/SicoobContaCorrente.cs
index 4457354..217459d 100644
--- a/Sicoob.Conta/SicoobContaCorrente.cs
+++ b/Sicoob.Conta/SicoobContaCorrente.cs
@@ -3,66 +3,65 @@
* Autor: Rafael Estevam *
* gh/SharpSistemas/SicoobAPI *
\**************************************/
+namespace Sicoob.Conta;
+
using Sicoob.Conta.Models;
using Sicoob.Shared.Models.Acesso;
using Simple.API;
using System.Net.Http;
using System.Threading.Tasks;
-namespace Sicoob.Conta
+public sealed class SicoobContaCorrente : Shared.Sicoob
{
- public sealed class SicoobContaCorrente : Shared.Sicoob
- {
- // Documentações
- // > APIs tipo "Swagger":
- // https://developers.sicoob.com.br/#!/apis
+ // Documentações
+ // > APIs tipo "Swagger":
+ // https://developers.sicoob.com.br/#!/apis
- private ClientInfo clientApi;
- public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
+ private ClientInfo clientApi;
+ public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
- public SicoobContaCorrente(Shared.Models.ConfiguracaoAPI configApi, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
- : base(configApi, certificado)
- {
- ConfigApi = configApi;
- }
+ public SicoobContaCorrente(Shared.Models.ConfiguracaoAPI configApi, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
+ : base(configApi, certificado)
+ {
+ ConfigApi = configApi;
+ }
- protected override void setupClients(HttpClientHandler handler)
- {
- clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
- clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
+ protected override void setupClients(HttpClientHandler handler)
+ {
+ clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
+ clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
#if DEBUG
- enableDebug(clientApi);
+ enableDebug(clientApi);
#endif
- }
- protected override void atualizaClients(TokenResponse token)
- {
- clientApi.SetAuthorizationBearer(token.id_token);
- }
+ }
+ protected override void atualizaClients(TokenResponse token)
+ {
+ clientApi.SetAuthorizationBearer(token.id_token);
+ }
- ///
- /// O recurso de Saldo retorna o valor disponível atual e o limite de crédito (cheque especial) de uma conta corrente.
- ///
- public async Task> ObterSaldoAsync()
- => await ExecutaChamadaAsync(() => clientApi.GetAsync>("/conta-corrente/v2/saldo"));
- ///
- /// O recurso de Saldo retorna o valor disponível atual e o limite de crédito (cheque especial) de uma conta corrente.
- ///
- public async Task> ObterSaldoAsync(string numeroContaCorrente)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync>("/conta-corrente/v2/saldo", new { numeroContaCorrente }));
-
- ///
- /// O recurso de Extrato retorna todas as transações ocorridas em uma conta corrente no devido mês e ano.
- /// Há um limite de 3 meses
- ///
- public async Task> ObterExtratoAsync(int mes, int ano)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync>($"/conta-corrente/v2/extrato/{mes}/{ano}"));
- ///
- /// O recurso de Extrato retorna todas as transações ocorridas em uma conta corrente no devido mês e ano.
- /// Há um limite de 3 meses
- ///
- public async Task> ObterExtratoAsync(int mes, int ano, string numeroContaCorrente)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync>($"/conta-corrente/v2/extrato/{mes}/{ano}", new { numeroContaCorrente }));
+ ///
+ /// O recurso de Saldo retorna o valor disponível atual e o limite de crédito (cheque especial) de uma conta corrente.
+ ///
+ public async Task> ObterSaldoAsync()
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync>("/conta-corrente/v2/saldo"));
+ ///
+ /// O recurso de Saldo retorna o valor disponível atual e o limite de crédito (cheque especial) de uma conta corrente.
+ ///
+ public async Task> ObterSaldoAsync(string numeroContaCorrente)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync>("/conta-corrente/v2/saldo", new { numeroContaCorrente }));
+
+ ///
+ /// O recurso de Extrato retorna todas as transações ocorridas em uma conta corrente no devido mês e ano.
+ /// Há um limite de 3 meses
+ ///
+ public async Task> ObterExtratoAsync(int mes, int ano)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync>($"/conta-corrente/v2/extrato/{mes}/{ano}"));
+ ///
+ /// O recurso de Extrato retorna todas as transações ocorridas em uma conta corrente no devido mês e ano.
+ /// Há um limite de 3 meses
+ ///
+ public async Task> ObterExtratoAsync(int mes, int ano, string numeroContaCorrente)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync>($"/conta-corrente/v2/extrato/{mes}/{ano}", new { numeroContaCorrente }));
- }
}
diff --git a/Sicoob.Conta/SicoobContaPoupanca.cs b/Sicoob.Conta/SicoobContaPoupanca.cs
index c531b1e..c4cb5d7 100644
--- a/Sicoob.Conta/SicoobContaPoupanca.cs
+++ b/Sicoob.Conta/SicoobContaPoupanca.cs
@@ -3,53 +3,52 @@
* Autor: Rafael Estevam *
* gh/SharpSistemas/SicoobAPI *
\**************************************/
+namespace Sicoob.Conta;
+
using Sicoob.Shared.Models.Acesso;
using Simple.API;
using System.Net.Http;
using System.Threading.Tasks;
-namespace Sicoob.Conta
+public sealed class SicoobContaPoupanca : Shared.Sicoob
{
- public sealed class SicoobContaPoupanca : Shared.Sicoob
- {
- // Documentações
- // > APIs tipo "Swagger":
- // https://developers.sicoob.com.br/#!/apis
+ // Documentações
+ // > APIs tipo "Swagger":
+ // https://developers.sicoob.com.br/#!/apis
- private ClientInfo clientApi;
- public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
+ private ClientInfo clientApi;
+ public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
- public SicoobContaPoupanca(Shared.Models.ConfiguracaoAPI configApi, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
- : base(configApi, certificado)
- {
- ConfigApi = configApi;
- }
+ public SicoobContaPoupanca(Shared.Models.ConfiguracaoAPI configApi, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
+ : base(configApi, certificado)
+ {
+ ConfigApi = configApi;
+ }
- protected override void setupClients(HttpClientHandler handler)
- {
- clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
- clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
- }
- protected override void atualizaClients(TokenResponse token)
- {
- clientApi.SetAuthorizationBearer(token.access_token);
- }
+ protected override void setupClients(HttpClientHandler handler)
+ {
+ clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
+ clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
+ }
+ protected override void atualizaClients(TokenResponse token)
+ {
+ clientApi.SetAuthorizationBearer(token.access_token);
+ }
- ///
- /// Pesquisa as contas de poupança que pertencem a um CPF ou CNPJ.
- ///
- public async Task ListarContasAsync()
- => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/poupanca/v1/contas"));
- ///
- /// Consulta o extrato de um mês e ano de uma conta poupança.
- ///
- public async Task ObterSaldoAsync(string contaPoupanca)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/poupanca/v1/contas/{contaPoupanca}/saldo"));
- ///
- /// Consulta o saldo atual de uma conta poupança.
- ///
- public async Task ObterExtratoAsync(int mes, int ano, string contaPoupanca)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/poupanca/v1/contas/{contaPoupanca}/extrato/{mes}/{ano}"));
+ ///
+ /// Pesquisa as contas de poupança que pertencem a um CPF ou CNPJ.
+ ///
+ public async Task ListarContasAsync()
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/poupanca/v1/contas"));
+ ///
+ /// Consulta o extrato de um mês e ano de uma conta poupança.
+ ///
+ public async Task ObterSaldoAsync(string contaPoupanca)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/poupanca/v1/contas/{contaPoupanca}/saldo"));
+ ///
+ /// Consulta o saldo atual de uma conta poupança.
+ ///
+ public async Task ObterExtratoAsync(int mes, int ano, string contaPoupanca)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/poupanca/v1/contas/{contaPoupanca}/extrato/{mes}/{ano}"));
- }
}
diff --git a/Sicoob.PIX/SicoobConsultaPayload.cs b/Sicoob.PIX/SicoobConsultaPayload.cs
index 5359d10..3bef9b8 100644
--- a/Sicoob.PIX/SicoobConsultaPayload.cs
+++ b/Sicoob.PIX/SicoobConsultaPayload.cs
@@ -3,44 +3,43 @@
* Autor: Rafael Estevam *
* gh/SharpSistemas/SicoobAPI *
\**************************************/
+namespace Sicoob.PIX;
+
using Simple.API;
using System.Threading.Tasks;
-namespace Sicoob.PIX
+///
+/// Consulta os endpoints abertos (Sem autenticação)
+///
+public class SicoobConsultaPayload
{
+ private readonly ClientInfo clientApi;
+ private readonly ClientInfo clientPix;
+ public SicoobConsultaPayload()
+ {
+ clientApi = new ClientInfo("https://api.sicoob.com.br/pix/api/v2/");
+ clientPix = new ClientInfo("https://pix.sicoob.com.br");
+ }
///
- /// Consulta os endpoints abertos (Sem autenticação)
+ /// Consulta um Location
///
- public class SicoobConsultaPayload
+ /// JWT contendo os dados do PIX
+ public async Task ConsultaCobPayloadAsync(string urlAcessToken)
{
- private readonly ClientInfo clientApi;
- private readonly ClientInfo clientPix;
- public SicoobConsultaPayload()
- {
- clientApi = new ClientInfo("https://api.sicoob.com.br/pix/api/v2/");
- clientPix = new ClientInfo("https://pix.sicoob.com.br");
- }
- ///
- /// Consulta um Location
- ///
- /// JWT contendo os dados do PIX
- public async Task ConsultaCobPayloadAsync(string urlAcessToken)
- {
- var response = await clientApi.GetAsync(urlAcessToken);
- response.EnsureSuccessStatusCode();
- return response.Data;
- }
- ///
- /// Consulta campo payloadURL do PIX
- ///
- /// JWT contendo os dados do PIX
- public async Task ConsultaPixPayloadUrlAsync(string url)
- {
- url = url.Substring(url.IndexOf("/") + 1);
- var response = await clientPix.GetAsync(url);
- response.EnsureSuccessStatusCode();
- return response.Data;
- }
-
+ var response = await clientApi.GetAsync(urlAcessToken);
+ response.EnsureSuccessStatusCode();
+ return response.Data;
}
+ ///
+ /// Consulta campo payloadURL do PIX
+ ///
+ /// JWT contendo os dados do PIX
+ public async Task ConsultaPixPayloadUrlAsync(string url)
+ {
+ url = url.Substring(url.IndexOf("/") + 1);
+ var response = await clientPix.GetAsync(url);
+ response.EnsureSuccessStatusCode();
+ return response.Data;
+ }
+
}
diff --git a/Sicoob.PIX/SicoobPIX.cs b/Sicoob.PIX/SicoobPIX.cs
index 168740c..4028cad 100644
--- a/Sicoob.PIX/SicoobPIX.cs
+++ b/Sicoob.PIX/SicoobPIX.cs
@@ -3,6 +3,8 @@
* Autor: Rafael Estevam *
* gh/SharpSistemas/SicoobAPI *
\**************************************/
+namespace Sicoob.PIX;
+
using CS.BCB.PIX.Contratos;
using CS.BCB.PIX.Models;
using Sicoob.Shared;
@@ -12,251 +14,248 @@
using System.Globalization;
using System.Threading.Tasks;
-namespace Sicoob.PIX
+///
+/// Classe para comunicação com as APIs de PIX do Sicoob
+///
+public sealed class SicoobPIX : Shared.Sicoob, IApiPix
{
- ///
- /// Classe para comunicação com as APIs de PIX do Sicoob
- ///
- public sealed class SicoobPIX : Shared.Sicoob, IApiPix
- {
- // Documentações
- // > APIs tipo "Swagger":
- // https://developers.sicoob.com.br/#!/apis
- // > APIs no POSTMAN:
- // https://documenter.getpostman.com/view/20565799/UzBnrmod#239d9f68-d646-4209-994a-cd564b6d6d1a
- // Auxiliares
- // > Parseia BR Code para debugar:
- // https://openpix.com.br/qrcode/scanner/
- // > Gera QR para teste:
- // https://webqr.com/create.html
+ // Documentações
+ // > APIs tipo "Swagger":
+ // https://developers.sicoob.com.br/#!/apis
+ // > APIs no POSTMAN:
+ // https://documenter.getpostman.com/view/20565799/UzBnrmod#239d9f68-d646-4209-994a-cd564b6d6d1a
+ // Auxiliares
+ // > Parseia BR Code para debugar:
+ // https://openpix.com.br/qrcode/scanner/
+ // > Gera QR para teste:
+ // https://webqr.com/create.html
- private ClientInfo clientApi;
- public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
+ private ClientInfo clientApi;
+ public Shared.Models.ConfiguracaoAPI ConfigApi { get; }
- public SicoobPIX(Shared.Models.ConfiguracaoAPI configApi, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
- : base(configApi, certificado)
- {
- ConfigApi = configApi;
- }
+ public SicoobPIX(Shared.Models.ConfiguracaoAPI configApi, System.Security.Cryptography.X509Certificates.X509Certificate2? certificado = null)
+ : base(configApi, certificado)
+ {
+ ConfigApi = configApi;
+ }
- protected override void setupClients(System.Net.Http.HttpClientHandler handler)
- {
- clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
- clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
+ protected override void setupClients(System.Net.Http.HttpClientHandler handler)
+ {
+ clientApi = new ClientInfo(ConfigApi.UrlApi, handler);
+ clientApi.SetHeader("x-sicoob-clientid", ConfigApi.ClientId);
#if DEBUG
- enableDebug(clientApi);
+ enableDebug(clientApi);
#endif
- }
- protected override void atualizaClients(TokenResponse token)
- {
- clientApi.SetAuthorizationBearer(token.access_token);
- }
-
- /* COB */
- ///
- /// Endpoint que cria uma cobrança imediata (QRCode Pix).
- ///
- /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix
- /// Dados para geração da cobrança imediata.
- /// Cobrança imediata criada
- public async Task CriarCobrancaAsync(string transactionId, NovaCobrancaImediata cobranca)
- {
- validaTxID(transactionId);
- return await ExecutaChamadaAsync(() => clientApi.PutAsync($"/pix/api/v2/cob/{transactionId}", cobranca));
- }
- ///
- /// Endpoint para criar uma cobrança imediata, neste caso, o txid deve ser definido pelo PSP.
- ///
- /// Dados para geração da cobrança imediata.
- /// Cobrança imediata criada
- public async Task CriarCobrancaAsync(NovaCobrancaImediata cobranca)
- => await ExecutaChamadaAsync(() => clientApi.PostAsync($"/pix/api/v2/cob", cobranca));
- ///
- /// Endpoint para revisar uma cobrança através de um determinado txid.
- ///
- /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix.
- /// Dados para geração da cobrança
- /// Cobrança imediata revisada. A revisão deve ser incrementada em 1.
- public async Task RevisarCobrancaAsync(string transactionId, RevisarCobrancaImediata cobranca)
- {
- validaTxID(transactionId);
- return await ExecutaChamadaAsync(() => clientApi.PatchAsync($"/pix/api/v2/cob/{transactionId}", cobranca));
- }
-
- ///
- /// Endpoint para consultar uma cobrança através de um determinado txid.
- ///
- /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix.
- /// Revisao a ser consultada
- /// Dados da cobrança imediata
- public async Task ConsultarCobrancaAsync(string transactionId, int? revisao = null)
- {
- validaTxID(transactionId);
+ }
+ protected override void atualizaClients(TokenResponse token)
+ {
+ clientApi.SetAuthorizationBearer(token.access_token);
+ }
- string url = $"/pix/api/v2/cob/{transactionId}";
- if (revisao.HasValue) url += $"?revisao={revisao.Value}";
+ /* COB */
+ ///
+ /// Endpoint que cria uma cobrança imediata (QRCode Pix).
+ ///
+ /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix
+ /// Dados para geração da cobrança imediata.
+ /// Cobrança imediata criada
+ public async Task CriarCobrancaAsync(string transactionId, NovaCobrancaImediata cobranca)
+ {
+ validaTxID(transactionId);
+ return await ExecutaChamadaAsync(() => clientApi.PutAsync($"/pix/api/v2/cob/{transactionId}", cobranca));
+ }
+ ///
+ /// Endpoint para criar uma cobrança imediata, neste caso, o txid deve ser definido pelo PSP.
+ ///
+ /// Dados para geração da cobrança imediata.
+ /// Cobrança imediata criada
+ public async Task CriarCobrancaAsync(NovaCobrancaImediata cobranca)
+ => await ExecutaChamadaAsync(() => clientApi.PostAsync($"/pix/api/v2/cob", cobranca));
+ ///
+ /// Endpoint para revisar uma cobrança através de um determinado txid.
+ ///
+ /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix.
+ /// Dados para geração da cobrança
+ /// Cobrança imediata revisada. A revisão deve ser incrementada em 1.
+ public async Task RevisarCobrancaAsync(string transactionId, RevisarCobrancaImediata cobranca)
+ {
+ validaTxID(transactionId);
+ return await ExecutaChamadaAsync(() => clientApi.PatchAsync($"/pix/api/v2/cob/{transactionId}", cobranca));
+ }
- return await ExecutaChamadaAsync(() => clientApi.GetAsync(url));
- }
- ///
- /// Endpoint para consultar cobranças imediatas através de parâmetros como início, fim, cpf, cnpj e status.
- ///
- /// Dados da consulta
- /// Lista de cobranças imediatas.
- public async Task ListarCobrancasAsync(ConsultarCobrancaImediata consulta)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync("/pix/api/v2/cob", consulta.ToKVP()));
+ ///
+ /// Endpoint para consultar uma cobrança através de um determinado txid.
+ ///
+ /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix.
+ /// Revisao a ser consultada
+ /// Dados da cobrança imediata
+ public async Task ConsultarCobrancaAsync(string transactionId, int? revisao = null)
+ {
+ validaTxID(transactionId);
- ///
- /// Endpoint para gerar a imagem qrcode de uma cobrança através de um determinado txid.
- ///
- /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix.
- /// Revisao a ser consultada
- /// Largura da imagem a ser exibida
- /// Bytes da imagem codificada em PNG
- [Obsolete("Sicoob removeu o endpoint", true)]
- public async Task ConsultarImagemCobrancaAsync(string transactionId, int? revisao = null, int? largura = null)
- {
- validaTxID(transactionId);
- string url = $"/pix/api/v2/cob/{transactionId}/imagem";
+ string url = $"/pix/api/v2/cob/{transactionId}";
+ if (revisao.HasValue) url += $"?revisao={revisao.Value}";
- return await ExecutaChamadaAsync(() => clientApi.GetAsync(url, new { revisao, largura }.ToKVP()));
- }
+ return await ExecutaChamadaAsync(() => clientApi.GetAsync(url));
+ }
+ ///
+ /// Endpoint para consultar cobranças imediatas através de parâmetros como início, fim, cpf, cnpj e status.
+ ///
+ /// Dados da consulta
+ /// Lista de cobranças imediatas.
+ public async Task ListarCobrancasAsync(ConsultarCobrancaImediata consulta)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync("/pix/api/v2/cob", consulta.ToKVP()));
- /* COBV */
+ ///
+ /// Endpoint para gerar a imagem qrcode de uma cobrança através de um determinado txid.
+ ///
+ /// String, deve ter de 27 a 36 caracteres. Identificador único da cobrança Pix.
+ /// Revisao a ser consultada
+ /// Largura da imagem a ser exibida
+ /// Bytes da imagem codificada em PNG
+ [Obsolete("Sicoob removeu o endpoint", true)]
+ public async Task ConsultarImagemCobrancaAsync(string transactionId, int? revisao = null, int? largura = null)
+ {
+ validaTxID(transactionId);
+ string url = $"/pix/api/v2/cob/{transactionId}/imagem";
- /* COBV-Lote */
+ return await ExecutaChamadaAsync(() => clientApi.GetAsync(url, new { revisao, largura }.ToKVP()));
+ }
- /* PayloadLocation */
+ /* COBV */
- /* PIX */
- ///
- /// Endpoint para consultar Pix recebidos
- ///
- /// Dados da consulta
- /// Lista dos Pix recebidos de acordo com o critério de busca.
- public async Task ListarPIXAsync(ConsultarPix consulta)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync("/pix/api/v2/pix", consulta.ToKVP()));
- ///
- /// Endpoint para consultar um Pix através de um e2eid.
- ///
- /// Id fim a fim da transação. Deve ter 32 caracteres.
- /// Dados do Pix efetuado.
- public async Task ConsultarPIXAsync(string endToEndId)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/pix/api/v2/pix/{endToEndId}"));
+ /* COBV-Lote */
- ///
- /// Endpoint para solicitar uma devolução através de um e2eid do Pix e do ID da devolução.
- /// O motivo que será atribuído à PACS.004 será "Devolução solicitada pelo usuário recebedor do pagamento original"
- /// cuja sigla é "MD06" de acordo com a aba RTReason da PACS.004 que consta no Catálogo de Mensagens do Pix.
- ///
- /// Id fim a fim da transação.
- /// Id gerado pelo cliente para representar unicamente uma devolução.
- /// Valor a ser devolvido
- /// Dados da devolução
- public async Task SolicitarDevlucaoPixAsync(string endToEndId, string idDevolucao, decimal valor)
- {
- validaIDDevolucao(idDevolucao);
- string url = $"/pix/api/v2/pix/{endToEndId}/devolucao/{idDevolucao}";
- return await ExecutaChamadaAsync(() => clientApi.PutAsync(url, new { valor = valor.ToString("N2", CultureInfo.InvariantCulture) }));
- }
- ///
- /// Endpoint para consultar uma devolução através de um EndToEndID do Pix e do ID da devolução
- ///
- /// Id fim a fim da transação.
- /// Id gerado pelo cliente para representar unicamente uma devolução.
- /// Dados da devolução
- public async Task ConsultarDevlucaoPixAsync(string endToEndId, string idDevolucao)
- {
- string url = $"/pix/api/v2/pix/{endToEndId}/devolucao/{idDevolucao}";
- return await ExecutaChamadaAsync(() => clientApi.GetAsync(url));
- }
+ /* PayloadLocation */
- /* Webhook */
- ///
- /// Endpoint para configuração do serviço de notificações acerca de Pix recebidos.
- /// Somente Pix associados a um txid serão notificados.
- ///
- /// Chave a ser associada
- /// Url a ser chamada com POST. Será concatenado `/pix` ao final.
- public async Task CriarWebHookAsync(string chave, string url)
- {
- await ExecutaChamadaAsync(() => clientApi.PutAsync($"/pix/api/v2/webhook/{chave}", new { webhookUrl = url }));
- }
- ///
- /// Endpoint para consultar Webhooks cadastrados
- ///
- public async Task ConsultarWebHooksAsync()
- => await ExecutaChamadaAsync(() => clientApi.GetAsync("/pix/api/v2/webhook"));
- ///
- /// Endpoint para recuperação de informações sobre o Webhook Pix.
- ///
- public async Task ConsultarWebHookAsync(string chave)
- => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/pix/api/v2/webhook/{chave}"));
- ///
- /// Endpoint para cancelamento do webhook. Não é a única forma pela qual um webhook pode ser removido.
- ///
- public async Task CancelarWebHookAsync(string chave)
- => await ExecutaChamadaAsync(() => clientApi.DeleteAsync($"/pix/api/v2/webhook/{chave}"));
+ /* PIX */
+ ///
+ /// Endpoint para consultar Pix recebidos
+ ///
+ /// Dados da consulta
+ /// Lista dos Pix recebidos de acordo com o critério de busca.
+ public async Task ListarPIXAsync(ConsultarPix consulta)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync("/pix/api/v2/pix", consulta.ToKVP()));
+ ///
+ /// Endpoint para consultar um Pix através de um e2eid.
+ ///
+ /// Id fim a fim da transação. Deve ter 32 caracteres.
+ /// Dados do Pix efetuado.
+ public async Task ConsultarPIXAsync(string endToEndId)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/pix/api/v2/pix/{endToEndId}"));
- /* Validação de IDs */
- private static void validaTxID(string transactionId)
- {
- if (string.IsNullOrEmpty(transactionId))
- {
- throw new ArgumentException($"'{nameof(transactionId)}' cannot be null or empty.", nameof(transactionId));
- }
- if (!CS.BCB.PIX.Validadores.ValidacaoIdentificadores.ValidaTransactionId(transactionId))
- {
- throw new ArgumentException($"'{nameof(transactionId)}' Não é valido na restrição", nameof(transactionId));
- }
- }
- private static void validaIDDevolucao(string idDevolucao)
- {
- if (string.IsNullOrEmpty(idDevolucao))
- {
- throw new ArgumentException($"'{nameof(idDevolucao)}' cannot be null or empty.", nameof(idDevolucao));
- }
+ ///
+ /// Endpoint para solicitar uma devolução através de um e2eid do Pix e do ID da devolução.
+ /// O motivo que será atribuído à PACS.004 será "Devolução solicitada pelo usuário recebedor do pagamento original"
+ /// cuja sigla é "MD06" de acordo com a aba RTReason da PACS.004 que consta no Catálogo de Mensagens do Pix.
+ ///
+ /// Id fim a fim da transação.
+ /// Id gerado pelo cliente para representar unicamente uma devolução.
+ /// Valor a ser devolvido
+ /// Dados da devolução
+ public async Task SolicitarDevlucaoPixAsync(string endToEndId, string idDevolucao, decimal valor)
+ {
+ validaIDDevolucao(idDevolucao);
+ string url = $"/pix/api/v2/pix/{endToEndId}/devolucao/{idDevolucao}";
+ return await ExecutaChamadaAsync(() => clientApi.PutAsync(url, new { valor = valor.ToString("N2", CultureInfo.InvariantCulture) }));
+ }
+ ///
+ /// Endpoint para consultar uma devolução através de um EndToEndID do Pix e do ID da devolução
+ ///
+ /// Id fim a fim da transação.
+ /// Id gerado pelo cliente para representar unicamente uma devolução.
+ /// Dados da devolução
+ public async Task ConsultarDevlucaoPixAsync(string endToEndId, string idDevolucao)
+ {
+ string url = $"/pix/api/v2/pix/{endToEndId}/devolucao/{idDevolucao}";
+ return await ExecutaChamadaAsync(() => clientApi.GetAsync(url));
+ }
- if (!CS.BCB.PIX.Validadores.ValidacaoIdentificadores.ValidaIdDevolucao(idDevolucao))
- {
- throw new ArgumentException($"'{nameof(idDevolucao)}' Não é valido na restrição", nameof(idDevolucao));
- }
- }
+ /* Webhook */
+ ///
+ /// Endpoint para configuração do serviço de notificações acerca de Pix recebidos.
+ /// Somente Pix associados a um txid serão notificados.
+ ///
+ /// Chave a ser associada
+ /// Url a ser chamada com POST. Será concatenado `/pix` ao final.
+ public async Task CriarWebHookAsync(string chave, string url)
+ {
+ await ExecutaChamadaAsync(() => clientApi.PutAsync($"/pix/api/v2/webhook/{chave}", new { webhookUrl = url }));
+ }
+ ///
+ /// Endpoint para consultar Webhooks cadastrados
+ ///
+ public async Task ConsultarWebHooksAsync()
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync("/pix/api/v2/webhook"));
+ ///
+ /// Endpoint para recuperação de informações sobre o Webhook Pix.
+ ///
+ public async Task ConsultarWebHookAsync(string chave)
+ => await ExecutaChamadaAsync(() => clientApi.GetAsync($"/pix/api/v2/webhook/{chave}"));
+ ///
+ /// Endpoint para cancelamento do webhook. Não é a única forma pela qual um webhook pode ser removido.
+ ///
+ public async Task CancelarWebHookAsync(string chave)
+ => await ExecutaChamadaAsync(() => clientApi.DeleteAsync($"/pix/api/v2/webhook/{chave}"));
- /* Não implementados */
- public Task ConsultarCobrancaVencimentoAsync(string transactionId, int? revisao = null)
- {
- throw new NotImplementedException();
- }
- public Task CriarCobrancaVencimentoAsync(string transactionId, NovaCobrancaVencimento cobranca)
- {
- throw new NotImplementedException();
- }
- public Task ListarCobrancasVencimentoAsync(ConsultarCobrancaImediata consulta)
- {
- throw new NotImplementedException();
- }
- public Task RevisarCobrancaVencimentoAsync(string transactionId, RevisarCobrancaVencimento cobranca)
- {
- throw new NotImplementedException();
- }
- public Task CriarLoteCobrancaVencimentoAsync(string idLote, NovaCobrancaVencimentoLote lote)
+ /* Validação de IDs */
+ private static void validaTxID(string transactionId)
+ {
+ if (string.IsNullOrEmpty(transactionId))
{
- throw new NotImplementedException();
+ throw new ArgumentException($"'{nameof(transactionId)}' cannot be null or empty.", nameof(transactionId));
}
- public Task RevisarLoteCobrancaVencimentoAsync(string idLote, RevisarCobrancaVencimentoLote lote)
+ if (!CS.BCB.PIX.Validadores.ValidacaoIdentificadores.ValidaTransactionId(transactionId))
{
- throw new NotImplementedException();
+ throw new ArgumentException($"'{nameof(transactionId)}' Não é valido na restrição", nameof(transactionId));
}
- public Task ConsultarLoteCobrancaVencimentoAsync(string transactionId)
+ }
+ private static void validaIDDevolucao(string idDevolucao)
+ {
+ if (string.IsNullOrEmpty(idDevolucao))
{
- throw new NotImplementedException();
+ throw new ArgumentException($"'{nameof(idDevolucao)}' cannot be null or empty.", nameof(idDevolucao));
}
- public Task ListarLoteCobrancaVencimentoAsync(Consulta consulta)
+
+ if (!CS.BCB.PIX.Validadores.ValidacaoIdentificadores.ValidaIdDevolucao(idDevolucao))
{
- throw new NotImplementedException();
+ throw new ArgumentException($"'{nameof(idDevolucao)}' Não é valido na restrição", nameof(idDevolucao));
}
}
+
+ /* Não implementados */
+ public Task ConsultarCobrancaVencimentoAsync(string transactionId, int? revisao = null)
+ {
+ throw new NotImplementedException();
+ }
+ public Task CriarCobrancaVencimentoAsync(string transactionId, NovaCobrancaVencimento cobranca)
+ {
+ throw new NotImplementedException();
+ }
+ public Task ListarCobrancasVencimentoAsync(ConsultarCobrancaImediata consulta)
+ {
+ throw new NotImplementedException();
+ }
+ public Task RevisarCobrancaVencimentoAsync(string transactionId, RevisarCobrancaVencimento cobranca)
+ {
+ throw new NotImplementedException();
+ }
+ public Task CriarLoteCobrancaVencimentoAsync(string idLote, NovaCobrancaVencimentoLote lote)
+ {
+ throw new NotImplementedException();
+ }
+ public Task RevisarLoteCobrancaVencimentoAsync(string idLote, RevisarCobrancaVencimentoLote lote)
+ {
+ throw new NotImplementedException();
+ }
+ public Task ConsultarLoteCobrancaVencimentoAsync(string transactionId)
+ {
+ throw new NotImplementedException();
+ }
+ public Task ListarLoteCobrancaVencimentoAsync(Consulta consulta)
+ {
+ throw new NotImplementedException();
+ }
}