मुख्य सामग्री पर जाएं
C# SDK C# में लिखे गए अनुप्रयोगों से Dodo Payments REST API तक सुविधाजनक पहुँच प्रदान करता है। इसमें मजबूत टाइपिंग के साथ async Task-आधारित API है।

स्थापना

SDK को .NET CLI का उपयोग करके इंस्टॉल करें:
dotnet add package DodoPayments.Client
SDK को .NET Standard 2.0 या उससे नवीनतम की आवश्यकता होती है। यह ASP.NET Core, Console अनुप्रयोगों, और अन्य .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 के साथ व्यापक प्रकार सुरक्षा

Dependency Injection

.NET dependency injection के लिए प्रथम श्रेणी समर्थन

Configuration

environment variables या appsettings.json के माध्यम से सरल कॉन्फ़िगरेशन

कॉन्फ़िगरेशन

पर्यावरण चर

पर्यावरण चर का उपयोग करके कॉन्फ़िगर करें:
.env
DODO_PAYMENTS_API_KEY=your_api_key_here
// Automatically reads from environment variables
DodoPaymentsClient client = new();
उपलब्ध विकल्पों के लिए इस तालिका को देखें:
PropertyEnvironment variableRequiredDefault value
BearerTokenDODO_PAYMENTS_API_KEYtrue-
WebhookKeyDODO_PAYMENTS_WEBHOOK_KEYfalse-
BaseUrlDODO_PAYMENTS_BASE_URLtrue"https://live.dodopayments.com"

मैन्युअल कॉन्फ़िगरेशन

bearer token के साथ मैन्युअल रूप से कॉन्फ़िगर करें:
DodoPaymentsClient client = new() { BearerToken = "My Bearer Token" };

सामान्य संचालन

एक चेकआउट सेशन बनाएं

एक चेकआउट सेशन उत्पन्न करें:
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 createParams = new CustomerCreateParams
{
    Email = "customer@example.com",
    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})");

सदस्यताएँ संभालें

पुनरावर्ती सदस्यताओं को बनाएं और प्रबंधित करें:
// 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);

पृष्ठांकन

SDK ऐसे मेथड परिभाषित करता है जो परिणामों की पृष्ठीकृत सूचियाँ लौटाते हैं, जिससे परिणामों तक एक समय में एक पेज या सभी पेजों में आइटम-दर-आइटम 접근 करने के सुविधाजनक तरीके मिलते हैं।

स्वचालित पृष्ठांकन

सभी पेजों में पूरे परिणामों के माध्यम से इटेरेट करने के लिए Paginate मेथड का उपयोग करें:
using System;

var page = await client.Payments.List(parameters);
await foreach (var item in page.Paginate())
{
    Console.WriteLine(item);
}

मैन्युअल पृष्ठांकन

व्यक्तिगत पेज आइटम तक पहुँचने और अगला पेज मैन्युअल रूप से अनुरोध करने के लिए:
using System;

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 Core एकीकरण

सेवा पंजीकरण

Program.cs में क्लाइंट को पंजीकृत करें:
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();

कॉन्फ़िगरेशन

appsettings.json में कॉन्फ़िगरेशन जोड़ें:
appsettings.json
{
  "DodoPayments": {
    "ApiKey": "your_api_key_here"
  }
}

API कंट्रोलर

डिपेंडेंसी इंजेक्शन का उपयोग करते हुए एक कंट्रोलर बनाएं:
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);

सेवा परत पैटर्न

व्यावसायिक तर्क के लिए एक सेवा बनाएं:
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;
        }
    }
}

उपयोगकर्ता रहस्य (डेवलपमेंट)

डेवलपमेंट के लिए, API कुंजियों को संग्रहीत करने के लिए user secrets का उपयोग करें:
dotnet user-secrets init
dotnet user-secrets set "DodoPayments:ApiKey" "your_api_key_here"

परीक्षण

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);
    }
}

संसाधन

समर्थन

C# SDK के साथ मदद चाहिए?
  • Discord: रियल-टाइम सहायता के लिए हमारे community server में शामिल हों
  • Email: हमें support@dodopayments.com पर संपर्क करें
  • GitHub: repository पर एक issue खोलें

योगदान

हम योगदान का स्वागत करते हैं! शुरू करने के लिए contributing guidelines देखें।