@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
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 stad.
string
Kundens delstat eller provins.
string
Kundens postnummer eller ZIP code.
boolean
Sätt till
true för att inaktivera fältet för fullständigt namn.boolean
Sätt till
true för att inaktivera förnamnsfältet.boolean
Sätt till
true för att inaktivera efternamnsfältet.boolean
Sätt till
true för att inaktivera e-postfältet.boolean
Sätt till
true för att inaktivera landsfältet.boolean
Sätt till
true för att inaktivera fältet för adressrad.boolean
Sätt till
true för att inaktivera stadsfältet.boolean
Sätt till
true för att inaktivera delstatsfältet.boolean
Sätt till
true för att inaktivera ZIP code-fä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 Pay What You Want-produkter och ignoreras om beloppet understiger produktens minimipris.boolean
standard:"true"
Visa eller dölj rabattsektionen.
string
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
string
obligatorisk
Kundens ID för portal-sessionen, till exempel
?customer_id=cus_123.boolean
Om den anges som
true skickas ett e-postmeddelande till kunden med portal-länken.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.