Erstellen Sie sichere, gehostete Checkout-Erlebnisse, die den vollständigen Zahlungsfluss sowohl für einmalige Käufe als auch für Abonnements mit vollständiger Anpassungssteuerung abwickeln.
Sitzungsvalidität: Checkout-Sitzungen sind standardmäßig 24 Stunden gültig. Wenn Sie confirm=true in Ihrer Anfrage übergeben, ist die Sitzung nur 15 Minuten gültig.
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' }); }});
Kopieren
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
Kopieren
// 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 von Produkten, die in die Checkout-Sitzung aufgenommen werden sollen. Jedes Produkt muss eine gültige product_id aus Ihrem Dodo Payments-Dashboard haben.
Wichtig: Mehrere Produktkörbe dürfen nur einmalige Zahlungsprodukte enthalten. Sie können Abonnementprodukte nicht mit einmaligen Produkten in derselben Checkout-Sitzung mischen.
Betrag, den der Kunde zahlt, wenn pay_what_you_want aktiviert ist. Wenn deaktiviert, wird dieses Feld ignoriert.Format: Wird in der niedrigsten Währungseinheit dargestellt (z. B. Cent für USD). Um 1,00 $ zu berechnen, übergeben Sie 100.
Finden Sie Ihre Produkt-IDs: Sie können Produkt-IDs in Ihrem Dodo Payments-Dashboard unter Produkte → Details anzeigen finden oder die Liste der Produkte API verwenden.
Kundeninformationen. Sie können entweder einen vorhandenen Kunden mit seiner ID anhängen oder während des Checkouts einen neuen Kundenrekord erstellen.
Vorhandenen Kunden anhängen
Neuer Kunde
Hängen Sie einen vorhandenen Kunden an die Checkout-Sitzung an, indem Sie seine ID verwenden.
Die eindeutige Kennung eines vorhandenen Kunden. Verwenden Sie dies, um die Checkout-Sitzung an einen vorhandenen Kunden anzuhängen, anstatt einen neuen zu erstellen.
Erstellen Sie während des Checkouts einen neuen Kundenrekord.
Telefonnummer des Kunden im internationalen Format. Erforderlich für einige Zahlungsmethoden und zur Betrugsprävention.Format: Einschließlich Ländervorwahl, z. B. "+1234567890" für US-Nummern
Vollständige Straßenadresse einschließlich Hausnummer, Straßenname und Wohnungs-/Einheitsnummer, falls zutreffend.Beispiel: "123 Main St, Apt 4B" oder "456 Oak Avenue"
Name des Bundesstaates, der Provinz oder der Region. Verwenden Sie vollständige Namen oder standardisierte Abkürzungen.Beispiel: "California" oder "CA", "Ontario" oder "ON"
Zweibuchstabiger ISO-Ländercode (ISO 3166-1 alpha-2). Dieses Feld ist immer erforderlich, wenn billing_address bereitgestellt wird.Beispiele: "US" (Vereinigte Staaten), "CA" (Kanada), "GB" (Vereinigtes Königreich), "DE" (Deutschland)
Steuern Sie, welche Zahlungsmethoden den Kunden während des Checkouts zur Verfügung stehen. Dies hilft, für bestimmte Märkte oder Geschäftsanforderungen zu optimieren.Verfügbare Optionen: 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
Kritisch: Stellen Sie immer sicher, dass credit und debit als Fallback-Optionen enthalten sind, um Checkout-Fehler zu vermeiden, wenn bevorzugte Zahlungsmethoden nicht verfügbar sind.
Überschreiben Sie die standardmäßige Währungswahl mit einer festen Rechnungswährung. Verwendet ISO 4217-Währungscodes.Unterstützte Währungen: USD, EUR, GBP, CAD, AUD, INR, und mehrBeispiel: "USD" für US-Dollar, "EUR" für Euro
Dieses Feld ist nur wirksam, wenn adaptive Preisgestaltung aktiviert ist. Wenn adaptive Preisgestaltung deaktiviert ist, wird die Standardwährung des Produkts verwendet.
Aktivieren Sie den Modus zur minimalen Adresssammlung. Wenn aktiviert, sammelt der Checkout nur:
Land: Immer erforderlich zur Steuerbestimmung
PLZ/Postleitzahl: Nur in Regionen, in denen es für die Berechnung von Verkaufssteuern, Mehrwertsteuer oder GST erforderlich ist
Dies reduziert erheblich die Checkout-Reibung, indem unnötige Formularfelder eliminiert werden.
Aktivieren Sie die minimale Adresse für eine schnellere Checkout-Abwicklung. Die vollständige Adresssammlung bleibt für Unternehmen verfügbar, die vollständige Rechnungsdetails benötigen.
Aktivieren Sie den Modus zur minimalen Adresssammlung. Wenn aktiviert, sammelt der Checkout nur:
Land: Immer erforderlich zur Steuerbestimmung
PLZ/Postleitzahl: Nur in Regionen, in denen es für die Berechnung von Verkaufssteuern, Mehrwertsteuer oder GST erforderlich ist
Dies reduziert erheblich die Checkout-Reibung, indem unnötige Formularfelder eliminiert werden.
Aktivieren Sie die minimale Adresse für eine schnellere Checkout-Abwicklung. Die vollständige Adresssammlung bleibt für Unternehmen verfügbar, die vollständige Rechnungsdetails benötigen.
Produktpreis für die erste Abbuchung des Kunden. Wenn nicht angegeben, wird der gespeicherte Preis des Produkts verwendet.Format: Wird in der niedrigsten Währungseinheit dargestellt (z. B. Cent für USD). Um 1,00 $ zu berechnen, übergeben Sie 100.
Optionale Überschreibung der Produktbeschreibung für die Abrechnung und Zeilenartikel. Wenn nicht angegeben, wird die gespeicherte Beschreibung des Produkts verwendet.
Ob adaptive Währungsgebühren im Produktpreis enthalten sein sollen (true) oder zusätzlich (false). Wird ignoriert, wenn adaptive Preisgestaltung nicht aktiviert ist.
Die billing_currency-Überschreibung tritt nur in Kraft, wenn die adaptive Währung in Ihren Kontoeinstellungen aktiviert ist. Wenn die adaptive Währung deaktiviert ist, hat dieser Parameter keine Auswirkungen.
Früher mussten Sie beim Erstellen eines Zahlungslinks mit dynamischen Links die vollständige Rechnungsadresse des Kunden angeben.Mit Checkout-Sitzungen ist dies nicht mehr erforderlich. Sie können einfach die Informationen übergeben, die Sie haben, und wir kümmern uns um den Rest. Zum Beispiel:
Wenn Sie nur das Rechnungsland des Kunden kennen, geben Sie nur das an.
Der Checkout-Prozess sammelt automatisch die fehlenden Details, bevor der Kunde zur Zahlungsseite weitergeleitet wird.
Wenn Sie hingegen bereits alle erforderlichen Informationen haben und direkt zur Zahlungsseite springen möchten, können Sie den vollständigen Datensatz übergeben und confirm=true in Ihrem Anfragekörper einfügen.