Task, requests och responses är typade klasser, och klienten försöker automatiskt igen vid misslyckade requests.
Installation
Install the package from NuGet:SDK:t kräver .NET Standard 2.0 eller senare och levereras även med en .NET 8-version. Det fungerar med ASP.NET Core, konsolapplikationer och andra typer av .NET-projekt. Exemplen på den här sidan använder C# 12-syntax, till exempel collection expressions.
Quick Start
Skapa en klient och skapa sedan en checkout-session:BearerToken läser klienten miljövariabeln DODO_PAYMENTS_API_KEY. Om du inte anger BaseUrl eller DODO_PAYMENTS_BASE_URL ansluter klienten till live mode. Information om hur du använder test mode finns i Environments. En API-nyckel för test mode fungerar endast i test mode.
Kärnfunktioner
Async/Await
Alla API-metoder returnerar en
Task och accepterar en valfri CancellationToken.Strong Typing
Typade request- och response-klasser med annoteringar för nullable reference types.
Smart Retries
Två omförsök som standard, med exponentiell backoff, för anslutningsfel och statuskoder som kan försöks om.
Error Handling
En exception-klass för varje vanlig HTTP-felstatus, med statuskoden och response body.
Konfiguration
Miljövariabler
Lagra din API-nyckel i en miljövariabel:.env
new() läser sina inställningar från miljön:
Om varken
BearerToken eller DODO_PAYMENTS_API_KEY har angetts kastar klienten DodoPaymentsInvalidDataException. WebhookKey innehåller din webhook signing secret, men C# SDK har ingen metod som verifierar webhook-signaturer. Följ Webhooks för att verifiera dem.
Manuell konfiguration
Ange properties på klienten för att åsidosätta miljövariablerna:Miljöer
Klienten ansluter som standard till live mode (https://live.dodopayments.com). Om du vill använda test mode (https://test.dodopayments.com) anger du BaseUrl till EnvironmentUrl.TestMode:
Omförsök
SDK:t försöker igen vid anslutningsfel och responses med status 408, 409, 429 eller 500 och högre. Som standard görs två omförsök med exponentiell backoff. AngeMaxRetries för att ändra antalet omförsök, eller ange 0 för att inaktivera omförsök:
Tidsgränser
Varje request-försök avbryts efter 1 minut som standard. Tidsgränsen omfattar inte omförsök. AngeTimeout för att ändra den:
Åsidosättningar per request
Om du vill ändra inställningar för ett enskilt anrop anropar duWithOptions på klienten eller en service. Den returnerar en modifierad kopia som delar samma connection pool, medan den ursprungliga klienten inte ändras:
Vanliga åtgärder
Exemplen i det här avsnittet använderclient från Quick Start.
Skapa en checkout-session
Skapa en checkout-session och omdirigera sedan kunden till den returneradeCheckoutUrl:
Hantera kunder
Skapa en kund med en e-postadress och ett namn och hämta den sedan med dess ID:Customers.Retrieve accepterar även ID:t som en sträng, till exempel client.Customers.Retrieve("cus_123").
Hantera prenumerationer
Skapa en prenumeration och debitera den sedan om det är en on-demand-prenumeration.Billing kräver endast Country, en ISO-landskod med två bokstäver. Customer tar emot en AttachExistingCustomer för att koppla en befintlig kund eller en NewCustomer för att skapa en. Charge är avsedd för on-demand-prenumerationer, och ProductPrice anges i den minsta valutaenheten.Felhantering
När API:t returnerar en felstatus kastar SDK:t en subklass avDodoPaymentsApiException, som har properties för StatusCode och ResponseBody. Exception-klassen beror på statuskoden. Alla 4xx-exceptions ärver från DodoPayments4xxException.
En 4xx-status utan en egen klass, till exempel 409, kastar
DodoPayments4xxException. DodoPaymentsUnexpectedStatusCodeException hanterar statusar utanför intervallen 4xx och 5xx.
SDK:t kastar även dessa exceptions:
DodoPaymentsIOException: Ett I/O- eller nätverksfel.DodoPaymentsInvalidDataException: SDK:t kunde inte tolka response-data, till exempel eftersom en obligatorisk property saknas.DodoPaymentsException: Basklassen för alla SDK-exceptions.
Paginering
List-metoder returnerar en resultatsida. Du kan iterera över varje item eller själv gå igenom sidorna.Automatisk paginering
Paginate returnerar en IAsyncEnumerable som hämtar nästa sida när det behövs:
Manuell paginering
Om du vill arbeta med en sida i taget läser duItems och anropar sedan HasNext() och Next():
PaymentListParams från namnrymden DodoPayments.Client.Models.Payments, till exempel client.Payments.List(new PaymentListParams { PageSize = 50 }).
ASP.NET Core-integration
Registrera en klient som singleton i dependency injection-containern och läs API-nyckeln från konfigurationen:Program.cs
appsettings.json:
appsettings.json
Resurser
NuGet Package
Paketversioner och installationskommandon.
GitHub Repository
Källkod, releaser och exempel.
API Reference
Alla endpoints, parametrar och responses.
Discord Community
Ställ frågor och prata med andra utvecklare.
Support
Få hjälp med C# SDK:- Discord: Gå med i community-servern för hjälp i realtid.
- E-post: Kontakta support@dodopayments.com.
- GitHub: Öppna ett issue i repositoryt.