C# SDKは、C#で書かれたアプリケーションからDodo Payments REST APIへの便利なアクセスを提供します。非同期のTaskベースのAPIを特徴としており、強い型付けが施されており、現在ベータ版です。
C# SDKは現在ベータ版です。改善に向けて積極的に取り組んでおり、フィードバックを歓迎します。
インストール
.NET CLIを使用してSDKをインストールします:
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
非ブロッキング操作のための完全な非同期TaskベースのAPI
Strong Typing
nullable参照型を使用した包括的な型安全性
Dependency Injection
.NET依存性注入のためのファーストクラスサポート
Configuration
環境変数またはappsettings.jsonを介したシンプルな設定
環境変数
環境変数を使用して設定します:
DODO_PAYMENTS_API_KEY=your_api_key_here
// Automatically reads from environment variables
DodoPaymentsClient client = new();
手動設定
ベアラートークンを使用して手動で設定します:
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 = "[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})");
サブスクリプションの管理
定期的なサブスクリプションを作成および管理します:
// 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統合
サービス登録
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に設定を追加します:
{
"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キーを保存するためにユーザーシークレットを使用します:
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に関して助けが必要ですか?
SDKはベータ版のため、あなたのフィードバックと貢献は特に貴重です!貢献ガイドラインを確認して始めましょう。