Hoppa till huvudinnehåll
Sessionens giltighet: Kassa sessioner är giltiga i 24 timmar som standard. Om du skickar confirm=true i din begäran, kommer sessionen endast att vara giltig i 15 minuter.

Förutsättningar

1

Dodo Payments Konto

Du behöver ett aktivt Dodo Payments säljarkonto med API-åtkomst.
2

API Referenser

Generera dina API-referenser från Dodo Payments instrumentpanelen:
3

Produktinställningar

Skapa dina produkter i Dodo Payments instrumentpanelen innan du implementerar kassa sessioner.

Skapa Din Första Kassa Session

import DodoPayments from 'dodopayments';

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

async function createCheckoutSession() {
  try {
    const session = await client.checkoutSessions.create({
      // Products to sell - use IDs from your Dodo Payments dashboard
      product_cart: [
        {
          product_id: 'prod_123', // Replace with your actual product ID
          quantity: 1
        }
      ],
      
      // Pre-fill customer information to reduce friction
      customer: {
        email: '[email protected]',
        name: 'John Doe',
        phone_number: '+1234567890'
      },
      
      // Billing address for tax calculation and compliance
      billing_address: {
        street: '123 Main St',
        city: 'San Francisco',
        state: 'CA',
        country: 'US', // Required: ISO 3166-1 alpha-2 country code
        zipcode: '94102'
      },
      
      // Where to redirect after successful payment
      return_url: 'https://yoursite.com/checkout/success',
      
      // Custom data for your internal tracking
      metadata: {
        order_id: 'order_123',
        source: 'web_app'
      }
    });

    // Redirect your customer to this URL to complete payment
    console.log('Checkout URL:', session.checkout_url);
    console.log('Session ID:', session.session_id);
    
    return session;
    
  } catch (error) {
    console.error('Failed to create checkout session:', error);
    throw error;
  }
}

// Example usage in an Express.js route
app.post('/create-checkout', async (req, res) => {
  try {
    const session = await createCheckoutSession();
    res.json({ checkout_url: session.checkout_url });
  } catch (error) {
    res.status(500).json({ error: 'Failed to create checkout session' });
  }
});

API Svar

Alla metoder ovan returnerar samma svarstruktur:
{
  "session_id": "cks_Gi6KGJ2zFJo9rq9Ukifwa",
  "checkout_url": "https://test.checkout.dodopayments.com/session/cks_Gi6KGJ2zFJo9rq9Ukifwa"
}
1

Hämta kassa URL

Extrahera checkout_url från API-svaret.
2

Omdirigera din kund

Dirigera din kund till kassa URL för att slutföra sitt köp.
// Redirect immediately
window.location.href = session.checkout_url;

// Or open in new window
window.open(session.checkout_url, '_blank');
3

Hantera återkomsten

Efter betalning omdirigeras kunder till din return_url med ytterligare frågeparametrar för betalningsstatus.

Begärningskropp

Obligatoriska Fält

Viktiga fält som behövs för varje kassa session

Valfria Fält

Ytterligare konfiguration för att anpassa din kassa upplevelse

Obligatoriska Fält

product_cart
array
obligatorisk
Array av produkter som ska inkluderas i kassa sessionen. Varje produkt måste ha en giltig product_id från din Dodo Payments instrumentpanel.
Blandad Kassa: Du kan kombinera engångsbetalningsprodukter och prenumerationsprodukter i samma kassa session. Detta möjliggör kraftfulla användningsfall som installationsavgifter med prenumerationer, hårdvarubundlar med SaaS, och mer.
Hitta Dina Produkt-ID:n: Du kan hitta produkt-ID:n i din Dodo Payments instrumentpanel under Produkter → Visa Detaljer, eller genom att använda Lista Produkter API.

Valfria Fält

