@dodopayments/hono ger din Hono-app tre route handlers: Checkout returnerar checkout-URL:er, CustomerPortal skickar en kund till Customer Portal och Webhooks verifierar webhook-förfrågningar och anropar dina event handlers.
Checkout Handler
Skapa betalningslänkar och checkout-sessioner från din Hono-app.
Customer Portal
Låt kunder hantera sina prenumerationer och uppgifter.
Webhooks
Verifiera och bearbeta webhook-event från Dodo Payments.
Installation
1
Install the Package
Kör följande kommando i projektets rotkatalog:Paketet kräver Hono 4.8.9 eller senare.
2
Set Up Environment Variables
Skapa en fil med namnet 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 i testläge med DODO_PAYMENTS_ENVIRONMENT=test_mode under utvecklingen, eftersom en nyckel i testläge endast fungerar mot testläge. DODO_PAYMENTS_RETURN_URL är valfri.Exempel på route handlers
Exemplen registrerar routes i en Hono-app som skapats med
new Hono(). Handlers läser själva request body, så de behöver ingen middleware för body-parsning.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Använd denna handler för att integrera Dodo Payments checkout i din Hono-app. Den stöder statiska (GET), dynamiska (POST) och sessionbaserade (POST) flöden. Registrera varje POST-flöde på en egen sökväg, eftersom Hono stoppar vid den första handler som körs för en förfrågan.
Checkout-route handler
Adaptern stöder alla tre checkout-flöden i 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 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 en prenumeration med en betalningslänk, beroende på om produkten är återkommande. - Checkout-sessioner:
type: "session", POST. Skapar en checkout-session från en produktkundvagn och kunduppgifter. Använd detta flöde för nya integrationer.
Checkout tar följande alternativ:
Registrera handlern för GET när
type är static, och för POST när type är dynamic eller session. Handlern behandlar varje förfrågan som inte är POST som en statisk checkout-förfrågan.
Static Checkout (GET)
Static Checkout (GET)
Query-parametrar som stöds
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 värdet understiger produktens minimipris.Alla query-parametrar som börjar med
metadata_ skickas till checkout som metadata, till exempel metadata_orderId=123.true och motsvarande fält har ett värde, till exempel email med disableEmail. Handlern 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-förfrågan.
- Stöder både engångsbetalningar och återkommande betalningar. Handlern hämtar produkten och skapar sedan en prenumeration om produkten är återkommande, och annars en engångsbetalning.
- Body måste innehålla
billing(medstreet,city,state,countryochzipcode) ochcustomer, samtproduct_id(med en valfriquantity) ellerproduct_cart. Prenumerationer kräverproduct_id. - Handlern vidarebefordrar även
metadata,allowed_payment_method_types,billing_currency,discount_codes(eller det föråldradediscount_code),return_url,show_saved_payment_methodsochtax_id. För prenumerationer vidarebefordras ävenaddons,on_demandochtrial_period_days. Övriga fält ignoreras. - Mer information om fälten finns i:
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. 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 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å 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-sessioner returnerar ett JSON-svar med checkout-URL:en:Route handler för Customer Portal
Route handlern för Customer Portal skapar en Customer Portal-session för kunden icustomer_id och omdirigerar förfrågan till portallänken. CustomerPortal tar alternativen bearerToken och environment, samma som Checkout. Om Dodo Payments inte kan skapa sessionen returnerar handlern 500.
Query-parametrar
Route handler för webhook
Webhook-handlern verifierar varje förfrågan med din webhook-hemlighet, som skickas somwebhookKey, och anropar sedan dina event handlers. Den läser själv den råa request body, så routen behöver ingen middleware för body-parsning.
- Metod: Endast POST-förfrågningar stöds. Andra metoder returnerar 405.
- Signaturverifiering: Verifierar headerna
webhook-id,webhook-timestampochwebhook-signaturemedwebhookKeyenligt specifikationen för Standard Webhooks. Returnerar 401 om verifieringen misslyckas. - Validering av payload: Valideras med Zod. Returnerar 400 för ogiltiga payloads.
- Felhantering:
- 401: Ogiltig signatur
- 400: Ogiltig payload
- 500: Internt fel under verifieringen
- Event-routing: Anropar
onPayloadför varje event, därefter handlern för eventets typ, och returnerar 200 när de är klara. Handlern fångar inte fel som dina event handlers kastar.