Crea esperienze di checkout sicure e ospitate che gestiscono l’intero flusso di pagamento per acquisti una tantum e abbonamenti con pieno controllo sulla personalizzazione.
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.
import DodoPayments from 'dodopayments';// Initialize the Dodo Payments clientconst 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 routeapp.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' }); }});
Copia
Chiedi all'IA
import osfrom dodopayments import DodoPayments# Initialize the Dodo Payments clientclient = DodoPayments( bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"), # This is the default and can be omitted environment="test_mode", # defaults to "live_mode")def create_checkout_session(): """ Create a checkout session for a single product with customer data pre-filled. Returns the session object containing checkout_url for customer redirection. """ try: session = client.checkout_sessions.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 checkout 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 print(f"Checkout URL: {session.checkout_url}") print(f"Session ID: {session.session_id}") return session except Exception as error: print(f"Failed to create checkout session: {error}") raise error# Example usage in a Flask routefrom flask import Flask, jsonify, requestapp = Flask(__name__)@app.route('/create-checkout', methods=['POST'])def create_checkout(): try: session = create_checkout_session() return jsonify({"checkout_url": session.checkout_url}) except Exception as error: return jsonify({"error": "Failed to create checkout session"}), 500
Copia
Chiedi all'IA
// Direct API call using fetch - useful for any JavaScript environmentasync function createCheckoutSession() { try { const response = await fetch('https://test.dodopayments.com/checkouts', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${process.env.DODO_PAYMENTS_API_KEY}` }, body: JSON.stringify({ // 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 checkout 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' } }) }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const session = await response.json(); // 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: Redirect user to checkoutcreateCheckoutSession().then(session => { window.location.href = session.checkout_url;});
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.
Mostra Proprietà dell'Elemento del Carrello Prodotti
Importo che il cliente paga se pay_what_you_want è abilitato. Se disabilitato, questo campo verrà ignorato.Formato: Rappresentato nella denominazione più bassa della valuta (ad es., centesimi per USD). Ad esempio, per addebitare $1.00, passa 100.
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.
Numero di telefono del cliente in formato internazionale. Richiesto per alcuni metodi di pagamento e prevenzione delle frodi.Formato: Includi il prefisso del paese, ad es., "+1234567890" per numeri statunitensi
Indirizzo completo compreso il numero civico, il nome della strada e il numero dell’appartamento/unità se applicabile.Esempio: "123 Main St, Apt 4B" o "456 Oak Avenue"
Codice paese ISO a due lettere (ISO 3166-1 alpha-2). Questo campo è sempre richiesto quando viene fornito l’indirizzo di fatturazione.Esempi: "US" (Stati Uniti), "CA" (Canada), "GB" (Regno Unito), "DE" (Germania)
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.
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.
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.
Abilita la modalità di raccolta indirizzo minimale. Quando abilitata, il checkout raccoglie solo:
Paese: Sempre richiesto per la determinazione delle tasse
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.
Prezzo del prodotto per l’addebito iniziale al cliente. Se non specificato, verrà utilizzato il prezzo memorizzato del prodotto.Formato: Rappresentato nella denominazione più bassa della valuta (ad es., centesimi per USD). Ad esempio, per addebitare $1.00, passa 100.
Sovrascrittura opzionale della descrizione del prodotto per la fatturazione e gli elementi di linea. Se non specificato, verrà utilizzata la descrizione memorizzata del prodotto.
Se le spese di valuta adattiva devono essere incluse nel prezzo del prodotto (vero) o aggiunte sopra (falso). Ignorato se la tariffazione adattiva non è abilitata.
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.
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.