
Så fungerar det
Inline checkout renderar en säker Dodo Payments-frame i en container på din sida. Framen hanterar insamlingen av kundinformation och betalningsuppgifter. Din sida visar artiklar, summor och annan information. SDK:t gör det möjligt för din sida och checkout-framen att kommunicera med varandra. När checkout slutförs skapar Dodo Payments betalningen, eller prenumerationen för en prenumerationsprodukt, och skickar en webhook så att du kan ge kunden åtkomst.Vad kännetecknar en bra inline checkout
Kunderna behöver veta vem de handlar av, vad de köper och hur mycket de betalar. Din implementation måste innehålla:
Example inline checkout layout showing required elements
- Återkommande information: Om betalningen återkommer ska du visa hur ofta den återkommer och totalsumman som ska betalas vid förnyelse. Om det finns en provperiod ska du visa dess längd.
- Artikelbeskrivningar: En beskrivning av det som köps.
- Transaktionssummor: Delsumma, total skatt och totalsumma, inklusive valuta.
- Dodo Payments-footer: Den fullständiga inline checkout-framen, inklusive footern med information om Dodo Payments, försäljningsvillkor och integritetspolicy.
- Återbetalningspolicy: En länk till din återbetalningspolicy om den skiljer sig från Dodo Payments standardpolicy för återbetalning.
Kundresan
Checkout-flödet beror på konfigurationen av din checkout-session. Beroende på hur du konfigurerar sessionen kan kunderna se all information på en enda sida eller över flera steg.Customer opens checkout
checkout.breakdown, för att visa och uppdatera information på sidan.
Customer enters their details
Customer selects payment method

Checkout completed

Dodo Payments creates the payment or subscription

