delfinance-api-sdk
0.2.5
dotnet add package delfinance-api-sdk --version 0.2.5
NuGet\Install-Package delfinance-api-sdk -Version 0.2.5
<PackageReference Include="delfinance-api-sdk" Version="0.2.5" />
<PackageVersion Include="delfinance-api-sdk" Version="0.2.5" />
<PackageReference Include="delfinance-api-sdk" />
paket add delfinance-api-sdk --version 0.2.5
#r "nuget: delfinance-api-sdk, 0.2.5"
#:package delfinance-api-sdk@0.2.5
#addin nuget:?package=delfinance-api-sdk&version=0.2.5
#tool nuget:?package=delfinance-api-sdk&version=0.2.5
Delfinance SDK (C#)
SDK oficial da Delfinance para .NET, fornecendo uma interface simplificada para integração com os serviços PIX, Webhooks e Cobranças da Delfinance.
Índice
- Requisitos
- Instalação
- Início Rápido
- Configuração e Autenticação
- Funcionalidades
- Exemplos de Uso
- Tratamento de Erros
- Suporte e Contribuição
Requisitos
- .NET 6.0+ ou .NET Framework 4.6.1+
- Credenciais de acesso Delfinance (API Key e Account ID)
Instalação
Via NuGet Package Manager
Install-Package DelSdk
Via .NET CLI
dotnet add package DelSdk
Via PackageReference (.csproj)
<PackageReference Include="DelSdk" Version="*" />
Início Rápido
using DelSdk.Abstractions.Configurations;
using DelSdk.Abstractions.Configurations.Enums;
using DelSdk.Abstractions.PixServices.Interfaces;
// Configurar o SDK
var options = new DelSdkConfigurations(
DelEnvironment.Sandbox, // ou DelEnvironment.Production
"sua-api-key",
"sua-account-id"
);
// Criar o client PIX
var pixClient = SdkClientFactory.CreatePixServicesClient(options);
// Exemplo: Consultar transferência
var transfer = await pixClient.GetTransferAsync("E00000000000000000000000000000000", CancellationToken.None);
Console.WriteLine($"Transferência: {transfer}");
Configuração e Autenticação
Ambientes
| Ambiente | Enum | URL Base |
|---|---|---|
| Sandbox | DelEnvironment.Sandbox |
https://apisandbox.delbank.com.br |
| Produção | DelEnvironment.Production |
https://api.delbank.com.br |
Headers de Autenticação
O SDK configura automaticamente os seguintes headers em todas as requisições:
| Header | Descrição | Obrigatório |
|---|---|---|
x-delbank-api-key |
Chave da API fornecida pela Delfinance | Sim |
x-delfinance-account-id |
ID da conta Delfinance | Sim |
Content-Type |
application/json |
Sim |
Accept |
application/json |
Sim |
Configuração básica:
using DelSdk.Abstractions.Configurations;
using DelSdk.Abstractions.Configurations.Enums;
var options = new DelSdkConfigurations(
DelEnvironment.Sandbox, // ou DelEnvironment.Production
apiKey: "sua-api-key",
accountId: "sua-account-id"
);
mTLS (Mutual TLS)
Importante: Em ambiente de produção, mTLS é obrigatório. Em sandbox, é opcional.
using System.Security.Cryptography.X509Certificates;
// Carregar certificado PFX (recomendado para Windows)
var certificate = new X509Certificate2(
"certificate.pfx",
"password",
X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet
);
// Ou carregar certificado PEM (conversão automática no Windows)
var certificate = X509Certificate2.CreateFromPemFile(
"certificate.crt",
"privatekey.key"
);
// Configurar SDK com mTLS
var options = new DelSdkConfigurations(
DelEnvironment.Production,
apiKey: "sua-api-key",
accountId: "sua-account-id"
)
{
MtlsClientCertificate = certificate
};
Nota: Para mais detalhes sobre mTLS, incluindo troubleshooting, consulte a documentação completa de mTLS.
Criando Clients
O SDK fornece três clients principais:
using DelSdk.Abstractions.Configurations;
var options = new DelSdkConfigurations(
DelEnvironment.Sandbox,
"sua-api-key",
"sua-account-id"
);
// Client PIX - QR Codes, Transferências, Chaves PIX
var pixClient = SdkClientFactory.CreatePixServicesClient(options);
// Client Webhooks - Notificações de eventos
var webhookClient = SdkClientFactory.CreateWebhookClient(options);
// Client Cobranças - Boletos e Pagamentos
var chargeClient = SdkClientFactory.CreateChargeServicesClient(options);
Funcionalidades
QR Code Estático
| Funcionalidade | Método | Descrição |
|---|---|---|
| Criar QR Code | CreateStaticQrCodeAsync() |
Cria um QR Code PIX estático com ou sem valor fixo |
| Consultar QR Code | GetStaticQrCodeAsync() |
Busca informações de um QR Code estático por transactionId |
| Listar Pagamentos | GetStaticQrCodePaymentsAsync() |
Lista todos os pagamentos recebidos de um QR Code estático |
| Cancelar QR Code | CancelStaticQrCodeAsync() |
Cancela um QR Code estático previamente criado |
QR Code Dinâmico Imediato
| Funcionalidade | Método | Descrição |
|---|---|---|
| Criar QR Code | CreateDynamicImmediateQrCodeAsync() |
Cria um QR Code dinâmico para pagamento imediato com expiração |
| Consultar QR Code | GetDynamicImmediateQrCodeAsync() |
Busca informações de um QR Code dinâmico por correlationId |
| Cancelar QR Code | CancelDynamicImmediateQrCodeAsync() |
Cancela um QR Code dinâmico imediato |
Nota: Ideal para cobranças imediatas com controle de expiração (padrão: 24 horas).
QR Code Dinâmico com Vencimento
| Funcionalidade | Método | Descrição |
|---|---|---|
| Criar QR Code | CreateDynamicDueDateQrCodeAsync() |
Cria um QR Code dinâmico com data de vencimento e encargos |
| Consultar QR Code | GetDynamicDueDateQrCodeAsync() |
Busca informações de um QR Code com vencimento por transactionId |
| Cancelar QR Code | CancelDynamicDueDateQrCodeAsync() |
Cancela um QR Code dinâmico com vencimento |
Nota: Suporta boleto PIX com vencimento, multas, juros, descontos e abatimentos.
Transferências e Pagamentos
| Funcionalidade | Método | Descrição |
|---|---|---|
| Consultar Transferência | GetTransferAsync() |
Consulta detalhes de uma transferência PIX ou interna por identificador |
| Consultar Transferência TED | GetTedTransferAsync() |
Consulta detalhes de uma transferência TED por identificador |
| Inicializar Pagamento (DICT) | InitializePaymentAsync() |
Inicializa um pagamento via chave PIX (CPF, CNPJ, e-mail, telefone, EVP) |
| Inicializar Pagamento (QR Code) | InitializeQrCodePaymentAsync() |
Inicializa um pagamento via payload EMV de QR Code |
| Criar Transferência PIX | CreateTransferAsync() |
Executa uma transferência PIX após inicialização |
| Criar Transferência TED | CreateTedTransferAsync() |
Executa uma transferência TED para outra instituição financeira |
Nota: As transferências requerem inicialização prévia via InitializePaymentAsync() ou InitializeQrCodePaymentAsync() para obter o endToEndId.
Gerenciamento de Chaves PIX
| Funcionalidade | Método | Descrição |
|---|---|---|
| Gerar Código de Autenticação | GenerateAuthCodeAsync() |
Gera código de autenticação para vincular chave PIX (e-mail ou telefone) |
| Criar Chave PIX | CreatePixKeyAsync() |
Cria/vincula uma nova chave PIX à conta |
| Listar Chaves PIX | GetPixKeysAsync() |
Lista todas as chaves PIX vinculadas à conta |
| Deletar Chave PIX | DeletePixKeyAsync() |
Remove uma chave PIX vinculada à conta |
Nota: Chaves do tipo EMAIL e PHONE requerem validação via código de autenticação gerado por GenerateAuthCodeAsync().
Webhooks
| Funcionalidade | Método | Descrição |
|---|---|---|
| Criar Webhook | CreateWebhookAsync() |
Registra um novo webhook para receber notificações de eventos |
| Listar Webhooks | GetWebhooksAsync() |
Lista todos os webhooks registrados pela API key |
| Consultar Webhook | GetWebhookByIdAsync() |
Consulta detalhes de um webhook específico por ID |
| Atualizar Webhook | UpdateWebhookAsync() |
Atualiza configuração de um webhook existente |
| Deletar Webhook | DeleteWebhookAsync() |
Remove um webhook registrado |
Tipos de Eventos Suportados:
CHARGE_PAID- Boleto pagoPIX_RECEIVED- PIX recebido (novo fluxo)PIX_PAYMENT_UPDATED- Atualização de status de pagamento PIXPIX_REFUNDED- Reembolso recebidoPIX_REFUND_PAYMENT_UPDATED- Erro em reembolsoTRANSFER_INTERNAL_CREDITED- Transferência interna recebidaTRANSFER_INTERNAL_DEBITED- Transferência interna enviadaTRANSFER_EXTERNAL_CREDITED- TED recebidaTRANSFER_EXTERNAL_DEBITED- TED enviadaINFRACTION_NOTIFICATION_CREATED- Notificação de infraçãoWHITELABEL_CUSTOMER_DOCUMENTATION_REJECTED- Documentos rejeitadosWHITELABEL_CUSTOMER_APPROVED- Cliente aprovado
Esquemas de Autorização:
NONE- Sem autenticaçãoBASIC- Basic Authentication (username:password base64)BEARER- Bearer Token (JWT ou API Key)HEADER- Header customizado
Cobranças (Charges)
| Funcionalidade | Método | Descrição |
|---|---|---|
| Criar Cobrança | CreateChargeAsync() |
Cria uma cobrança (boleto, boleto+PIX ou PIX dinâmico) |
| Consultar Cobrança | GetChargeByCorrelationIdAsync() |
Busca detalhes de uma cobrança por correlationId |
| Listar Cobranças | GetChargesAsync() |
Lista cobranças com filtros de data e paginação |
| Atualizar Vencimento | UpdateChargeAsync() |
Atualiza a data de vencimento de uma cobrança |
| Cancelar Cobrança | VoidChargeAsync() |
Cancela/anula uma cobrança pendente |
Tipos de Cobrança Suportados:
BANKSLIP- Boleto bancário tradicionalBANKSLIP_PIX- Boleto com opção de pagamento via PIXPIX_STATIC- Cobrança PIX estáticaPIX_DYNAMIC- Cobrança PIX dinâmicaPIX_DYNAMIC_DUEDATE- Cobrança PIX dinâmica com vencimento
Recursos:
- Multa e juros configuráveis (fixo ou percentual)
- Descontos e abatimentos
- Dados completos do pagador e endereço
- Geração automática de código de barras e linha digitável
- QR Code PIX integrado (para tipos BANKSLIP_PIX e PIX_*)
- Notificação automática ao pagador
Pagamentos de Boletos (Bill Payments)
| Funcionalidade | Método | Descrição |
|---|---|---|
| Consultar Pagamento | GetBillPaymentAsync() |
Consulta um pagamento de boleto realizado |
| Pagar Boleto | PayBillAsync() |
Realiza o pagamento de um boleto via código de barras ou linha digitável |
Recursos:
- Pagamento imediato ou agendado
- Suporte a código de barras ou linha digitável
- Idempotência com chave única
- Cálculo automático de multas, juros e descontos
- Comprovante completo com todos os detalhes
- Informações do beneficiário e banco emissor
Status de Pagamento:
PAID- Pago com sucessoSCHEDULED- Agendado para data futuraCHARGEBACKED- EstornadoPENDING_APPROVAL- Pendente de aprovaçãoSCHEDULE_FAILURE- Falha no agendamento
Exemplos de Uso
Criar QR Code Estático
var request = new CreateStaticQrCodeRequest
{
CorrelationId = Guid.NewGuid().ToString(),
PixKey = "11999999999",
Amount = 50.00m,
BankAccount = "123456",
BeneficiaryName = "Minha Empresa",
FormatResponse = QrCodeResponseFormat.PayloadAndQrCode
};
var response = await pixClient.CreateStaticQrCodeAsync(request, CancellationToken.None);
Console.WriteLine($"QR Code criado: {response.TransactionId}");
Console.WriteLine($"Payload: {response.PayloadPix}");
Criar QR Code Dinâmico Imediato
var request = new CreateDynamicImmediateQrCodeRequest
{
CorrelationId = Guid.NewGuid().ToString(),
Amount = 100.00m,
ExpiresIn = "3600", // 1 hora
FormatResponse = "PAYLOAD_AND_QRCODE"
};
var response = await pixClient.CreateDynamicImmediateQrCodeAsync(request, CancellationToken.None);
Console.WriteLine($"QR Code expira em: {response.ExpiresAt}");
Criar QR Code com Vencimento e Encargos
var request = new CreateDynamicDueDateQrCodeRequest
{
CorrelationId = Guid.NewGuid().ToString(),
Amount = 500.00m,
DueDate = DateTime.Now.AddDays(30),
MaxDaysOverdue = 60,
Taxes = new DynamicQrCodeTaxesDto
{
FineType = "PERCENTAGE",
FineAmount = 2.0m, // 2%
InterestType = "FIXED_AMOUNT",
InterestAmount = 1.0m, // R$ 1,00 por dia
DiscountType = "FIXED_AMOUNT",
DiscountAmount = 10.0m // R$ 10,00 de desconto
}
};
var response = await pixClient.CreateDynamicDueDateQrCodeAsync(request, CancellationToken.None);
Console.WriteLine($"Vencimento: {response.DueDate}");
Criar Transferência PIX
// Primeiro, inicialize o pagamento para obter o endToEndId
var initRequest = new PaymentInitializationRequest { Key = "11999999999" };
var initResponse = await pixClient.InitializePaymentAsync(initRequest, CancellationToken.None);
// Depois, execute a transferência
var transferRequest = new CreateTransferRequest
{
Amount = 100.00m,
EndToEndId = initResponse.EndToEndId,
Description = "Pagamento de serviços",
InitiationType = FundTransferPixType.Key,
Type = FundTransferType.Pix
};
var idempotencyKey = Guid.NewGuid().ToString();
var transferResponse = await pixClient.CreateTransferAsync(
transferRequest,
idempotencyKey,
CancellationToken.None
);
Console.WriteLine($"Transferência realizada: {transferResponse.Id}");
Console.WriteLine($"Status: {transferResponse.Status}");
Console.WriteLine($"Valor: R$ {transferResponse.Amount:N2}");
Criar Webhook
using DelSdk.Abstractions.Webhooks.Interfaces;
// Criar o client de webhooks
var webhookClient = SdkClientFactory.CreateWebhookClient(options);
// Criar webhook para receber notificações de PIX
var request = new CreateWebhookRequest
{
EventType = WebhookEventType.PixPaymentUpdated,
Url = "https://meusite.com.br/webhook/pix",
AuthorizationScheme = WebhookAuthorizationScheme.Bearer,
Authorization = "seu-token-secreto-aqui"
};
var response = await webhookClient.CreateWebhookAsync(request, CancellationToken.None);
Console.WriteLine($"Webhook criado com ID: {response.Id}");
Console.WriteLine($"Evento: {response.EventType}");
Console.WriteLine($"URL: {response.Url}");
Criar Cobrança (Boleto + PIX)
using DelSdk.Abstractions.ChargeServices.Interfaces;
// Criar o client de cobranças
var chargeClient = SdkClientFactory.CreateChargeServicesClient(options);
var request = new CreateChargeRequest
{
Type = "BANKSLIP_PIX", // Boleto com PIX
CorrelationId = Guid.NewGuid().ToString(),
Amount = 150.00m,
DueDate = DateTime.Now.AddDays(30),
Description = "Pagamento de mensalidade",
YourNumber = "12345", // Seu número (obrigatório)
Payer = new ChargePayerDto
{
Name = "João Silva",
Document = "12345678901",
Email = "joao@example.com",
Phone = new ChargePhoneDto
{
Prefix = "11",
Number = "999999999"
},
Address = new ChargePayerAddressDto
{
ZipCode = "01310-100",
PublicPlace = "Av. Paulista",
Number = "1000",
Neighborhood = "Bela Vista",
City = "São Paulo",
State = "SP"
}
},
LateFine = new ChargeFeeDto
{
Type = "Percentage",
Amount = 2.0m, // 2% de multa
Date = DateTime.Now.AddDays(31)
},
LatePayment = new ChargeFeeDto
{
Type = "Percentage",
Amount = 0.033m, // 0.033% ao dia (1% ao mês)
Date = DateTime.Now.AddDays(31)
},
NotifyPayerOfCreation = true
};
var response = await chargeClient.CreateChargeAsync(request, CancellationToken.None);
Console.WriteLine($"Cobrança criada: {response.Key}");
Console.WriteLine($"Código de barras: {response.BarCode}");
Console.WriteLine($"Linha digitável: {response.DigitableLine}");
Console.WriteLine($"QR Code PIX: {response.QrCode}");
Pagar Boleto
var payRequest = new PayBillRequest
{
BarCode = "12345678901234567890123456789012345678901234",
Amount = 150.00m
// PayAt = DateTime.Now.AddDays(1) // Para agendar pagamento
};
var idempotencyKey = Guid.NewGuid().ToString();
var proof = await chargeClient.PayBillAsync(
payRequest,
idempotencyKey,
CancellationToken.None
);
Console.WriteLine($"Pagamento ID: {proof.Id}");
Console.WriteLine($"Status: {proof.Status}");
Console.WriteLine($"Valor pago: R$ {proof.PaidAmount:N2}");
Console.WriteLine($"Beneficiário: {proof.Beneficiary.NameOrCompanyName}");
if (proof.Status == "PAID")
{
Console.WriteLine($"✅ Boleto pago em {proof.PaidAt:dd/MM/yyyy HH:mm:ss}");
}
else if (proof.Status == "SCHEDULED")
{
Console.WriteLine($"📅 Pagamento agendado para {proof.PayAt:dd/MM/yyyy}");
}
Mais exemplos: Consulte o projeto
DelSdk.Samplespara exemplos completos de todos os endpoints.
Tratamento de Erros
O SDK lança exceções específicas para cada domínio:
PIX e Transferências
using DelSdk.Abstractions.Errors;
try
{
var response = await pixClient.CreateStaticQrCodeAsync(request, CancellationToken.None);
}
catch (DelSdkApiException ex)
{
Console.WriteLine($"Erro da API: {ex.ErrorResponse.Title}");
Console.WriteLine($"Status HTTP: {ex.StatusCode}");
Console.WriteLine($"Trace ID: {ex.ErrorResponse.TraceId}");
foreach (var error in ex.ErrorResponse.Errors)
{
Console.WriteLine($" - {error}");
}
}
catch (HttpRequestException ex)
{
Console.WriteLine($"Erro de rede: {ex.Message}");
}
Cobranças
try
{
var response = await chargeClient.CreateChargeAsync(request, CancellationToken.None);
}
catch (ChargeApiException ex)
{
Console.WriteLine($"Erro de Cobrança: {ex.ErrorResponse.Title}");
Console.WriteLine($"Status: {ex.StatusCode}");
Console.WriteLine($"Trace ID: {ex.ErrorResponse.TraceId}");
if (ex.ErrorResponse.Errors != null)
{
foreach (var (field, messages) in ex.ErrorResponse.Errors)
{
Console.WriteLine($"{field}:");
foreach (var msg in messages)
{
Console.WriteLine($" - {msg}");
}
}
}
}
Documentação Técnica
Para mais detalhes sobre os endpoints e parâmetros, consulte a Documentação da API Delfinance.
Desenvolvido pela equipe Delfinance 🚀
| 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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
- Newtonsoft.Json (>= 13.0.4)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.