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 den 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 checkout.
  • Overlay Checkout (inbäddad): Används när du behöver en in-page-upplevelse som bäddar in den hostade checkouten på din webbplats.
  • Statisk betalningslänk: Ingen kod, omedelbart delbara URL:er för snabb betalningsinsamling.
  • Dynamiska betalningslänkar: Programmässigt skapade länkar. Checkout Sessions rekommenderas 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. Statisk betalningslänk

Statisk betalningslänkar låter dig snabbt ta emot betalningar genom att dela en enkel URL. Du kan anpassa checkoutupplevelsen genom att skicka med frågeparametrar för att förfylla 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 din 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 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örfylla kundinformation (valfritt)

Lägg till kund- eller faktureringsfält som frågeparametrar för att strömlinjeforma checkout.
  • 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
AdressraddisableAddressLineaddressLine
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 rabatteringssektionen i checkoutformuläret. Använd detta om du vill förhindra att kunder anger kupong- eller kampanjkoder under checkout.
5

Lägg till avancerade kontroller (valfritt)

  • paymentCurrency
    string
    Anger betalningsvalutan. Standard är den fakturerande landets 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 checkoutprocessen.
Kundens checkoutupplevelse ä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årt SDK med kunduppgifter. Här är ett exempel: Det finns två API:er för att skapa dynamiska betalningslänkar: Guiden nedan handlar om skapande av engångsbetalningslänkar. För detaljerade instruktioner om att integrera prenumerationer, se denna Integrationsguide för prenumerationer.
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-implementering följer Standard Webhooks specifikationen. För definitioner av webhook-typer, se vår Webhook Event Guide. Du kan hänvisa till detta projekt med demoimplementering på GitHub med Next.js och TypeScript. Du kan kolla in den live-implementeringen här.