Kom igång snabbt
Installera SDK:t, initiera det för inline-läge och öppna checkout i ett container-element:Integration steg för steg
Install the SDK
Initialize the SDK for Inline Display
displayType: 'inline'. Lyssna på händelsen checkout.breakdown för att uppdatera gränssnittet med skatte- och totalsummor i realtid:Create a Container Element
Open the Checkout
DodoPayments.Checkout.open() med checkoutUrl och elementId för din container:Test Your Integration
- Starta din utvecklingsserver:
- Testa checkout-flödet:
- Ange din e-postadress och adressuppgifter i inline-framen
- Kontrollera att din anpassade ordersammanfattning uppdateras i realtid
- Testa betalningsflödet med testuppgifter
- Bekräfta att omdirigeringar fungerar korrekt
checkout.breakdown-händelser loggas i webbläsarens konsol om du lade till en konsollogg i callbacken onEvent.Go Live
- Ändra läget till
'live':
- Uppdatera dina checkout-URL:er så att de använder aktiva checkout-sessioner från din backend
- Testa hela flödet i produktion
Komplett React-exempel
Det här exemplet visar hur du implementerar en anpassad ordersammanfattning bredvid inline checkout och håller dem synkroniserade med hjälp av händelsencheckout.breakdown:
API-referens
Initiera
AnropaInitialize en gång för att konfigurera SDK:t:
Öppna checkout
Öppna checkout-framen i en container:Stäng checkout
Ta bort checkout-framen programmatiskt och rensa händelselyssnare:Kontrollera status
Kontrollera om checkout-framen för närvarande är injicerad:Händelser
SDK:t tillhandahåller händelser i realtid via callbackenonEvent. För inline checkout är checkout.breakdown särskilt användbar för att synkronisera gränssnittet:
Data för checkout-uppdelning
Händelsencheckout.breakdown tillhandahåller pris- och skatteinformation:
- Valutaformatering: Priser är heltal i den minsta valutaenheten, till exempel cent för USD. För valutor med två decimaler delar du med 100 innan formatering med
Intl.NumberFormat. Valutor utan decimaler, till exempel JPY, har ingen mindre enhet, så dela inte sådana belopp. - Hantering av initiala tillstånd: När checkout läses in första gången kan
taxochdiscountvara0ellernulltills användaren anger sin faktureringsinformation eller tillämpar en kod. Hantera dessa tillstånd på ett smidigt sätt, till exempel genom att visa ett tankstreck—eller dölja raden. - ”Slutlig summa” jämfört med ”Summa”: Medan
totalger dig standardberäkningen av priset ärfinalTotalden tillförlitliga källan för transaktionen. OmfinalTotalfinns återger den exakt det belopp som debiteras kundens kort. - Feedback i realtid: Använd fältet
taxför att visa användarna att skatten beräknas i realtid. Det ger checkout-sidan en ”live”-känsla och minskar friktionen när adressen anges.
CDN-implementation
För en snabb integration utan ett build-steg laddar du SDK:t från CDN:Uppdatera betalningsmetod
Inline checkout stöder uppdateringar av betalningsmetoder för prenumerationer. När en kund behöver uppdatera sin betalningsmetod för en aktiv prenumeration eller återaktivera en pausad prenumeration kan du rendera uppdateringsflödet direkt i sidlayouten.Så fungerar det
- Anropa API:t för uppdatering av betalningsmetod för att hämta en
payment_link:
- Skicka den returnerade
payment_linksomcheckoutUrlför att öppna inline checkout:
För pausade prenumerationer
När betalningsmetoden uppdateras för en prenumeration med statusenon_hold skapar Dodo Payments automatiskt en debitering för eventuella återstående skulder. Övervaka webhooks för payment.succeeded och subscription.active för att bekräfta återaktiveringen.
Felhantering
Implementera alltid felhantering i din callbackonEvent:
Bästa praxis
- Responsiv design: Se till att container-elementet har tillräcklig bredd och höjd. iframe-elementet expanderar vanligtvis så att det fyller sin container.
- Synkronisering: Använd händelsen
checkout.breakdownför att hålla din anpassade ordersammanfattning eller dina pristabeller synkroniserade med det användaren ser i checkout-framen. - Skeleton-tillstånd: Visa en laddningsindikator i containern tills händelsen
checkout.openedutlöses. - Rensning: Anropa
DodoPayments.Checkout.close()när komponenten avmonteras för att rensa iframe-elementet och händelselyssnarna.
#0d0d0d som bakgrundsfärg för bästa visuella integration med inline checkout-framen.Validering av betalningsstatus
Varför validering på serversidan är avgörande
Inline checkout-händelser ger feedback i realtid, men de bör inte vara din enda källa till sanning för betalningsstatus. Nätverksproblem, webbläsarkrascher eller användare som stänger sidan kan göra att händelser missas. Säkerställ tillförlitlig betalningsvalidering genom att:- Lyssna på webhook-händelser – Dodo Payments skickar webhooks när betalningsstatus ändras
- Implementera en polling-mekanism – Frontend ska fråga din server efter statusuppdateringar
- Kombinera båda metoderna – Använd webhooks som primär källa och polling som reservlösning
Rekommenderad arkitektur
Implementeringssteg
1. Lyssna efter checkout-händelser – När användaren klickar på Betala börjar du förbereda verifieringen av statusen:payment.succeeded eller payment.failed. Mer information finns i vår dokumentation om Webhooks.
Felsökning
Checkout frame is not appearing
Checkout frame is not appearing
- Kontrollera att
elementIdmatcharidför ettdivsom faktiskt finns i DOM - Kontrollera att
displayType: 'inline'skickades tillInitialize - Kontrollera att
checkoutUrlär giltig
Taxes are not updating in my UI
Taxes are not updating in my UI
- Kontrollera att du lyssnar efter händelsen
checkout.breakdown - Skatter beräknas först när användaren anger ett giltigt land och postnummer i checkout-framen
Digitala plånböcker
Detaljerad information om hur du konfigurerar Apple Pay, Google Pay och andra digitala plånböcker finns på sidan Digitala plånböcker.Snabb konfiguration av Apple Pay
Open Wallet domains

Open Wallet domains from the Apple Pay row
Download the domain association file

Download the Apple Pay domain association file
Register your domain
shop.example.com, och klicka sedan på Continue.
Register the domain where you embed inline checkout
Host the file on your domain
Content-Type: application/octet-stream eller text/plain.Verify the domain

Verify the hosted association file
Confirm it's active

Verified domains show an Active status
Test the integration
- Öppna checkout på en Apple-enhet
- Kontrollera att Apple Pay-knappen visas
- Slutför en testtransaktion
Webbläsarstöd
Dodo Payments Checkout SDK stöder:- Chrome (senaste versionen)
- Firefox (senaste versionen)
- Safari (senaste versionen)
- Edge (senaste versionen)
- IE11+