Vai al contenuto principale
Validità della Sessione: Le sessioni di checkout sono valide per 24 ore per impostazione predefinita. Se passi confirm=true nella tua richiesta, la sessione sarà valida solo per 15 minuti.

Requisiti

1

Account Dodo Payments

Avrai bisogno di un account commerciante Dodo Payments attivo con accesso API.
2

Credenziali API

Genera le tue credenziali API dal dashboard di Dodo Payments:
3

Impostazione Prodotti

Crea i tuoi prodotti nel dashboard di Dodo Payments prima di implementare le sessioni di checkout.

Creare la Tua Prima Sessione di Checkout

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' });
  }
});

Risposta API

Tutti i metodi sopra restituiscono la stessa struttura di risposta:
{
  "session_id": "cks_Gi6KGJ2zFJo9rq9Ukifwa",
  "checkout_url": "https://test.checkout.dodopayments.com/session/cks_Gi6KGJ2zFJo9rq9Ukifwa"
}
1

Ottieni l'URL di checkout

Estrai il checkout_url dalla risposta API.
2

Reindirizza il tuo cliente

Reindirizza il tuo cliente all’URL di checkout per completare il suo acquisto.
// Redirect immediately
window.location.href = session.checkout_url;

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

Gestisci il ritorno

Dopo il pagamento, i clienti vengono reindirizzati al tuo return_url con parametri di query aggiuntivi per lo stato del pagamento.

Corpo della Richiesta

Campi Obbligatori

Campi essenziali necessari per ogni sessione di checkout

Campi Facoltativi

Configurazione aggiuntiva per personalizzare la tua esperienza di checkout

Campi Obbligatori

product_cart
array
obbligatorio
Array di prodotti da includere nella sessione di checkout. Ogni prodotto deve avere un product_id valido dal tuo dashboard di Dodo Payments.
Checkout Misto: Puoi combinare prodotti a pagamento una tantum e prodotti in abbonamento nella stessa sessione di checkout. Questo consente casi d’uso potenti come le spese di attivazione con abbonamenti, pacchetti hardware con SaaS e altro ancora.
Trova i Tuoi ID Prodotto: Puoi trovare gli ID prodotto nel tuo dashboard di Dodo Payments sotto Prodotti → Visualizza Dettagli, o utilizzando l’API Elenco Prodotti.

Campi Facoltativi

Configura questi campi per personalizzare l’esperienza di checkout e aggiungere logica aziendale al tuo flusso di pagamento.
customer
object
Informazioni sul cliente. Puoi allegare un cliente esistente utilizzando il loro ID o creare un nuovo record cliente durante il checkout.
Allega un cliente esistente alla sessione di checkout utilizzando il loro ID.
billing_address
object
Informazioni sull’indirizzo di fatturazione per un calcolo fiscale accurato, prevenzione delle frodi e conformità normativa.
Quando confirm è impostato su true, tutti i campi dell’indirizzo di fatturazione diventano obbligatori per la creazione della sessione con successo.
allowed_payment_method_types
array
Controlla quali metodi di pagamento sono disponibili per i clienti durante il checkout. Questo aiuta a ottimizzare per mercati specifici o requisiti aziendali.Opzioni Disponibili: 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
Critico: Includi sempre credit e debit come opzioni di fallback per prevenire fallimenti del checkout quando i metodi di pagamento preferiti non sono disponibili.
Esempio:
["apple_pay", "google_pay", "credit", "debit"]
billing_currency
string
Sovrascrivi la selezione della valuta predefinita con una valuta di fatturazione fissa. Usa i codici di valuta ISO 4217.Valute Supportate: USD, EUR, GBP, CAD, AUD, INR, e altroEsempio: "USD" per Dollari Statunitensi, "EUR" per Euro
Questo campo è efficace solo quando la tariffazione adattiva è abilitata. Se la tariffazione adattiva è disabilitata, verrà utilizzata la valuta predefinita del prodotto.
show_saved_payment_methods
boolean
predefinito:"false"
Visualizza i metodi di pagamento precedentemente salvati per i clienti di ritorno, migliorando la velocità del checkout e l’esperienza utente.
return_url
string
URL per reindirizzare i clienti dopo un pagamento o una cancellazione riusciti.
confirm
boolean
predefinito:"false"
Se vero, finalizza immediatamente tutti i dettagli della sessione. L’API restituirà un errore se i dati richiesti mancano.
discount_code
string
Applica un codice sconto alla sessione di checkout.
metadata
object
Coppie chiave-valore personalizzate per memorizzare informazioni aggiuntive sulla sessione.
force_3ds
boolean
Sovrascrivi il comportamento predefinito 3DS del commerciante per questa sessione.
minimal_address
boolean
predefinito:"false"
Abilita la modalità di raccolta indirizzo minimale. Quando abilitata, il checkout raccoglie solo:
  • Paese: Sempre richiesto per la determinazione delle tasse
  • Codice ZIP/Postale: Solo nelle regioni in cui è necessario per il calcolo delle tasse sulle vendite, IVA o GST
