@dodopayments/express ger din Express-app tre routehanterare: checkoutHandler returnerar checkout-URL:er, CustomerPortal skickar en kund till Customer Portal och Webhooks verifierar webhook-anrop och anropar dina eventhanterare.
Checkout Handler
Skapa betalningslänkar och checkout-sessioner från din Express-app.
Customer Portal
Låt kunder hantera sina prenumerationer och uppgifter.
Webhooks
Verifiera och bearbeta webhook-händelser från Dodo Payments.
Installation
1
Install the Package
Kör följande kommando i projektets rotkatalog:
2
Set Up Environment Variables
Skapa filen Skapa API-nyckeln under Developer → API Keys. Lägg till din webhook-endpoint under Developer → Webhooks och kopiera dess signeringshemlighet till
.env i projektets rotkatalog:DODO_PAYMENTS_WEBHOOK_KEY. Använd en API-nyckel för testläge under utvecklingen tillsammans med DODO_PAYMENTS_ENVIRONMENT=test_mode, eftersom en nyckel för testläge endast fungerar mot testläge. DODO_PAYMENTS_RETURN_URL är valfri.Exempel på routehanterare
Exemplen registrerar routes i en Express-app som skapats med
express(). POST-hanterarna för checkout och webhook-hanteraren läser req.body, så varje exempel registrerar express.json() före sina routes.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Använd denna hanterare för att integrera checkout från Dodo Payments i din Express-app. Den stöder statiska (GET), dynamiska (POST) och sessionbaserade (POST) betalningsflöden. Registrera varje POST-flöde på en egen sökväg, eftersom den första hanteraren som registreras för en sökväg besvarar alla anrop till den.
Checkout-routehanterare
Adaptern stöder alla tre checkout-flöden i Dodo Payments. Ange
type i hanterarens konfiguration för att välja vilket flöde en route ska tillhandahålla. Varje flöde svarar med JSON som innehåller en checkout_url som kunden kan öppna.- Statiska betalningslänkar:
type: "static", GET. Skapar en betalningslänk för en produkt från query-parametrar efter att ha kontrollerat att produkten finns. - Dynamiska betalningslänkar:
type: "dynamic", POST. Skapar en engångsbetalning eller prenumeration med en betalningslänk, beroende på om produkten är återkommande. - Checkout-sessioner:
type: "session", POST. Skapar en checkout-session från en produktvarukorg och kunduppgifter. Använd detta flöde för nya integrationer.
checkoutHandler tar följande alternativ:
Registrera hanteraren för GET när
type är static, och för POST när type är dynamic eller session. Hanteraren returnerar 405 för andra metoder.
Static Checkout (GET)
Static Checkout (GET)
Parametrar som stöds i query
string
obligatorisk
Produktidentifierare, till exempel
?productId=pdt_nZuwz45WAs64n3l07zpQR.integer
standard:"1"
Produktens kvantitet.
string
Kundens fullständiga namn. Ignoreras om
firstName eller lastName anges.string
Kundens förnamn.
string
Kundens efternamn.
string
Kundens e-postadress.
string
Kundens land som en ISO 3166-1 alpha-2-kod.
string
Kundens gatuadress.
string
Kundens ort.
string
Kundens delstat eller provins.
string
Kundens postnummer eller ZIP-kod.
boolean
Ange
true för att inaktivera fältet för fullständigt namn.boolean
Ange
true för att inaktivera förnamnsfältet.boolean
Ange
true för att inaktivera efternamnsfältet.boolean
Ange
true för att inaktivera e-postfältet.boolean
Ange
true för att inaktivera landsfältet.boolean
Ange
true för att inaktivera adressfältet.boolean
Ange
true för att inaktivera ortsfältet.boolean
Ange
true för att inaktivera delstatsfältet.boolean
Ange
true för att inaktivera ZIP-kodfältet.string
Betalningsvalutan, till exempel
USD.boolean
standard:"true"
Visa eller dölj valutaväljaren.
number
Fastställer det debiterade beloppet i större valutaenheter, till exempel
12.5 för $12.50. Fungerar endast med produkter av typen Pay What You Want och ignoreras om beloppet understiger produktens minimipris.boolean
standard:"true"
Visa eller dölj rabattsektionen.
string
Alla query-parametrar som börjar med
metadata_ skickas till checkout som metadata, till exempel metadata_orderId=123.true och det matchande fältet har ett värde, till exempel email med disableEmail. Hanteraren skickar dessa parametrar till en statisk betalningslänk.Svarsformat
Statisk checkout returnerar ett JSON-svar med checkout-URL:en:Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Skicka parametrar som en JSON-body i en POST-begäran.
- Stöder både engångsbetalningar och återkommande betalningar. Hanteraren hämtar produkten och skapar sedan en prenumeration om produkten är återkommande, annars en engångsbetalning.
- Bodyn behöver
billing(medstreet,city,state,countryochzipcode) ochcustomer, samtproduct_id(med en valfriquantity) ellerproduct_cart. Prenumerationer behöverproduct_id. - Hanteraren vidarebefordrar även
metadata,allowed_payment_method_types,billing_currency,discount_codes(eller den föråldradediscount_code),return_url,show_saved_payment_methodsochtax_id. För prenumerationer vidarebefordras ävenaddons,on_demandochtrial_period_days. Övriga fält ignoreras. - Se följande för information om fälten:
Svarsformat
Dynamisk checkout returnerar ett JSON-svar med betalningslänken som checkout-URL:Checkout Sessions (POST)
Checkout Sessions (POST)
Skicka en checkout-session-payload som JSON-body. Hanteraren skapar en checkout-session som hanterar hela betalningsflödet för engångsköp och prenumerationer och returnerar dess
checkout_url. product_cart krävs och måste innehålla minst en produkt.Varje checkout_url fungerar en gång och upphör efter 24 timmar, eller efter 15 minuter när du skickar confirm: true. En session som skapats med payment_method_id returnerar ingen checkout_url, så hanteraren svarar med 400.Se Checkout Sessions Integration Guide för mer information och en fullständig lista över fält som stöds.Svarsformat
Checkout-sessioner returnerar ett JSON-svar med checkout-URL:en:Routehanterare för Customer Portal
Routehanteraren för Customer Portal skapar en Customer Portal-session för kunden icustomer_id och omdirigerar begäran till portallänken. CustomerPortal tar alternativen bearerToken och environment, på samma sätt som checkoutHandler. Om Dodo Payments inte kan skapa sessionen returnerar hanteraren 500.
Query-parametrar
string
obligatorisk
Kund-ID:t för portalsessionen, till exempel
?customer_id=cus_123.boolean
Om värdet är
true skickas ett e-postmeddelande till kunden med portallänken.Webhook-routehanterare
Webhook-hanteraren verifierar varje begäran med din webhook-hemlighet, som skickas somwebhookKey, och anropar sedan dina eventhanterare.
- Metod: Endast POST-begäranden stöds. Andra metoder returnerar 405.
- Signaturverifiering: Verifierar headerna
webhook-id,webhook-timestampochwebhook-signaturemedwebhookKeyenligt specifikationen Standard Webhooks. Returnerar 401 om verifieringen misslyckas. - Payload-validering: Valideras med Zod. Returnerar 400 för ogiltiga payloads.
- Felhantering:
- 401: Ogiltig signatur
- 400: Ogiltig payload
- 500: Internt fel under verifieringen
- Eventdirigering: Anropar
onPayloadför varje event, därefter hanteraren för eventets typ, och returnerar 200 när de är klara. Hanteraren fångar inte fel som dina eventhanterare kastar.