Konfigurera dessa fält för att anpassa kassa upplevelsen och lägga till affärslogik till ditt betalningsflöde.
customer
object
Kundinformation. Du kan antingen koppla en befintlig kund med deras ID eller skapa en ny kundpost under kassan.
Koppla en befintlig kund till kassa sessionen med deras ID.
billing_address
object
Faktureringsadressinformation för korrekt skatteberäkning, bedrägeriförebyggande och efterlevnad av regler.
När confirm är inställt på true, blir alla faktureringsadressfält obligatoriska för att skapa sessionen framgångsrikt.
allowed_payment_method_types
array
Kontrollera vilka betalningsmetoder som är tillgängliga för kunder under kassan. Detta hjälper till att optimera för specifika marknader eller affärskrav.Tillgängliga Alternativ: credit, debit, upi_collect, upi_intent, apple_pay, google_pay, amazon_pay, klarna, affirm, afterpay_clearpay, sepa, ach, cashapp, multibanco, bancontact_card, eps, ideal, przelewy24, paypal
Kritiskt: Inkludera alltid credit och debit som fallback-alternativ för att förhindra kassa misslyckanden när föredragna betalningsmetoder inte är tillgängliga.
Exempel:
["apple_pay", "google_pay", "credit", "debit"]
billing_currency
string
Överskriv standardvalutan med en fast faktureringsvaluta. Använder ISO 4217 valutakoder.Stödda Valutor: USD, EUR, GBP, CAD, AUD, INR, och flerExempel: "USD" för US Dollar, "EUR" för Euro
Detta fält är endast effektivt när adaptiv prissättning är aktiverad. Om adaptiv prissättning är inaktiverad kommer produktens standardvaluta att användas.
show_saved_payment_methods
boolean
standard:"false"
Visa tidigare sparade betalningsmetoder för återkommande kunder, vilket förbättrar kassa hastighet och användarupplevelse.
return_url
string
URL för att omdirigera kunder efter lyckad betalning eller avbokning.
confirm
boolean
standard:"false"
Om sant, avslutar alla sessionsdetaljer omedelbart. API:n kommer att kasta ett fel om nödvändig data saknas.
discount_code
string
Tillämpa en rabattkod på kassa sessionen.
metadata
object
Anpassade nyckel-värde-par för att lagra ytterligare information om sessionen.
force_3ds
boolean
Överskriv säljarnas standard 3DS-beteende för denna session.
minimal_address
boolean
standard:"false"
Aktivera läge för insamling av minimal adress. När det är aktiverat samlar kassan endast in:
  • Land: Alltid obligatoriskt för skatteberäkning
  • ZIP/Postnummer: Endast i regioner där det är nödvändigt för försäljningsskatt, moms eller GST-beräkning
Detta minskar avsevärt friktionen vid kassan genom att eliminera onödiga formulärfält.
Aktivera minimal adress för snabbare kassa slutförande. Fullständig adressinsamling förblir tillgänglig för företag som kräver kompletta faktureringsuppgifter.
customization
object
Anpassa utseendet och beteendet hos kassa gränssnittet.
feature_flags
object
Konfigurera specifika funktioner och beteenden för kassa sessionen.
subscription_data
object
Ytterligare konfiguration för kassa sessioner som innehåller prenumerationsprodukter.

Användningsexempel

Här är 10 omfattande exempel som visar olika konfigurationer av kassa sessioner för olika affärsscenarier:

1. Enkel Engångsprodukt Kassa

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

2. Multi-Produkt Korg

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_laptop',
      quantity: 1
    },
    {
      product_id: 'prod_mouse',
      quantity: 2
    },
    {
      product_id: 'prod_warranty',
      quantity: 1
    }
  ],
  customer: {
    email: '[email protected]',
    name: 'John Doe',
    phone_number: '+1234567890'
  },
  billing_address: {
    street: '123 Tech Street',
    city: 'San Francisco',
    state: 'CA',
    country: 'US',
    zipcode: '94102'
  },
  return_url: 'https://electronics-store.com/order-confirmation'
});

3. Prenumeration med Provperiod

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_monthly_plan',
      quantity: 1
    }
  ],
  subscription_data: {
    trial_period_days: 14
  },
  customer: {
    email: '[email protected]',
    name: 'Jane Smith'
  },
  return_url: 'https://saas-app.com/onboarding',
  metadata: {
    plan_type: 'professional',
    referral_source: 'google_ads'
  }
});

4. Förhandsbekräftad Kassa

När confirm är inställt på true, kommer kunden att tas direkt till kassa sidan, vilket omgår eventuella bekräftelsesteg.
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_premium_course',
      quantity: 1
    }
  ],
  customer: {
    email: '[email protected]',
    name: 'Alex Johnson',
    phone_number: '+1555123456'
  },
  billing_address: {
    street: '456 University Ave',
    city: 'Boston',
    state: 'MA',
    country: 'US',
    zipcode: '02134'
  },
  confirm: true,
  return_url: 'https://learning-platform.com/course-access',
  metadata: {
    course_category: 'programming',
    enrollment_date: '2024-01-15'
  }
});

5. Kassa med Valutaöverskrivning

Den billing_currency överskrivningen träder endast i kraft när adaptiv valuta är aktiverad i dina kontoinställningar. Om adaptiv valuta är inaktiverad kommer denna parameter att ha ingen effekt.
const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_consulting_service',
      quantity: 1
    }
  ],
  customer: {
    email: '[email protected]',
    name: 'Oliver Williams'
  },
  billing_address: {
    street: '789 Business Park',
    city: 'London',
    state: 'England',
    country: 'GB',
    zipcode: 'SW1A 1AA'
  },
  billing_currency: 'GBP',
  feature_flags: {
    allow_currency_selection: true,
    allow_tax_id: true
  },
  return_url: 'https://consulting-firm.com/service-confirmation'
});

