メインコンテンツへスキップ
C# SDK は、C# で書かれたアプリケーションから Dodo Payments REST API へ便利にアクセスできるようにします。強い型付け、非同期タスクベース 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 キーは常に、環境変数、ユーザー シークレット、または Azure Key Vault を使用して安全に保管してください。ソース コードにハードコードしたり、バージョン管理にコミットしたりしないでください。

主な機能

Async/Await

ノンブロッキング操作のための完全な async Task ベースの API

Strong Typing

Nullable 参照型を活用した包括的な型安全性

Smart Retries

 一時的なエラーに対する指数バックオフでの自動リトライ

Error Handling

 正確なエラーマネジメントのための組み込み例外階層

構成

環境変数

.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"

マニュアル設定

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 を継承します。
StatusException
400DodoPaymentsBadRequestException
401DodoPaymentsUnauthorizedException
403DodoPaymentsForbiddenException
404DodoPaymentsNotFoundException
422DodoPaymentsUnprocessableEntityException
429DodoPaymentsRateLimitException
5xxDodoPayments5xxException
othersDodoPaymentsUnexpectedStatusCodeException
その他の例外タイプ:
  • 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 Core との統合

DI コンテナにクライアントを登録します。
Program.cs
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();
appsettings.json
{
  "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 についてのサポートが必要ですか?
Last modified on March 24, 2026