Das C# SDK bietet bequemen Zugriff auf die Dodo Payments REST API aus in C# geschriebenen Anwendungen. Es verfügt über eine asynchrone Task-basierte API mit starker Typisierung und befindet sich derzeit in der Beta-Phase.
Das C# SDK befindet sich derzeit in der Beta-Phase. Wir arbeiten aktiv an Verbesserungen und freuen uns über Ihr Feedback.
Installation
Installieren Sie das SDK mit der .NET CLI:
dotnet add package DodoPayments.Client
Das SDK erfordert .NET 8.0 oder höher. Es funktioniert mit ASP.NET Core, Konsolenanwendungen und anderen .NET-Projekttypen.
Schnellstart
Initialisieren Sie den Client und erstellen Sie eine Checkout-Sitzung:
using System ;
using DodoPayments . Client ;
using DodoPayments . Client . Models . CheckoutSessions ;
// Configured using the DODO_PAYMENTS_API_KEY and DODO_PAYMENTS_BASE_URL environment variables
DodoPaymentsClient client = new ();
CheckoutSessionCreateParams parameters = new ()
{
ProductCart =
[
new ()
{
ProductID = "product_id" ,
Quantity = 1 ,
},
],
};
var checkoutSessionResponse = await client . CheckoutSessions . Create ( parameters );
Console . WriteLine ( checkoutSessionResponse . SessionId );
Bewahren Sie Ihre API-Schlüssel immer sicher auf, indem Sie Umgebungsvariablen, Benutzgeheimnisse oder Azure Key Vault verwenden. Hardcodieren Sie sie niemals in Ihrem Quellcode oder committen Sie sie in die Versionskontrolle.
Kernfunktionen
Async/Await Vollständige asynchrone Task-basierte API für nicht-blockierende Operationen
Starke Typisierung Umfassende Typensicherheit mit nullable Referenztypen
Dependency Injection Erstklassige Unterstützung für .NET Dependency Injection
Konfiguration Einfache Konfiguration über Umgebungsvariablen oder appsettings.json
Konfiguration
Umgebungsvariablen
Konfigurieren Sie mit Umgebungsvariablen:
DODO_PAYMENTS_API_KEY = your_api_key_here
// Automatically reads from environment variables
DodoPaymentsClient client = new ();
Manuelle Konfiguration
Konfigurieren Sie manuell mit einem Bearer-Token:
DodoPaymentsClient client = new () { BearerToken = "My Bearer Token" };
Häufige Operationen
Erstellen einer Checkout-Sitzung
Generieren Sie eine Checkout-Sitzung:
var parameters = new CheckoutSessionCreateParams
{
ProductCart =
[
new ()
{
ProductID = "prod_123" ,
Quantity = 1
}
],
ReturnUrl = "https://yourdomain.com/return"
};
var session = await client . CheckoutSessions . Create ( parameters );
Console . WriteLine ( $"Checkout URL: { session . Url } " );
Kunden verwalten
Erstellen und abrufen von Kundeninformationen:
// Create a customer
var createParams = new CustomerCreateParams
{
Email = "[email protected] " ,
Name = "John Doe" ,
Metadata = new Dictionary < string , string >
{
{ "user_id" , "12345" }
}
};
var customer = await client . Customers . Create ( createParams );
// Retrieve customer
var retrieved = await client . Customers . Retrieve ( "cus_123" );
Console . WriteLine ( $"Customer: { retrieved . Name } ( { retrieved . Email } )" );
Abonnements verwalten
Erstellen und verwalten Sie wiederkehrende Abonnements:
// Create a subscription
var subscriptionParams = new SubscriptionCreateParams
{
CustomerID = "cus_123" ,
ProductID = "prod_456" ,
PriceID = "price_789"
};
var subscription = await client . Subscriptions . Create ( subscriptionParams );
// Cancel subscription
await client . Subscriptions . Cancel ( subscription . Id );
ASP.NET Core Integration
Dienstregistrierung
Registrieren Sie den Client in Program.cs:
using DodoPayments . Client ;
var builder = WebApplication . CreateBuilder ( args );
// Register DodoPayments client
builder . Services . AddSingleton < DodoPaymentsClient >( sp =>
{
var configuration = sp . GetRequiredService < IConfiguration >();
return new DodoPaymentsClient
{
BearerToken = configuration [ "DodoPayments:ApiKey" ]
};
});
builder . Services . AddControllers ();
var app = builder . Build ();
app . MapControllers ();
app . Run ();
Konfiguration
Fügen Sie die Konfiguration in appsettings.json hinzu:
{
"DodoPayments" : {
"ApiKey" : "your_api_key_here"
}
}
API-Controller
Erstellen Sie einen Controller mit Dependency Injection:
using Microsoft . AspNetCore . Mvc ;
using DodoPayments . Client ;
using DodoPayments . Client . Models . CheckoutSessions ;
[ ApiController ]
[ Route ( "api/[controller]" )]
public class PaymentsController : ControllerBase
{
private readonly DodoPaymentsClient _client ;
private readonly ILogger < PaymentsController > _logger ;
public PaymentsController ( DodoPaymentsClient client , ILogger < PaymentsController > logger )
{
_client = client ;
_logger = logger ;
}
[ HttpPost ( "checkout" )]
public async Task < IActionResult > CreateCheckout ([ FromBody ] CheckoutRequest request )
{
try
{
var parameters = new CheckoutSessionCreateParams
{
ProductCart = request . Items ,
ReturnUrl = Url . Action ( "Return" , "Checkout" , null , Request . Scheme )
};
var session = await _client . CheckoutSessions . Create ( parameters );
return Ok ( new { checkoutUrl = session . Url });
}
catch ( Exception ex )
{
_logger . LogError ( ex , "Failed to create checkout" );
return BadRequest ( new { error = ex . Message });
}
}
}
public record CheckoutRequest ( List < ProductCartItem > Items );
Service-Layer-Muster
Erstellen Sie einen Dienst für Geschäftslogik:
public interface IPaymentService
{
Task < CheckoutSessionResponse > CreateCheckoutAsync ( List < ProductCartItem > items );
Task < PaymentResponse > ProcessPaymentAsync ( decimal amount , string currency , string customerId );
}
public class PaymentService : IPaymentService
{
private readonly DodoPaymentsClient _client ;
private readonly ILogger < PaymentService > _logger ;
public PaymentService ( DodoPaymentsClient client , ILogger < PaymentService > logger )
{
_client = client ;
_logger = logger ;
}
public async Task < CheckoutSessionResponse > CreateCheckoutAsync ( List < ProductCartItem > items )
{
var parameters = new CheckoutSessionCreateParams
{
ProductCart = items ,
ReturnUrl = "https://yourdomain.com/return"
};
return await _client . CheckoutSessions . Create ( parameters );
}
public async Task < PaymentResponse > ProcessPaymentAsync (
decimal amount ,
string currency ,
string customerId )
{
try
{
var parameters = new PaymentCreateParams
{
Amount = ( long )( amount * 100 ), // Convert to cents
Currency = currency ,
CustomerID = customerId
};
return await _client . Payments . Create ( parameters );
}
catch ( Exception ex )
{
_logger . LogError ( ex , "Failed to process payment" );
throw ;
}
}
}
Benutzgeheimnisse (Entwicklung)
Verwenden Sie für die Entwicklung Benutzgeheimnisse, um API-Schlüssel zu speichern:
dotnet user-secrets init
dotnet user-secrets set "DodoPayments:ApiKey" "your_api_key_here"
Testen
Beispiel für einen Unit-Test mit xUnit:
using Xunit ;
using DodoPayments . Client ;
using DodoPayments . Client . Models . CheckoutSessions ;
public class PaymentServiceTests
{
private readonly DodoPaymentsClient _client ;
public PaymentServiceTests ()
{
_client = new DodoPaymentsClient
{
BearerToken = "test_key"
};
}
[ Fact ]
public async Task CreateCheckout_ShouldReturnSession ()
{
// Arrange
var parameters = new CheckoutSessionCreateParams
{
ProductCart =
[
new ()
{
ProductID = "prod_test" ,
Quantity = 1
}
]
};
// Act
var session = await _client . CheckoutSessions . Create ( parameters );
// Assert
Assert . NotNull ( session );
Assert . NotNull ( session . SessionId );
}
}
Ressourcen
Unterstützung
Brauchen Sie Hilfe mit dem C# SDK?
Mitwirken
Da sich das SDK in der Beta-Phase befindet, sind Ihr Feedback und Ihre Beiträge besonders wertvoll! Überprüfen Sie die Mitwirkungsrichtlinien , um loszulegen.