6. Sparade Betalningsmetoder för Återkommande Kunder

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_monthly_subscription',
      quantity: 1
    }
  ],
  customer: {
    email: '[email protected]',
    name: 'Robert Johnson',
    phone_number: '+1555987654'
  },
  show_saved_payment_methods: true,
  feature_flags: {
    allow_phone_number_collection: true,
    always_create_new_customer: false
  },
  return_url: 'https://subscription-service.com/welcome-back',
  metadata: {
    customer_tier: 'premium',
    account_age: 'returning'
  }
});

7. B2B Kassa med Skatte-ID Insamling

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_enterprise_license',
      quantity: 5
    }
  ],
  customer: {
    email: '[email protected]',
    name: 'Sarah Davis',
    phone_number: '+1800555000'
  },
  billing_address: {
    street: '1000 Corporate Blvd',
    city: 'New York',
    state: 'NY',
    country: 'US',
    zipcode: '10001'
  },
  feature_flags: {
    allow_tax_id: true,
    allow_phone_number_collection: true,
    always_create_new_customer: false
  },
  return_url: 'https://enterprise-software.com/license-delivery',
  metadata: {
    customer_type: 'enterprise',
    contract_id: 'ENT-2024-001',
    sales_rep: '[email protected]'
  }
});

8. Mörkt Tema Kassa med Rabattkod

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_gaming_chair',
      quantity: 1
    }
  ],
  discount_code: 'BLACKFRIDAY2024',
  customization: {
    theme: 'dark',
    show_order_details: true,
    show_on_demand_tag: false
  },
  feature_flags: {
    allow_discount_code: true
  },
  customer: {
    email: '[email protected]',
    name: 'Mike Chen'
  },
  return_url: 'https://gaming-store.com/order-complete'
});

9. Regionala Betalningsmetoder (UPI för Indien)

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_online_course_hindi',
      quantity: 1
    }
  ],
  allowed_payment_method_types: [
    'upi_collect',
    'upi_intent',
    'credit',
    'debit'
  ],
  customer: {
    email: '[email protected]',
    name: 'Priya Sharma',
    phone_number: '+919876543210'
  },
  billing_address: {
    street: 'MG Road',
    city: 'Bangalore',
    state: 'Karnataka',
    country: 'IN',
    zipcode: '560001'
  },
  billing_currency: 'INR',
  return_url: 'https://education-platform.in/course-access',
  metadata: {
    region: 'south_india',
    language: 'hindi'
  }
});

10. BNPL (Köp Nu Betala Senare) Kassa

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: 'prod_luxury_watch',
      quantity: 1
    }
  ],
  allowed_payment_method_types: [
    'klarna',
    'affirm',
    'afterpay_clearpay',
    'credit',
    'debit'
  ],
  customer: {
    email: '[email protected]',
    name: 'Emma Thompson',
    phone_number: '+1234567890'
  },
  billing_address: {
    street: '555 Fashion Ave',
    city: 'Los Angeles',
    state: 'CA',
    country: 'US',
    zipcode: '90210'
  },
  feature_flags: {
    allow_phone_number_collection: true
  },
  return_url: 'https://luxury-store.com/purchase-confirmation',
  metadata: {
    product_category: 'luxury',
    price_range: 'high_value'
  }
});

Flytta från Dynamiska Länkar till Kassa Sessioner

Nyckelskillnader

Tidigare, när du skapade en betalningslänk med Dynamiska Länkar, var du tvungen att tillhandahålla kundens fullständiga faktureringsadress. Med Kassa Sessioner är detta inte längre nödvändigt. Du kan helt enkelt skicka med den information du har, och vi hanterar resten. Till exempel:
  • Om du bara känner till kundens faktureringsland, ge bara det.
  • Kassa flödet kommer automatiskt att samla in de saknade detaljerna innan kunden flyttas till betalningssidan.
  • Å andra sidan, om du redan har all nödvändig information och vill hoppa direkt till betalningssidan, kan du skicka hela datamängden och inkludera confirm=true i din begärningskropp.

Migreringsprocess

Att migrera från Dynamiska Länkar till Kassa Sessioner är enkelt:
1

Uppdatera din integration

Uppdatera din integration för att använda den nya API- eller SDK-metoden.
2

Justera begärningspayload

Justera begärningspayloaden enligt Kassa Sessioner formatet.
3

Det är allt!

Ja. Ingen ytterligare hantering eller speciella migreringssteg behövs från din sida.