Hoppa till huvudinnehåll

Förutsättningar

För att integrera Dodo Payments API behöver du:
  • Ett Dodo Payments handelskonto
  • API-uppgifter (API-nyckel och webhook hemlig nyckel) från instrumentpanelen

Inställning av instrumentpanelen

  1. Navigera till Dodo Payments Dashboard
  2. Skapa en produkt (engångsbetalning eller prenumeration)
  3. Generera din API-nyckel:
    • Gå till Utvecklare > API
    • Detaljerad guide
    • Kopiera API-nyckeln i miljön med namnet DODO_PAYMENTS_API_KEY
  4. Konfigurera webhooks:
    • Gå till Utvecklare > Webhooks
    • Skapa en webhook-URL för betalningsnotifikationer
    • Kopiera den hemliga webhook-nyckeln i miljön

Integration

Betalningslänkar

Välj integrationsväg som passar ditt användningsfall:
  • Checkout Sessions (rekommenderas): Bäst för de flesta integrationer. Skapa en session på din server och omdirigera kunder till en säker, hostad kassa.
  • Overlay Checkout: Använd när du behöver en in-page-upplevelse som öppnar kassan som en modal overlay på din webbplats.
  • Inline Checkout: Bädda in kassan direkt i din sidlayout för helt integrerade, varumärkesanpassade kassaupplevelser.
  • Statisk betalningslänkar: Ingen kod, omedelbart delbara URL:er för snabb betalningsinsamling.
  • Dynamiska betalningslänkar: Programmatisk skapade länkar. Dock rekommenderas Checkout Sessions och ger mer flexibilitet.

1. Checkout Sessions

Använd Checkout Sessions för att skapa en säker, hostad checkoutupplevelse för engångsbetalningar eller prenumerationer. Du skapar en session på din server, och omdirigerar sedan kunden till den returnerade checkout_url.
Checkout-sessions är giltiga i 24 timmar som standard. Om du skickar confirm=true, är sessionerna giltiga i 15 minuter och alla obligatoriska fält måste anges.
1

Skapa en checkout-session

Välj ditt föredragna SDK eller anropa REST API.
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  environment: 'test_mode', // defaults to 'live_mode'
});

const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_123', quantity: 1 }],
  customer: { email: '[email protected]', name: 'John Doe' },
  return_url: 'https://yourapp.com/checkout/success',
});
2

Omdirigera kunden till checkout

Efter sessionens skapande, omdirigera till checkout_url för att starta den hostade flödet.
// Example in a browser context
window.location.href = session.checkout_url;
Föredra Checkout Sessions för det snabbaste, mest pålitliga sättet att börja ta emot betalningar. För avancerad anpassning, se den fullständiga Checkout Sessions-guiden och API-referensen.

2. Overlay Checkout

För en sömlös in-page checkoutupplevelse, utforska vår Overlay Checkout integration som gör att kunder kan slutföra betalningar utan att lämna din webbplats.

3. Inline Checkout

För helt integrerade kassaupplevelser som är inbäddade direkt i din sida, använd vår Inline Checkout integration. Detta gör att du kan bygga anpassade orderöversikter och ha full kontroll över kassalayouten medan Dodo Payments säkert hanterar betalningsinsamlingen.

4. Statisk betalningslänkar

Statisk betalningslänkar låter dig snabbt ta emot betalningar genom att dela en enkel URL. Du kan anpassa kassaupplevelsen genom att skicka med frågeparametrar för att förifylla kunduppgifter, kontrollera formulärfält och lägga till anpassad metadata.
1

Konstruera din betalningslänk

Börja med bas-URL:en och lägg till ditt produkt-ID:
https://checkout.dodopayments.com/buy/{productid}
2

Lägg till kärnparametrar

Inkludera viktiga frågeparametrar:
  • quantity
    integer
    standard:"1"
    Antal artiklar att köpa.
  • redirect_url
    string
    obligatorisk
    URL att omdirigera till efter betalningens slutförande.
Omdirigerings-URL:en kommer att inkludera betalningsdetaljer som frågeparametrar, till exempel:
https://example.com/?payment_id=pay_ts2ySpzg07phGeBZqePbH&status=succeeded
3

Förifyll kundinformation (valfritt)

Lägg till kund- eller faktureringsfält som frågeparametrar för att effektivisera kassan.
  • fullName
    string
    Kundens fullständiga namn (ignoreras om firstName eller lastName anges).
  • firstName
    string
    Kundens förnamn.
  • lastName
    string
    Kundens efternamn.
  • email
    string
    Kundens e-postadress.
  • country
    string
    Kundens land.
  • addressLine
    string
    Gatuadress.
  • city
    string
    Stad.
  • state
    string
    Stat eller provins.
  • zipCode
    string
    Postnummer/ZIP-kod.
  • showDiscounts
    boolean
    true eller false
