@dodopayments/fastify ger din Fastify-app tre route handlers: Checkout returnerar checkout-URL:er, CustomerPortal skickar en kund till Customer Portal och Webhooks verifierar webhook requests och anropar dina event handlers.
Checkout Handler
Skapa payment links och checkout sessions från din Fastify-app.
Customer Portal
Låt kunder hantera sina prenumerationer och uppgifter.
Webhooks
Verifiera och bearbeta webhook events från Dodo Payments.
Installation
1
Install the Package
Kör följande kommando i projektets rotkatalog:Paketet kräver Fastify 5.4.0 eller senare.
2
Set Up Environment Variables
Skapa en Skapa API key under Developer → API Keys. Lägg till din webhook endpoint under Developer → Webhooks och kopiera dess signing secret till
.env-fil i projektets rotkatalog:DODO_PAYMENTS_WEBHOOK_KEY. Använd en API key i test mode medan du bygger, med DODO_PAYMENTS_ENVIRONMENT=test_mode, eftersom en key i test mode bara fungerar mot test mode. DODO_PAYMENTS_RETURN_URL är valfri.Exempel på route handlers
Exemplen registrerar routes på en Fastify-instans som skapats med
Fastify(). Webhook-routen behöver request body i råformat, så exemplet lägger till en string body parser i ett plugin som endast innehåller webhook-routen.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Använd denna handler för att integrera Dodo Payments checkout i din Fastify-app. Stöder statiska (GET), dynamiska (POST) och sessionbaserade (POST) payment flows.
Checkout() returnerar en getHandler för det statiska flödet och en postHandler för de dynamiska och sessionbaserade flödena. Registrera varje POST-flöde på sin egen path.Checkout route handler
Adaptern stöder alla tre checkout flows från Dodo Payments. Ange
type i handler-konfigurationen för att välja vilket flöde en route ska hantera. Varje flöde svarar med JSON som innehåller en checkout_url som kunden kan öppna.- Statiska payment links:
type: "static", GET. Skapar en payment link för en produkt från query parameters efter att ha kontrollerat att produkten finns. - Dynamiska payment links:
type: "dynamic", POST. Skapar en engångsbetalning eller en prenumeration med en payment link, beroende på om produkten är återkommande. - Checkout sessions:
type: "session", POST. Skapar en checkout session från en produktvarukorg och kunduppgifter. Använd detta flöde för nya integrationer.
Checkout tar emot följande options:
Checkout returnerar ett objekt med två handlers. Registrera getHandler för GET när type är static, och postHandler för POST när type är dynamic eller session.
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 Pay What You Want-produkter och ignoreras om beloppet understiger produktens minimipris.Alla query parameters 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. Handlern skickar dessa parametrar till en statisk payment link.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 request.
- Stöder både engångsbetalningar och återkommande betalningar. Handlern hämtar produkten och skapar sedan en prenumeration om produkten är återkommande, annars en engångsbetalning.
- Body behöver
billing(medstreet,city,state,countryochzipcode) ochcustomer, samtproduct_id(med en valfriquantity) ellerproduct_cart. Prenumerationer behöverproduct_id. - Handlern vidarebefordrar också
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
Dynamic checkout returnerar ett JSON-svar med payment link som checkout-URL:Checkout Sessions (POST)
Checkout Sessions (POST)
Skicka en checkout session payload som JSON body. Handlern 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 kan användas en gång och upphör att gälla 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å handlern 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 sessions returnerar ett JSON-svar med checkout-URL:en:Customer Portal route handler
Customer Portal route handler skapar en Customer Portal-session för kunden icustomer_id och omdirigerar requesten till portal-länken. CustomerPortal tar emot options bearerToken och environment, på samma sätt som Checkout. Om Dodo Payments inte kan skapa sessionen returnerar handlern 500.
Query parameters
Webhook route handler
Webhook-handlern verifierar varje request med din webhook secret, som skickas somwebhookKey, och anropar sedan dina event handlers.
- Method: Endast POST requests stöds. Andra methods returnerar 405.
- Signature Verification: Verifierar headers
webhook-id,webhook-timestampochwebhook-signaturemedwebhookKeyenligt specifikationen Standard Webhooks. Returnerar 401 om verifieringen misslyckas. - Payload Validation: Valideras med Zod. Returnerar 400 för ogiltiga payloads.
- Error Handling:
- 401: Ogiltig signature
- 400: Ogiltig payload
- 500: Internt fel under verifieringen
- Event Routing: Anropar
onPayloadför varje event, sedan handlern för eventets type, och returnerar 200 när de är klara. Handlern fångar inte fel som dina event handlers kastar.