C# SDK से C# में लिखे गए अनुप्रयोगों से Dodo Payments REST API तक सुविधाजनक पहुँच प्रदान होती है। इसमें एक असिंक्रोनस Task-आधारित API है जिसमें स्ट्रॉन्ग टाइपिंग, ऑटोमैटिक रिट्राइज, और व्यापक त्रुटि प्रबंधन है।
स्थापना
पैकेज को NuGet से इंस्टॉल करें:
dotnet add package DodoPayments.Client
SDK के लिए .NET 8.0 या इसके बाद का संस्करण आवश्यक है। यह ASP.NET Core, कंसोल अनुप्रयोगों, और अन्य .NET प्रोजेक्ट प्रकारों के साथ काम करता है।
त्वरित आरम्भ
क्लाइंट को इनिशियलाइज़ करें और एक चेकआउट सेशन बनाएं:
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 );
हमेशा अपने API कुंजियों को environment variables, user secrets, या Azure Key Vault का उपयोग करके सुरक्षित रूप से संग्रहीत करें। उन्हें अपने स्रोत कोड में हार्डकोड न करें या संस्करण नियंत्रण में कमिट न करें।
प्रमुख विशेषताएँ
Async/Await Full async Task-based API के साथ गैर-अवरुद्ध संचालन
Strong Typing Nullable reference types के साथ व्यापक प्रकार सुरक्षा
Smart Retries अस्थायी त्रुटियों के लिए एक्सपोनेंशियल बैकऑफ़ के साथ स्वचालित रिट्राइज
Error Handling सटीक त्रुटि प्रबंधन के लिए बिल्ट-इन अपवाद पदानुक्रम
कॉन्फ़िगरेशन
पर्यावरण चर
DODO_PAYMENTS_API_KEY = your_api_key_here
// Automatically reads from environment variables
DodoPaymentsClient client = new ();
प्रॉपर्टी पर्यावरण चर आवश्यक डिफ़ॉल्ट मान BearerTokenDODO_PAYMENTS_API_KEYtrue - WebhookKeyDODO_PAYMENTS_WEBHOOK_KEYfalse - BaseUrlDODO_PAYMENTS_BASE_URLtrue "https://live.dodopayments.com"
मैनुअल कॉन्फिगरेशन
DodoPaymentsClient client = new () { BearerToken = "My Bearer Token" };
वातावरण
लाइव और टेस्ट मोड के बीच स्विच करें:
using DodoPayments . Client . Core ;
DodoPaymentsClient client = new () { BaseUrl = EnvironmentUrl . TestMode };
रिट्राइज
SDK डिफ़ॉल्ट रूप से 2 बार एक्सपोनेंशियल बैकऑफ़ के साथ स्वचालित रूप से पुनः प्रयास करता है। यह कनेक्शन त्रुटियों और स्थिति कोड 408, 409, 429, और 5xx पर पुनः प्रयास करता है।
// Custom retry count
DodoPaymentsClient client = new () { MaxRetries = 3 };
टाइमआउट्स
अनुरोध डिफ़ॉल्ट रूप से 1 मिनट के बाद टाइम आउट हो जाते हैं।
DodoPaymentsClient client = new () { Timeout = TimeSpan . FromSeconds ( 30 ) };
प्रति-अनुरोध ओवरराइड्स
एकल अनुरोध के लिए अस्थायी रूप से कॉन्फ़िगरेशन को WithOptions का उपयोग करके संशोधित करें:
var response = await client
. WithOptions ( options => options with
{
Timeout = TimeSpan . FromSeconds ( 10 ),
MaxRetries = 5 ,
})
. CheckoutSessions . Create ( parameters );
सामान्य ऑपरेशन्स
एक चेकआउट सेशन बनाएँ
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 } " );
ग्राहकों का प्रबंधन करें
// Create a customer
var customer = await client . Customers . Create ( new CustomerCreateParams
{
Email = "customer@example.com" ,
Name = "John Doe"
});
// Retrieve customer
var retrieved = await client . Customers . Retrieve ( "cus_123" );
Console . WriteLine ( $"Customer: { retrieved . Name } ( { retrieved . Email } )" );
सब्सक्रिप्शन को हैंडल करें
// Create a subscription
var subscription = await client . Subscriptions . Create ( new SubscriptionCreateParams
{
CustomerID = "cus_123" ,
ProductID = "prod_456" ,
PriceID = "price_789"
});
// Cancel subscription
await client . Subscriptions . Cancel ( subscription . Id );
त्रुटि प्रबंधन
SDK HTTP स्थिति कोड के आधार पर विशिष्ट अपवाद फेंकता है। सभी 4xx त्रुटियाँ DodoPayments4xxException से प्राप्त होती हैं।
स्थिति अपवाद 400 DodoPaymentsBadRequestException401 DodoPaymentsUnauthorizedException403 DodoPaymentsForbiddenException404 DodoPaymentsNotFoundException422 DodoPaymentsUnprocessableEntityException429 DodoPaymentsRateLimitException5xx DodoPayments5xxExceptionअन्य DodoPaymentsUnexpectedStatusCodeException
अन्य अपवाद प्रकार:
DodoPaymentsIOException: I/O नेटवर्किंग त्रुटियाँ
DodoPaymentsInvalidDataException: पार्स किए गए डेटा की व्याख्या में विफलता
DodoPaymentsException: सभी अपवादों के लिए बेस क्लास
पृष्ठांकन
ऑटो-पृष्ठांकन
सभी पृष्ठों में सभी परिणामों के माध्यम से इंटरेट करें Paginate मेथड का उपयोग करते हुए, जो IAsyncEnumerable लौटाती है:
var page = await client . Payments . List ( parameters );
await foreach ( var item in page . Paginate ())
{
Console . WriteLine ( item );
}
मैनुअल पृष्ठांकन
var page = await client . Payments . List ();
while ( true )
{
foreach ( var item in page . Items )
{
Console . WriteLine ( item );
}
if ( ! page . HasNext ())
{
break ;
}
page = await page . Next ();
}
ASP.NET कोर एकीकरण
अपने DI कंटेनर में क्लाइंट को रजिस्टर करें:
using DodoPayments . Client ;
var builder = WebApplication . CreateBuilder ( args );
builder . Services . AddSingleton < DodoPaymentsClient >( sp =>
{
var configuration = sp . GetRequiredService < IConfiguration >();
return new DodoPaymentsClient
{
BearerToken = configuration [ "DodoPayments:ApiKey" ]
};
});
var app = builder . Build ();
app . Run ();
{
"DodoPayments" : {
"ApiKey" : "your_api_key_here"
}
}
विकास के लिए, चाबियाँ appsettings.json में संग्रहीत करने के बजाय उपयोगकर्ता रहस्य का उपयोग करें: dotnet user-secrets init
dotnet user-secrets set "DodoPayments:ApiKey" "your_api_key_here"
संसाधन
NuGet Package NuGet गैलरी पर पैकेज देखें
GitHub Repository सोर्स कोड देखें और योगदान दें
API Reference संपूर्ण API दस्तावेज़
Discord Community डेवलपर्स के साथ सहायता प्राप्त करें और कनेक्ट करें
समर्थन
C# SDK के साथ मदद चाहिए?