Questo riduce significativamente l’attrito del checkout eliminando campi di modulo non necessari.
Abilita l’indirizzo minimale per completare il checkout più velocemente. La raccolta dell’indirizzo completo rimane disponibile per le aziende che richiedono dettagli di fatturazione completi.
customization
object
Personalizza l’aspetto e il comportamento dell’interfaccia di checkout.
feature_flags
object
Configura funzionalità e comportamenti specifici per la sessione di checkout.
subscription_data
object
Configurazione aggiuntiva per le sessioni di checkout contenenti prodotti in abbonamento.

Esempi di Utilizzo

Ecco 10 esempi completi che mostrano diverse configurazioni della sessione di checkout per vari scenari aziendali:

1. Checkout Semplice per un Prodotto Singolo

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. Carrello Multi-Prodotto

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. Abbonamento con Periodo di Prova

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. Checkout Pre-confermato

Quando confirm è impostato su true, il cliente verrà portato direttamente alla pagina di checkout, bypassando eventuali passaggi di conferma.
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. Checkout con Sovrascrittura della Valuta

La sovrascrittura billing_currency ha effetto solo quando la valuta adattiva è abilitata nelle impostazioni del tuo account. Se la valuta adattiva è disabilitata, questo parametro non avrà alcun effetto.
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. Metodi di Pagamento Salvati per Clienti di Ritorno

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. Checkout B2B con Raccolta ID Fiscale

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. Checkout con Tema Scuro e Codice Sconto

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. Metodi di Pagamento Regionali (UPI per l’India)

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. Checkout BNPL (Compra Ora Paga Dopo)

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'
  }
});

Differenze Chiave

In precedenza, quando creavi un link di pagamento con Link Dinamici, era necessario fornire l’indirizzo di fatturazione completo del cliente. Con le Sessioni di Checkout, questo non è più necessario. Puoi semplicemente fornire le informazioni che hai, e noi ci occuperemo del resto. Ad esempio:
  • Se conosci solo il paese di fatturazione del cliente, fornisci solo quello.
  • Il flusso di checkout raccoglierà automaticamente i dettagli mancanti prima di portare il cliente alla pagina di pagamento.
  • D’altra parte, se hai già tutte le informazioni richieste e vuoi saltare direttamente alla pagina di pagamento, puoi passare l’intero set di dati e includere confirm=true nel corpo della tua richiesta.

Processo di Migrazione

La migrazione da Link Dinamici a Sessioni di Checkout è semplice:
1

Aggiorna la tua integrazione

Aggiorna la tua integrazione per utilizzare il nuovo metodo API o SDK.
2

Regola il payload della richiesta

Regola il payload della richiesta secondo il formato delle Sessioni di Checkout.
3

Fatto!

Sì. Non sono necessari ulteriori gestioni o passaggi di migrazione speciali da parte tua.