4

Kontrollera formulärfält (valfritt)

Du kan inaktivera specifika fält för att göra dem skrivskyddade för kunden. Detta är användbart när du redan har kundens uppgifter (t.ex. inloggade användare).
För att inaktivera ett fält, ange dess värde och ställ in motsvarande disable… flagga till true:
&[email protected]&disableEmail=true
FältInaktiveringsflaggaObligatorisk parameter
Fullständigt namndisableFullNamefullName
FörnamndisableFirstNamefirstName
EfternamndisableLastNamelastName
E-postdisableEmailemail
LanddisableCountrycountry
GatuadressdisableAddressLineaddressLine
StaddisableCitycity
StatdisableStatestate
ZIP-koddisableZipCodezipCode
Inaktivering av fält hjälper till att förhindra oavsiktliga ändringar och säkerställer datakonsistens.
Att ställa in showDiscounts=false kommer att inaktivera och dölja rabattsektionen i kassafältet. Använd detta om du vill förhindra att kunder anger kupong- eller kampanjkoder under kassan.
5

Lägg till avancerade kontroller (valfritt)

  • paymentCurrency
    string
    Anger betalningsvalutan. Standard är den faktureringslandets valuta.
  • showCurrencySelector
    boolean
    standard:"true"
    Visa eller dölja valutaväljaren.
  • paymentAmount
    integer
    Belopp i cent (endast för Pay What You Want-prissättning).
  • metadata_*
    string
    Anpassade metadatafält (t.ex. metadata_orderId=123).
6

Dela länken

Skicka den färdiga betalningslänken till din kund. När de besöker, samlas alla frågeparametrar in och lagras med ett session-ID. URL:en förenklas sedan för att endast inkludera sessionsparametern (t.ex. ?session=sess_1a2b3c4d). Den lagrade informationen kvarstår genom siduppdateringar och är tillgänglig under hela kassa-processen.
Kundens kassaupplevelse är nu strömlinjeformad och personlig baserat på dina parametrar.

4. Dynamiska betalningslänkar

Föredra Checkout Sessions för de flesta användningsfall, de erbjuder mer flexibilitet och kontroll.
Skapad via API-anrop eller vår SDK med kunduppgifter. Här är ett exempel: Det finns två API:er för att skapa dynamiska betalningslänkar: Guiden nedan är för skapande av engångsbetalningslänkar. För detaljerade instruktioner om att integrera prenumerationer, se denna Prenumerationsintegrationsguide.
Se till att du skickar payment_link = true för att få betalningslänk
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
bearerToken: process.env['DODO_PAYMENTS_API_KEY'], // This is the default and can be omitted
environment: 'test_mode', // defaults to 'live_mode'
});

async function main() {
const payment = await client.payments.create({
payment_link: true,
billing: { city: 'city', country: 'AF', state: 'state', street: 'street', zipcode: 0 },
customer: { email: '[email protected]', name: 'name' },
product_cart: [{ product_id: 'product_id', quantity: 0 }],
});

console.log(payment.payment_id);
}

main();
Efter att ha skapat betalningslänken, omdirigera dina kunder för att slutföra sin betalning.

Implementera Webhooks

Ställ in en API-slutpunkt för att ta emot betalningsnotifikationer. Här är ett exempel med Next.js:
import { Webhook } from "standardwebhooks";
import { headers } from "next/headers";
import { WebhookPayload } from "@/types/api-types";

const webhook = new Webhook(process.env.DODO_WEBHOOK_KEY!); // Replace with your secret key generated from the Dodo Payments Dashboard

export async function POST(request: Request) {
  const headersList = headers();
  const rawBody = await request.text();

  const webhookHeaders = {
    "webhook-id": headersList.get("webhook-id") || "",
    "webhook-signature": headersList.get("webhook-signature") || "",
    "webhook-timestamp": headersList.get("webhook-timestamp") || "",
  };

  await webhook.verify(rawBody, webhookHeaders);
  const payload = JSON.parse(rawBody) as WebhookPayload;
  
  // Process the payload according to your business logic
}
Vår webhook-implementation följer Standard Webhooks specifikationen. För webhook-typdefinitioner, se vår Webhook Event Guide. Du kan hänvisa till detta projekt med demoimplementation på GitHub med Next.js och TypeScript. Du kan kolla in den live implementationen här.