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.
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' }); }});
Kopiera
Fråga AI
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
Kopiera
Fråga AI
// 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 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.
Beloppet kunden betalar om pay_what_you_want är aktiverat. Om det är inaktiverat kommer detta fält att ignoreras.Format: Representerat i den lägsta valören av valutan (t.ex. cent för USD). Till exempel, för att ta ut $1.00, skicka 100.
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.
Kundens telefonnummer i internationellt format. Obligatorisk för vissa betalningsmetoder och bedrägeriförebyggande åtgärder.Format: Inkludera landskod, t.ex. "+1234567890" för amerikanska nummer
Tvåbokstavskod för land (ISO 3166-1 alpha-2). Detta fält är alltid obligatoriskt när faktureringsadress tillhandahålls.Exempel: "US" (USA), "CA" (Kanada), "GB" (Storbritannien), "DE" (Tyskland)
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.
Ö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.
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.
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.
Produktpris för den initiala avgiften till kunden. Om det inte anges, kommer det lagrade priset för produkten att användas.Format: Representerat i den lägsta valören av valutan (t.ex. cent för USD). Till exempel, för att ta ut $1.00, skicka 100.
Valfritt produktbeskrivning överskrivning för fakturering och linjeposter. Om det inte anges, kommer den lagrade beskrivningen av produkten att användas.
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.
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.