CodiePay 8.0.4
dotnet add package CodiePay --version 8.0.4
NuGet\Install-Package CodiePay -Version 8.0.4
<PackageReference Include="CodiePay" Version="8.0.4" />
<PackageVersion Include="CodiePay" Version="8.0.4" />
<PackageReference Include="CodiePay" />
paket add CodiePay --version 8.0.4
#r "nuget: CodiePay, 8.0.4"
#:package CodiePay@8.0.4
#addin nuget:?package=CodiePay&version=8.0.4
#tool nuget:?package=CodiePay&version=8.0.4
CodiePay 🚀
CodiePay é uma abstração de hub de pagamentos moderna e flexível projetada para suportar múltiplos provedores de pagamentos. Atualmente com suporte completo para Asaas, nossa arquitetura permite expansão futura para outros gateways como Stripe, Mercado Pago, PayPal e mais, mantendo uma API unificada e consistente.
🎯 Visão de Futuro
Enquanto nossa implementação atual foca no provedor Asaas (com suporte a 100% das funcionalidades), a arquitetura do CodiePay foi concebida para crescimento escalável:
- ✅ Asaas - Suporte completo implementado
- 🚧 Stripe - Em desenvolvimento
- 📋 Mercado Pago - Roadmap
- 📋 PayPal - Roadmap
- 📋 Outros provedores - Arquitetura pronta para expansão
✨ Funcionalidades (Suporte Asaas)
- 🎯 API Unificada - Interface simples preparada para múltiplos provedores
- 💳 Múltiplos Métodos - Pix, Boleto, Cartão de Crédito
- 🔄 Assinaturas - Cobranças recorrentes com ciclos flexíveis
- 💰 Splits - Divisão de pagamentos entre múltiplas contas
- 🔁 Estornos - Processamento de reembolsos simplificado
- 📊 Paginação - Listagem de pagamentos com filtros avançados
- ✅ Validação - Validação automática de dados com FluentValidation
- 🏗️ Arquitetura Extensível - Fácil adição de novos provedores
📦 Instalação
dotnet add package CodiePay
🚀 Configuração Rápida
using Microsoft.Extensions.DependencyInjection;
using CodiePay.Hub;
using CodiePay.Infra.Factories;
// Configurar serviços
var services = new ServiceCollection();
var serviceProvider = services.BuildServiceProvider();
// Criar factory e PayHub
var factory = new HubProviderFactory(serviceProvider);
var payHub = new PayHub(factory);
💡 Exemplos de Uso
1. Criar Cobrança Pix
var dto = new CheckoutDto
{
// Dados do cliente
CustomerName = "João da Silva",
CustomerCpfCnpj = "12345678909",
CustomerEmail = "joao@example.com",
CustomerPhone = "43984298786",
CustomerPostalCode = "86010190",
CustomerCity = "Londrina",
CustomerState = "PR",
CustomerStreet = "Avenida Duque de Caxias",
CustomerNumber = "1726",
// Dados do pagamento
PaymentBillingType = BillingType.Pix,
PaymentValue = 100.00m,
PaymentDueDate = DateTime.UtcNow,
// Configuração do provedor (atualmente Asaas)
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.DoPaymentCheckout(dto);
if (result.Success)
{
Console.WriteLine($"Pagamento criado: {result.Result.PaymentId}");
Console.WriteLine($"QR Code Pix: {result.Result.PixQrCode}");
Console.WriteLine($"Imagem QR Code: {result.Result.PixQrCodeImage}");
}
2. Criar Cobrança com Cartão de Crédito
var dto = new CheckoutDto
{
// Dados do cliente
CustomerName = "Maria Santos",
CustomerCpfCnpj = "98765432100",
CustomerEmail = "maria@example.com",
// Dados do pagamento
PaymentBillingType = BillingType.Credit,
PaymentValue = 150.50m,
PaymentDueDate = DateTime.UtcNow,
// Dados do cartão
CreditCardHolderName = "Maria Santos",
CreditCardNumber = "4111111111111111",
CreditCardExpiryMonth = "12",
CreditCardExpiryYear = "2027",
CreditCardCCV = "123",
RemoteIp = "189.45.123.10",
// Dados do titular do cartão
CreditCardHolderInfoName = "Maria Santos",
CreditCardHolderInfoEmail = "maria@example.com",
CreditCardHolderInfoCpfCnpj = "98765432100",
CreditCardHolderInfoPostalCode = "86020010",
CreditCardHolderInfoAddressNumber = "123",
CreditCardHolderInfoMobilePhone = "43999998888",
// Configuração do provedor (atualmente Asaas)
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.DoPaymentCheckout(dto);
if (result.Success)
{
Console.WriteLine($"Pagamento aprovado: {result.Result.PaymentId}");
Console.WriteLine($"URL do recibo: {result.Result.TransactionReceiptUrl}");
}
3. Criar Assinatura Mensal
var dto = new CheckoutDto
{
// Dados do cliente
CustomerName = "Empresa ABC Ltda",
CustomerCpfCnpj = "12345678909",
CustomerEmail = "financeiro@empresaabc.com",
// Dados da assinatura
SubscriptionBillingType = BillingType.Pix,
SubscriptionValue = 29.90m,
SubscriptionNextDueDate = DateTime.UtcNow,
SubscriptionCycle = BillingInterval.Monthly,
SubscriptionDescription = "Plano Premium Mensal",
SubscriptionUpdatePendingPayments = true,
// Configuração do provedor (atualmente Asaas)
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.DoSubscriptionCheckout(dto);
if (result.Success)
{
Console.WriteLine($"Assinatura criada: {result.Result.SubscriptionId}");
Console.WriteLine($"QR Code para primeira cobrança: {result.Result.PixQrCode}");
Console.WriteLine($"Status: {result.Result.StatusPaymentSubscription}");
}
4. Criar Cobrança com Splits
var dto = new CheckoutDto
{
// Dados do cliente
CustomerName = "Loja Exemplo",
CustomerCpfCnpj = "12345678909",
// Dados do pagamento
PaymentBillingType = BillingType.Pix,
PaymentValue = 1000.00m,
PaymentDueDate = DateTime.UtcNow,
// Configuração dos splits
Splits = new List<SplitDto>
{
new() {
WalletId = "wallet_id_principal",
FixedValue = 700.00m,
Description = "Receita principal"
},
new() {
WalletId = "wallet_id_secundario",
FixedValue = 300.00m,
Description = "Comissão parceiro"
}
},
// Configuração do provedor (atualmente Asaas)
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.DoPaymentCheckout(dto);
if (result.Success)
{
Console.WriteLine($"Pagamento com splits criado: {result.Result.PaymentId}");
Console.WriteLine($"Valor total: {result.Result.Value}");
Console.WriteLine($"Splits configurados: {dto.Splits.Count}");
}
5. Listar Pagamentos
var request = new PaymentSearchRequestDto
{
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/",
Status = "PENDING", // PENDING, CONFIRMED, RECEIVED, OVERDUE, REFUNDED
Page = 1,
PageSize = 20,
Customer = "customer_id_opcional",
BillingType = "PIX" // PIX, BOLETO, CREDIT_CARD
};
var result = await payHub.GetPaymentsPaginatedAsync(request);
Console.WriteLine($"Total de pagamentos: {result.TotalCount}");
Console.WriteLine($"Página atual: {result.Offset / result.Limit + 1}");
foreach (var payment in result.Data)
{
Console.WriteLine($"ID: {payment.Id}");
Console.WriteLine($"Valor: R$ {payment.Value}");
Console.WriteLine($"Status: {payment.Status}");
Console.WriteLine($"Vencimento: {payment.DueDate:dd/MM/yyyy}");
Console.WriteLine("---");
}
6. Atualizar Pagamento
var dto = new PaymentDto
{
PaymentId = "pay_123456789",
Value = 150.00m,
DueDate = DateTime.Now.AddDays(5),
Description = "Pagamento atualizado - " + DateTime.Now.ToString(),
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.UpdatePayment(dto);
if (result != null)
{
Console.WriteLine($"Pagamento atualizado: {result.Id}");
Console.WriteLine($"Novo valor: R$ {result.Value}");
Console.WriteLine($"Nova data de vencimento: {result.DueDate:dd/MM/yyyy}");
}
7. Cancelar Pagamento
var dto = new RequestDto
{
Id = "pay_123456789",
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.CancelPayment(dto);
if (result)
{
Console.WriteLine("Pagamento cancelado com sucesso");
}
8. Estornar Pagamento Boleto
var dto = new RequestDto
{
Id = "pay_123456789",
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.RefundBoletoPayment(dto);
if (!string.IsNullOrEmpty(result))
{
Console.WriteLine($"Solicitação de estorno criada: {result}");
Console.WriteLine("Acompanhe o status através da URL retornada");
}
9. Estornar Pagamento Pix/Cartão
var dto = new CreditOrPixRefundDto
{
Id = "pay_123456789",
Value = 50.00m, // Valor opcional (se não informado, estorna valor total)
Description = "Estorno parcial - produto devolvido",
ApiKey = "sua_api_key_aqui",
ProviderType = ProviderType.Asaas, // Único provedor disponível atualmente
BaseUrl = "https://api-sandbox.asaas.com/v3/"
};
var result = await payHub.RefundCreditOrPixPayment(dto);
if (result.Success)
{
Console.WriteLine($"✅ {result.Message}");
Console.WriteLine("Estorno processado com sucesso");
}
else
{
Console.WriteLine($"❌ {result.Message}");
Console.WriteLine("Não foi possível processar o estorno");
}
📋 Respostas da API
CheckoutResponse
public class CheckoutResponse
{
public string PaymentId { get; set; }
public string SubscriptionId { get; set; }
public BillingType BillingType { get; set; }
public decimal Value { get; set; }
public string Status { get; set; }
public string PixQrCode { get; set; }
public string PixQrCodeImage { get; set; }
public string BankSlipUrl { get; set; }
public string TransactionReceiptUrl { get; set; }
public string InvoiceUrl { get; set; }
public DateTime DueDate { get; set; }
public string StatusPaymentSubscription { get; set; }
}
RefundResultResponse
public class RefundResultResponse
{
public bool Success { get; set; }
public string Message { get; set; }
}
ResultDto<T>
public class ResultDto<T>
{
public bool Success { get; set; }
public T Result { get; set; }
public List<string> Errors { get; set; }
}
🔧 Configuração de Ambiente (Asaas)
Sandbox (Desenvolvimento)
BaseUrl = "https://api-sandbox.asaas.com/v3/"
Produção
BaseUrl = "https://www.asaas.com/api/v3/"
Nota: Atualmente o CodiePay suporta apenas o provedor Asaas. A arquitetura foi projetada para permitir fácil expansão para outros provedores no futuro.
🎯 Tipos de Dados
BillingType
Pix- Pagamento instantâneo via QR CodeBoleto- Boleto bancárioCredit- Cartão de crédito
BillingInterval (Assinaturas)
Weekly- SemanalMonthly- MensalYearly- Anual
PaymentStatus
Pending- Aguardando pagamentoConfirmed- ConfirmadoReceived- RecebidoOverdue- VencidoRefunded- EstornadoRefundInProgress- Estorno em andamentoRefundRequest- Solicitação de estorno
🛡️ Segurança
- Nunca exponha sua API Key em código cliente
- Utilize sempre HTTPS em produção
- Implemente validação adicional no backend
- Configure webhooks para receber notificações de status
🤝 Contribuição
Contribuições são bem-vindas! Estamos especialmente interessados em:
- 🚀 Novos Provedores - Ajuda a implementar Stripe, Mercado Pago, PayPal
- 🐛 Bug Fixes - Correções e melhorias
- 📚 Documentação - Exemplos e guias
- ✨ Features - Novas funcionalidades
Por favor:
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
🛣️ Roadmap de Provedores
- ✅ Asaas - Suporte completo
- 🚧 Stripe - Em desenvolvimento
- 📋 Mercado Pago - Próximo da fila
- 📋 PayPal - Planejado
- 📋 Open Finance - Futuro
📄 Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
🆘 Suporte
- 📧 Email: codiebackend@gmail.com
Feito com ❤️ pela equipe Codie Digital
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. 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. |
-
net8.0
- CodiePay.Domain (>= 3.0.2)
- CodiePay.Infra (>= 3.0.2)
- FluentValidation (>= 12.0.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 |
|---|---|---|
| 8.0.4 | 112 | 4/2/2026 |
| 8.0.3 | 101 | 4/2/2026 |
| 8.0.2 | 100 | 4/2/2026 |
| 8.0.1 | 107 | 4/2/2026 |
| 8.0.0 | 103 | 4/1/2026 |
| 7.7.0 | 104 | 4/1/2026 |
| 7.6.0 | 109 | 3/30/2026 |
| 7.5.0 | 108 | 3/23/2026 |
| 7.4.0 | 111 | 3/16/2026 |
| 7.3.0 | 111 | 3/16/2026 |
| 7.2.0 | 103 | 3/16/2026 |
| 7.1.0 | 106 | 3/16/2026 |
| 7.0.0 | 106 | 3/13/2026 |
| 6.5.0 | 108 | 3/13/2026 |
| 6.3.0 | 104 | 3/13/2026 |
| 6.2.0 | 107 | 3/13/2026 |
| 5.4.0 | 104 | 3/13/2026 |
| 5.3.0 | 106 | 3/13/2026 |
| 5.2.0 | 106 | 3/12/2026 |
| 5.1.0 | 110 | 3/12/2026 |