Skip to main content
Go SDK ger Go-applikationer typad åtkomst till Dodo Payments REST API. Varje metod tar en context.Context, request-parametrar använder en Field-wrapper som skiljer nollvärden från utelämnade fält, och du kan lägga till middleware i varje request.

Installation

Lägg till modulen i ditt projekt:
Så här låser du till en specifik version:
SDK:t kräver Go 1.22 eller senare.

Snabbstart

Skapa en klient och skapa sedan en checkout-session:
Om du utelämnar option.WithBearerToken läser NewClient miljövariabeln DODO_PAYMENTS_API_KEY. Om du utelämnar option.WithEnvironmentTestMode() ansluter klienten till live mode. En API-nyckel för testläge fungerar endast i testläge.
Förvara API-nycklar i miljövariabler eller en secrets manager. Hårdkoda dem aldrig i källkoden.

Kärnfunktioner

Context Support

Varje metod tar en context.Context för avbrytning och timeouts.

Strong Typing

Typade request-parametrar och response-strukturer för kontroller vid kompilering.

Middleware

Lägg till middleware med option.WithMiddleware för loggning, mätvärden och anpassad logik.

Goroutine Safe

Dela en klient mellan goroutines.

Konfiguration

NewClient läser DODO_PAYMENTS_API_KEY, DODO_PAYMENTS_WEBHOOK_KEY (din webhook signing secret) och DODO_PAYMENTS_BASE_URL från miljön. Alternativ som du skickar in, till exempel option.WithBearerToken, option.WithWebhookKey och option.WithBaseURL, åsidosätter dem. Om du vill verifiera en webhook skickar du requestens råa body och headers till client.Webhooks.Unwrap(rawBody, r.Header). Den kontrollerar signaturen med din webhook-nyckel och returnerar den tolkade händelsen. client.Webhooks.UnsafeUnwrap(rawBody) tolkar bodyn utan att verifiera den, så använd den endast för testning. Se Webhooks. Exemplen på den här sidan använder client från Snabbstart.

Context och timeouts

Requests får ingen timeout som standard. En context-deadline begränsar hela anropet, inklusive retries. Om du vill begränsa varje försök lägger du till option.WithRequestTimeout():

Retry-konfiguration

SDK:t försöker igen vid anslutningsfel och svar med status 408, 409, 429 eller 500 och högre. Som standard görs två nya försök, med exponentiell backoff. Ange option.WithMaxRetries på klienten eller för en enskild request:

Vanliga operationer

Exemplen i det här avsnittet använder också en context, till exempel ctx := context.Background().

Skapa en checkout-session

Skapa en checkout-session och omdirigera sedan kunden till den returnerade CheckoutURL:
Varje checkout-URL fungerar en gång och upphör att gälla efter 24 timmar. Information om alla sessionsalternativ finns i Checkout Sessions.

Hantera kunder

Skapa en kund med en e-postadress och ett namn och hämta den sedan med ID. Metadata-värden använder unionstyperna från paketet shared:

Hantera prenumerationer

Skapa en prenumeration, debitera en on-demand-prenumeration och läs en prenumerations användningshistorik.
POST /subscriptions (SDK:ts Subscriptions.New-metod) är föråldrad. Den fungerar fortfarande för befintliga integrationer, men nya integrationer bör skapa prenumerationer via en Checkout Session.
Billing kräver endast Country, en tvåbokstavskod för ISO-land. Customer är en CustomerRequestUnionParam: skicka AttachExistingCustomerParam{CustomerID: ...} för en befintlig kund eller NewCustomerParam{Email: ..., Name: ...} för att skapa en. Charge används för on-demand-prenumerationer, och ProductPrice anges i den minsta valutaenheten. GetUsageHistory returnerar en resultatsida; GetUsageHistoryAutoPaging itererar över alla sidor.

Förbrukningsbaserad fakturering

Ta emot användningshändelser

Skicka användningshändelser för en kund:
EventID är idempotency key, så ge varje händelse ett unikt värde. Om samma EventID förekommer två gånger i en request avvisas hela requesten. Om en EventID redan har tagits emot ignoreras den nya händelsen. En request accepterar upp till 1 000 händelser. Timestamp använder aktuell tid som standard och avvisas om den ligger mer än 1 timme bakåt eller mer än 5 minuter framåt i tiden.

Lista användningshändelser

Lista händelser filtrerade efter kund och händelsenamn:
List returnerar en sida. Om du vill iterera över alla sidor anropar du client.UsageEvents.ListAutoPaging(ctx, params) och loopar med iter.Next(), iter.Current() och iter.Err(). Andra listmetoder har samma AutoPaging-variant, och varje sida har en GetNextPage()-metod.

Felhantering

När API:et returnerar en statuskod som inte anger framgång returnerar SDK:t ett fel av typen *dodopayments.Error. Det innehåller StatusCode, *http.Request och *http.Response samt JSON från felbodyn. Använd errors.As för att granska det och gör en förgrening på StatusCode för att hantera specifika fall:
Andra fel returneras utan wrapper. Om HTTP-transporten till exempel misslyckas kan du få en *url.Error som omsluter en *net.OpError. apiErr.DumpRequest(true) returnerar den serialiserade requesten.

Middleware

Lägg till middleware med option.WithMiddleware. En middleware tar emot varje request och en next-funktion som skickar den vidare:
Flera middleware i ett anrop till option.WithMiddleware körs från vänster till höger. Middleware som skickas till NewClient körs före middleware som skickas till en enskild request.

Samtidighet

Klienten är säker att använda samtidigt, så du kan dela en klient mellan goroutines:

Resurser

GitHub Repository

Källkod, releaser och den fullständiga metodlistan.

API Reference

Alla endpoints, parametrar och svar.

Discord Community

Ställ frågor och prata med andra utvecklare.

Report Issues

Rapportera buggar eller föreslå funktioner.

Support

Om du behöver hjälp med Go SDK:

Bidra

Om du vill bidra kan du läsa riktlinjerna för bidrag.
Senast ändrad 26 september 2026