Dynamisk Prissättning Kassa med Betala Vad Du Vill
Skapa flexibla kassa-länkar med variabel prissättning med hjälp av en enda produkt. Aktivera Betala Vad Du Vill för att låta kunder välja sitt pris eller ställa in dynamiska belopp programatiskt.
Dynamisk prissättning gör att du kan erbjuda variabel prissättning för dina produkter utan att skapa flera produktinlägg. Genom att aktivera Betala Vad Du Vill (PWYW) på en enda produkt kan du ställa in minimala och maximala prisgränser, och sedan skicka dynamiska belopp när du skapar kassa-sessionlänkar.Denna metod är idealisk när du behöver:
Variabel prissättning utan att hantera flera produkter
Kunddriven prissättning där köpare väljer sitt belopp
Programmatisk prisstyrning där du ställer in beloppet dynamiskt via API
Flexibla prissättningsmodeller för digitala produkter, donationer eller experimentella lanseringar
Betala Vad Du Vill är endast tillgängligt för Single Payment (engångsbetalning) produkter. Det kan inte användas med prenumerationsprodukter.
Ställ in prisgränser: Ange ett minimipris (obligatoriskt) och eventuellt ett maximipris
Skicka dynamiska belopp: Inkludera ett amount-fält i produktkorgen när du skapar kassasessioner
Låt kunder välja: Om inget belopp anges kan kunderna själva ange ett pris (inom dina gränser)
När du anger ett amount i produktkorgen används det beloppet för kassan. Om du utelämnar amount-fältet kan kunderna välja sitt eget pris under kassan (inom dina min/max-gränser).
Först, skapa en engångsprodukt i din Dodo Payments-instrumentpanel och aktivera Betala Vad Du Vill-prissättning.
1
Create a new product
Gå till Products i din Dodo Payments-instrumentpanel och klicka på Add Product.
2
Configure product details
Fyll i den obligatoriska produktinformationen:
Product Name: Visningsnamn för din produkt
Product Description: Tydlig beskrivning av vad kunderna köper
Product Image: Ladda upp en bild (PNG/JPG/WebP, upp till 3 MB)
Tax Category: Välj rätt skattekategori
3
Set pricing type
Välj Pricing Type som Single Payment (engångsbetalning).
4
Enable Pay What You Want
I avsnittet Pricing, aktivera växeln Pay What You Want.
5
Set minimum price
Ange Minimum Price som kunderna måste betala. Detta är obligatoriskt och säkerställer att du upprätthåller ett intäktsgolv.Exempel: Om ditt minimum är $5.00, ange 5.00 (eller 500 cent).
6
Set maximum price (optional)
Valfritt kan du ange ett Maximum Price för att begränsa hur mycket kunderna kan betala.
7
Set suggested price (optional)
Valfritt kan du ange ett Suggested Price som visas för att hjälpa kunderna. Detta hjälper till att styra förväntningarna och kan förbättra det genomsnittliga ordervärdet.
8
Save the product
Klicka på Add Product för att spara. Notera ditt produkt-ID (t.ex. pdt_123abc456def) för användning i kassasessioner.
Du hittar ditt produkt-ID i instrumentpanelen under Products → View Details, eller genom att använda List Products API.
Steg 2: Skapa Kassa-sessioner med Dynamisk Prissättning
När din produkt är konfigurerad med Pay What You Want kan du skapa kassasessioner med dynamiska belopp. amount-fältet i produktkorgen låter dig programmatiskt ange priset för varje kassasession.
import osfrom dodopayments import DodoPayments# Initialize the Dodo Payments clientclient = DodoPayments( bearer_token=os.environ.get("DODO_PAYMENTS_API_KEY"),)def create_dynamic_pricing_checkout( product_id: str, amount_in_cents: int, return_url: str): """ Create a checkout session with dynamic pricing. Args: product_id: The product ID with Pay What You Want enabled amount_in_cents: The amount in cents (e.g., 2500 for $25.00) return_url: URL to redirect after payment completion Returns: Session object with checkout_url and session_id """ try: session = client.checkout_sessions.create( product_cart=[ { "product_id": product_id, "quantity": 1, # Dynamic amount in cents (e.g., 1500 = $15.00) "amount": amount_in_cents } ], return_url=return_url, # Optional: Pre-fill customer information customer={ "email": "customer@example.com", "name": "John Doe" }, # Optional: Add metadata for tracking metadata={ "order_id": "order_123", "pricing_tier": "custom" } ) 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: Create checkout with $25.00 (2500 cents)session = create_dynamic_pricing_checkout( "prod_123abc456def", 2500, # $25.00 in cents "https://yoursite.com/checkout/success")# Example: Create checkout with $10.00 (1000 cents)session2 = create_dynamic_pricing_checkout( "prod_123abc456def", 1000, # $10.00 in cents "https://yoursite.com/checkout/success")
Beloppsformat: amount-fältet måste vara i valutaenhetens lägsta valör. För USD innebär det cent (t.ex. $25.00 = 2500). För andra valutor, använd den minsta enheten (t.ex. paise för INR).
Om du vill att kunderna ska kunna välja sitt eget pris under kassan, utelämna helt enkelt amount-fältet från produktkorgen. Kassasidan visar ett inmatningsfält där kunderna kan ange valfritt belopp inom dina minimi- och maximigränser.
async function createCustomerChoiceCheckout( productId: string, returnUrl: string) { try { const session = await client.checkoutSessions.create({ product_cart: [ { product_id: productId, quantity: 1 // No amount field - customer will choose their price } ], return_url: returnUrl, customer: { email: 'customer@example.com', name: 'John Doe' } }); return session; } catch (error) { console.error('Failed to create checkout session:', error); throw error; }}
def create_customer_choice_checkout( product_id: str, return_url: str): """ Create a checkout session where customers choose their own price. """ try: session = client.checkout_sessions.create( product_cart=[ { "product_id": product_id, "quantity": 1 # No amount field - customer will choose their price } ], return_url=return_url, customer={ "email": "customer@example.com", "name": "John Doe" } ) return session except Exception as error: print(f"Failed to create checkout session: {error}") raise error
Produkten har Pay What You Want aktiverat i instrumentpanelen
Produkten är en Single Payment (engångsbetalning), inte en prenumeration
Beloppet är i rätt format (lägsta valutaenhet, t.ex. cent för USD)
Amount exceeds maximum or is below minimum
API:et kommer att avvisa kassasessioner där beloppet bryter mot produktens prisgränser. Validera alltid belopp innan du skapar kassasessioner, eller låt kunderna välja sitt pris genom att utelämna amount-fältet.
Customer can't enter their own price
Om kunder inte ser prisinmatningsfältet, se till att du har utelämnat amount-fältet från produktkorgen. När amount anges använder kassan det exakta beloppet.