@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
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.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
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.