@dodopayments/convex component adds Dodo Payments to your Convex backend. It provides a checkout function that creates checkout sessions, a customerPortal function that opens the Customer Portal for the signed-in user, and createDodoWebhookHandler, which verifies webhooks in a Convex HTTP action. It requires Convex 1.26 or later.
Checkout Function
Skapa checkout-sessioner från Convex-actions.
Customer Portal
Låt kunder hantera sina prenumerationer och uppgifter.
Webhooks
Ta emot och bearbeta Dodo Payments webhook-händelser.
Installation
1
Install the Package
Kör det här kommandot i projektets rotkatalog:
2
Add Component to Convex Config
Lägg till Dodo Payments-komponenten i din Convex-konfiguration:När du har redigerat
convex.config.ts kör du npx convex dev en gång för att generera typerna.3
Set Up Environment Variables
Ange miljövariabler i Convex-instrumentpanelen under Settings → Environment Variables. Öppna instrumentpanelen genom att köra:Lägg till dessa miljövariabler:
DODO_PAYMENTS_API_KEY: Din Dodo Payments API-nyckel, från Developer → API Keys i Dodo Payments-instrumentpanelen.DODO_PAYMENTS_ENVIRONMENT:test_modeellerlive_mode.DODO_PAYMENTS_WEBHOOK_SECRET: Din webhook-hemlighet, från Developer → Webhooks. Krävs för webhook-hantering. Webhook-hanteraren läser exakt det här variabelnamnet.
Exempel på komponentkonfiguration
1
Create Internal Query
Skapa en intern query som hittar en kund i din databas med hjälp av auth-ID:t. Funktionen
identify i nästa steg använder den för att hämta den inloggade användarens Dodo Payments-kund-ID till kundportalen.2
Configure DodoPayments Component
Skapa klienten.
identify mappar den inloggade Convex-användaren till ett Dodo Payments-kund-ID. Den returnerar null om ingen användare är inloggad eller om ingen kund matchar.- Checkout Function Setup
- Customer Portal Setup
- Webhook Handler Setup
Använd den här funktionen för att lägga till Dodo Payments checkout i din Convex-app. Den skapar en checkout-session från de fält som accepteras av komponentens validator för checkout-payload.
Checkout-funktion
Convex-komponenten skapar checkout-sessioner, det rekommenderade checkout-flödet för alla betalningar. En session innehåller produktvarukorgen, kunduppgifter och checkout-alternativ.Användning
Anropacheckout från en Convex-action med checkout-sessionens fält i payload:
checkout anropar inte identify. Om du vill koppla en befintlig kund skickar du customer: { customer_id } i payloaden. Mer information och en fullständig lista över fält som stöds finns i Checkout-sessioner.
En session som skapas med payment_method_id returnerar ingen checkout-URL, så checkout kastar ett fel för den.
Svarsformat
Checkout-funktionen returnerar ett objekt med checkout-URL:en:Customer Portal-funktion
Kundportalsfunktionen returnerar en Customer Portal-URL för den inloggade användaren.Användning
portal_url-fält.
Parametrar
boolean
standard:"false"
Om det anges till
true skickar Dodo Payments även portal-länken via e-post till kunden.customerPortal hämtar kunden från funktionen identify i din DodoPayments-konfiguration, som måste returnera kundens dodoCustomerId. Om identify returnerar null kastar customerPortal ett User is not authenticated.-fel.Webhook-hanterare
createDodoWebhookHandler verifierar varje begäran innan din kod körs:
- Method: Registrera routen med
method: "POST". Begäranden med andra metoder når inte hanteraren. - Signature Verification: Verifierar Standard Webhooks-signaturen med miljövariabeln
DODO_PAYMENTS_WEBHOOK_SECRET. Returnerar 400 om verifieringen misslyckas. - Payload Validation: Valideras med Zod. Returnerar 400 för ogiltiga payloads.
- Error Handling:
- 400: Ogiltig signatur, ogiltig payload eller ett fel som kastats av en av dina hanterare
- 200: Alla hanterare har slutförts
- Om
DODO_PAYMENTS_WEBHOOK_SECRETinte har angetts kastar hanteraren ett fel och begäran misslyckas.
- Event Routing: Anropar
onPayloadför varje händelse och därefter hanteraren för händelsetypen.
Webhook-händelsehanterare som stöds
Varje hanterare tar emot ConvexActionCtx och den verifierade payloaden för sin händelsetyp:
Användning i frontend
Anropa checkout- och portal-actions från dina React-komponenter med hookenuseAction från convex/react.