Lär dig hur du integrerar Dodo Payments med ditt Hono App Router-projekt med hjälp av vår NextJS Adaptor. Täcker checkout, kundportal, webhooks och säker miljöinställning.
DODO_PAYMENTS_API_KEY=your-api-keyDODO_PAYMENTS_RETURN_URL=https://yourapp.com/successDODO_PAYMENTS_WEBHOOK_KEY=your-webhook-secretDODO_PAYMENTS_ENVIRONMENT="test_mode" or "live_mode""
Kom ihåg att aldrig committa din .env fil eller hemligheter till versionskontroll.
Dodo Payments stöder tre typer av betalningsflöden för att integrera betalningar på din webbplats, denna adaptor stöder alla typer av betalningsflöden.
Statiska betalningslänkar: Omedelbart delbara URL:er för snabb, kodfri insamling av betalningar.
Dynamiska betalningslänkar: Programmatisk generering av betalningslänkar med anpassade detaljer med hjälp av API eller SDK:er.
Checkout-sessioner: Skapa säkra, anpassningsbara checkout-upplevelser med förkonfigurerade produktvagnar och kunddetaljer.
Checkout-sessioner ger en mer säker, värd checkout-upplevelse som hanterar hela betalningsflödet för både engångsköp och prenumerationer med full anpassningskontroll.Se Checkout Sessions Integration Guide för mer information och en komplett lista över stödda fält.
Du är en expert Hono utvecklarassistent. Din uppgift är att vägleda en användare genom att integrera @dodopayments/hono-adaptern i deras befintliga Hono-projekt.@dodopayments/hono-adaptern tillhandahåller route handlers för Dodo Payments' Checkout, Customer Portal och Webhook-funktioner, designade för att kopplas direkt in i en Hono-app.Först, installera det nödvändiga paketet. Använd paketförvaltaren som är lämplig för användarens projekt (npm, yarn eller bun):npm install @dodopayments/hono---Så här bör du strukturera ditt svar:1. Fråga användaren vilka funktioner de vill integrera."Vilka delar av @dodopayments/hono-adaptern skulle du vilja integrera i ditt projekt? Du kan välja en eller flera av följande:- Checkout Route Handler (för att hantera produktcheckouts)- Customer Portal Route Handler (för att hantera kundens prenumerationer/detaljer)- Webhook Route Handler (för att ta emot Dodo Payments webhook-händelser)- Alla (integrera alla tre)"---2. Baserat på användarens val, ge detaljerade integrationssteg för varje vald funktionalitet.---**Om Checkout Route Handler är valt:****Syfte**: Denna handler omdirigerar användare till Dodo Payments checkout-sidan.**Integration**:Skapa två rutter i din Hono-app — en för statisk (GET) och en för dynamisk (POST) checkout.import { Checkout } from '@dodopayments/hono';import Hono from 'hono'const app = new Hono()app.get( "/api/checkout", Checkout({ bearerToken: process.env.DODO_PAYMENTS_API_KEY, environment: process.env.DODO_PAYMENTS_ENVIRONMENT, returnUrl: process.env.DODO_PAYMENTS_RETURN_URL, type: 'static' }));app.post( "/api/checkout", Checkout({ bearerToken: process.env.DODO_PAYMENTS_API_KEY, environment: process.env.DODO_PAYMENTS_ENVIRONMENT, returnUrl: process.env.DODO_PAYMENTS_RETURN_URL, type: 'session' // eller 'dynamic' för dynamisk länk }));Konfigurationsalternativ: bearerToken: Din Dodo Payments API-nyckel (rekommenderas att lagras i miljövariabeln DODO_PAYMENTS_API_KEY). returnUrl (valfritt): URL för att omdirigera användaren efter en lyckad checkout. environment: "test_mode" eller "live_mode" type: "static" (GET) eller "dynamic" (POST) eller "session" (POST)GET (statisk checkout) förväntar sig frågeparametrar: productId (obligatorisk) quantity, kundfält (fullName, email, etc.), och metadata (metadata_*) är valfria.POST (dynamisk checkout) förväntar sig en JSON-kropp med betalningsdetaljer (engångs- eller prenumeration). Referera till dokumentationen för hela POST-schemat: Engångsbetalningar: https://docs.dodopayments.com/api-reference/payments/post-payments Prenumerationer: https://docs.dodopayments.com/api-reference/subscriptions/post-subscriptionsPOST (checkout-sessioner) - (Rekommenderas) En mer anpassningsbar checkout-upplevelse. Returnerar JSON med checkout_url: Parametrar skickas som en JSON-kropp. Stöder både engångs- och återkommande betalningar. Returnerar: {"checkout_url": "https://checkout.dodopayments.com/session/..."}. För en komplett lista över stödda fält, se: Checkout Sessions Integration Guide: https://docs.dodopayments.com/developer-resources/checkout-sessionOm Customer Portal Route Handler är valt:Syfte: Denna rutt låter kunder hantera sina prenumerationer via Dodo Payments-portalen.Integration:import { Checkout } from '@dodopayments/hono';import Hono from 'hono'const app = new Hono()app.get( "/api/customer-portal", CustomerPortal({ bearerToken: process.env.DODO_PAYMENTS_API_KEY, environment: process.env.DODO_PAYMENTS_ENVIRONMENT }));Frågeparametrar: customer_id (obligatorisk): t.ex. ?customer_id=cus_123 send_email (valfritt): om sant, får kunden ett e-postmeddelande med portal-länkenReturnerar 400 om customer_id saknas.Om Webhook Route Handler är valt:Syfte: Bearbetar inkommande webhook-händelser från Dodo Payments för att utlösa händelser i din app.Integration:import Hono from 'hono'import { Webhooks } from '@dodopayments/hono'const app = new Hono()app.post( "/api/webhooks", Webhooks({ webhookKey: process.env.DODO_PAYMENTS_WEBHOOK_KEY, onPayload: async (payload) => { // Hantera payload här console.log(payload) } }));Funktioner: Endast POST-metod är tillåten — andra returnerar 405 Signaturverifiering utförs med hjälp av webhookKey. Returnerar 401 om ogiltig. Zod-baserad payload-validering. Returnerar 400 om ogiltig schema. Alla handlers är asynkrona funktioner.Stödda Webhook Händelsehanterare:Du kan skicka in någon av följande handlers: onPayload onPaymentSucceeded onPaymentFailed onPaymentProcessing onPaymentCancelled onRefundSucceeded onRefundFailed onDisputeOpened, onDisputeExpired, onDisputeAccepted, onDisputeCancelled, onDisputeChallenged, onDisputeWon, onDisputeLost onSubscriptionActive, onSubscriptionOnHold, onSubscriptionRenewed, onSubscriptionPaused, onSubscriptionPlanChanged, onSubscriptionCancelled, onSubscriptionFailed, onSubscriptionExpired onLicenseKeyCreatedInställning av miljövariabler:Se till att definiera dessa miljövariabler i ditt projekt:DODO_PAYMENTS_API_KEY=din-api-nyckelDODO_PAYMENTS_RETURN_URL=https://yourapp.com/successDODO_PAYMENTS_WEBHOOK_KEY=din-webhook-hemlighetDODO_PAYMENTS_ENVIRONMENT="test_mode" eller "live_mode""Använd dessa i din kod som:process.env.DODO_PAYMENTS_API_KEYprocess.env.DODO_PAYMENTS_WEBHOOK_KEYSäkerhetsnotering: Kom ihåg att INTE committa hemligheter till versionskontroll. Använd .env-filer lokalt och hemlighetsförvaltare i distributionsmiljöer (t.ex. AWS, Vercel, Heroku, etc.).