Problema
Realizar uma consulta ou criar uma cobrança PIX utilizando o e-Bank.
Solução
Para realizar uma consulta com o PIX utilizando nosso produto e-Bank, é bem simples:
- Crie um novo projeto no Visual Studio.
- Instale os seguintes pacotes da Unimake via NuGet:
| Pacote | NuGet | |
|---|---|---|
Unimake.PrimitivesPM> Install-Package Unimake.Primitives | nuget.org/packages/Unimake.Primitives | |
Unimake.EBank.PrimitivesPM> Install-Package Unimake.EBank.Primitives | nuget.org/packages/Unimake.EBank.Primitives | |
Unimake.AuthServerPM> Install-Package Unimake.AuthServer | nuget.org/packages/Unimake.AuthServer |
Exemplo de consulta PIX em C#:
using EBank.Solutions.Primitives.PIX.Models.Consulta;
using EBank.Solutions.Primitives.PIX.Request.Consulta;
using System;
using System.Threading.Tasks;
using Unimake.EBank.Solutions.Services.PIX;
using Unimake.EBank.Solutions.Tests.Abstractions;
using Unimake.Primitives.Collections.Page;
using Xunit;
using Xunit.Abstractions;
namespace Unimake.EBank.Solutions.Tests.PIX
{
public class PIXConsultarTest(ITestOutputHelper output) : TestBase(output)
{
#region Public Methods
[Fact]
public async Task ConsultarE2EIdTestAsync()
{
try
{
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var response = await service.GetAsync(CreateRequest(() => new PIXGetRequest
{
EndToEndId = $"E{new Random().NextString(31, true, false).ToUpper()}"
}), scope);
DumpAsJson(response);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
[Fact]
public async Task ConsultarPaginadoTestAsync()
{
try
{
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var currentPage = 1;
var response = default(PagedList);
do
{
response = await service.GetAsync(CreateRequest(() => new PIXGetRequest
{
StartDate = StartDate,
EndDate = EndDate,
PageNumber = currentPage,
PageSize = 3
}), scope);
DumpAsJson(response);
currentPage++;
} while(response.PageInfo.HasNext);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
[Fact]
public async Task ConsultarTxIdTestAsync()
{
try
{
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var response = await service.GetAsync(CreateRequest(() => new PIXGetRequest
{
StartDate = StartDate,
EndDate = EndDate,
TxId = "xxInformeUmTxIdValidoAquixx"
}), scope);
DumpAsJson(response);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
#endregion Public Methods
}
}
Veja no Github: PIXConsultarTest.cs
Exemplo de criação de cobrança PIX em C#:
using EBank.Solutions.Primitives.PIX.Request.Cobranca;
using System;
using System.Threading.Tasks;
using Unimake.EBank.Solutions.Services.PIX;
using Unimake.EBank.Solutions.Tests.Abstractions;
using Xunit;
using Xunit.Abstractions;
namespace Unimake.EBank.Solutions.Tests.PIX
{
public class PIXCriarCobrancaTest(ITestOutputHelper output) : TestBase(output)
{
#region Private Fields
private const string TX_ID = "CobrancaDeTestePix20230213183421";
#endregion Private Fields
#region Public Methods
[Theory]
[InlineData(TX_ID)]
public async Task ConsultarCobrancaComTxId(string txId)
{
try
{
var beneficiario = BeneficiarioDefault;
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var cobResponse = await service.QueryCobAsync(CreateRequest(() => new PIXCobrancaGetRequest
{
Banco = beneficiario.Conta.Banco,
Inscricao = beneficiario.Inscricao,
NumeroAgencia = beneficiario.Conta.Agencia,
NumeroConta = beneficiario.Conta.Numero,
TxId = txId
}), scope);
DumpAsJson(cobResponse);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
[Theory]
[InlineData(TX_ID)]
public async Task ConsultarCobrancaERetornarQrCode(string txId)
{
try
{
var beneficiario = BeneficiarioDefault;
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var cobResponse = await service.QueryCobAsync(CreateRequest(() => new PIXCobrancaGetRequest
{
Banco = beneficiario.Conta.Banco,
Inscricao = beneficiario.Inscricao,
NumeroAgencia = beneficiario.Conta.Agencia,
NumeroConta = beneficiario.Conta.Numero,
TxId = txId,
GerarQRCode = true
}), scope);
DumpAsJson(cobResponse);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
[Theory]
[InlineData(TX_ID)]
public async Task GerarCobrancaComQrCode(string txId)
{
try
{
var beneficiario = BeneficiarioDefault;
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var response = await service.CreateCobAsync(CreateRequest(() => new PIXCobrancaCreateRequest
{
Valor = 1.17852m,
Chave = "",
TxId = txId,
GerarQRCode = true
}), scope);
DumpAsJson(response);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
[Theory]
[InlineData(TX_ID)]
public async Task GerarCobrancaComTxId(string txId)
{
try
{
var beneficiario = BeneficiarioDefault;
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var response = await service.CreateCobAsync(CreateRequest(() => new PIXCobrancaCreateRequest
{
Valor = 1.17852m,
Chave = beneficiario.Inscricao,
TxId = txId
}), scope);
DumpAsJson(response);
//Já realizar a consulta e garantir que foi gerada corretamente
//Já fica como teste :)
var cobResponse = await service.QueryCobAsync(CreateRequest(() => new PIXCobrancaGetRequest
{
Banco = beneficiario.Conta.Banco,
Inscricao = beneficiario.Inscricao,
NumeroAgencia = beneficiario.Conta.Agencia,
NumeroConta = beneficiario.Conta.Numero,
TxId = txId
}), scope);
DumpAsJson(cobResponse);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
[Fact]
public async Task GerarCobrancaComTxIdDefindoPeloPSP()
{
try
{
var beneficiario = BeneficiarioDefault;
using var scope = await CreateAuthenticatedScopeAsync();
var service = new PIXService();
var response = await service.CreateCobAsync(CreateRequest(() => new PIXCobrancaCreateRequest
{
Valor = 1.17852m,
Chave = "12345678901234" //"<>"
}), scope);
DumpAsJson(response);
var txId = response.Txid;
//Já realizar a consulta e garantir que foi gerada corretamente
//Já fica como teste :)
var cobResponse = await service.QueryCobAsync(CreateRequest(() => new PIXCobrancaGetRequest
{
Banco = beneficiario.Conta.Banco,
Inscricao = beneficiario.Inscricao,
NumeroAgencia = beneficiario.Conta.Agencia,
NumeroConta = beneficiario.Conta.Numero,
TxId = txId
}), scope);
DumpAsJson(cobResponse);
}
catch(Exception ex)
{
DumpAsJson(ex);
throw;//forward
}
}
#endregion Public Methods
}
} Veja no Github: PIXCriarCobrancaTest.cs
Para baixar o exemplo completo, acesse nosso repositório: github.com/Unimake/EBank
Atenção:
Para realizar a consulta acima, é necessário obter as chaves de acesso para as nossas APIs e também as chaves bancárias correspondentes ao banco parceiro.
Nós da Unimake te ajudamos em todo o processo — desde a obtenção das chaves até a homologação completa.
⚠️ Se preferir, fornecemos chaves para testes em ambiente de homologação.
Para realizar a consulta acima, é necessário obter as chaves de acesso para as nossas APIs e também as chaves bancárias correspondentes ao banco parceiro.
Nós da Unimake te ajudamos em todo o processo — desde a obtenção das chaves até a homologação completa.
⚠️ Se preferir, fornecemos chaves para testes em ambiente de homologação.