@dodopayments/remix ger din Remix-app tre request-hanterare. Checkout returnerar checkout-URL:er, CustomerPortal skickar en kund till Customer Portal och Webhooks verifierar webhook-händelser och dirigerar dem till din kod. Varje hanterare tar emot en Request och returnerar en Response, så du anropar den från en routes loader eller action.
Checkout Handler
Skapa checkout-URL:er från din Remix-app.
Customer Portal
Låt kunder hantera sina prenumerationer och uppgifter.
Webhooks
Ta emot och verifiera Dodo Payments webhook-händelser.
Installation
1
Install the Package
Kör det här kommandot i projektets rotkatalog:Paketet anger Remix 2 (
remix 2.16.8 eller senare) och zod 3.25 eller senare som peer dependencies.2
Set Up Environment Variables
Skapa en Skapa API-nyckeln 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. DODO_PAYMENTS_RETURN_URL är platsen dit kunder kommer efter checkout. Om du inte anger en environment använder hanterarna live_mode.Exempel på route-hanterare
Exemplen är Remix resource routes, som exporterar en
loader för GET requests eller en action för POST requests och ingen component. Med flat file routes tillhandahåller app/routes/api.checkout.tsx /api/checkout.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Använd den här hanteraren för att lägga till Dodo Payments checkout i din Remix-app.
loader tillhandahåller statisk checkout. action tillhandahåller dynamisk checkout här. För att tillhandahålla checkout sessions, det rekommenderade flödet, ska du i stället returnera checkoutSessionHandler(request) från action.action returnerar checkoutSessionHandler(request).Checkout route-hanterare
Checkout-hanteraren stöder alla tre sätt att ta betalt med Dodo Payments:- Static Payment Links: Delningsbara URL:er som tar emot betalningar utan kod.
- Dynamic Payment Links: Payment links som du genererar med anpassade uppgifter. De använder deprecated endpoints.
- Checkout Sessions: Hosted checkout med en produktvarukorg, kunduppgifter och anpassningsalternativ. Detta är det rekommenderade flödet.
Checkout tar emot följande options:
Static Checkout (GET)
Static Checkout (GET)
Questrängsparametrar som stöds
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.returnUrl från sin config i länken som redirect_url.Svarsformat
Statisk checkout returnerar ett JSON-svar med checkout-URL:en. I testläge använder URL:entest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout sessions skapar en hosted checkout för engångsköp och prenumerationer, med full kontroll över anpassningen.
product_cart är det enda obligatoriska fältet. Om bodyn inte innehåller return_url använder hanteraren returnUrl från sin config.Mer information och en lista över alla fält som stöds finns i Integrationsguide för Checkout Sessions.En session som skapats med payment_method_id returnerar ingen checkout-URL, så hanteraren svarar med 400. Om du vill debitera en sparad betalningsmetod skapar du sessionen med SDK:t i stället.Svarsformat
Checkout sessions returnerar ett JSON-svar med checkout-URL:en:Customer Portal route-hanterare
Customer Portal route-hanteraren skapar en Customer Portal-session för kunden du anger och omdirigerar webbläsaren dit med ett 307-svar.Query-parametrar
Webhook route-hanterare
Webhook route-hanteraren verifierar varje request innan din kod körs:- Method: Endast POST requests stöds. Andra metoder returnerar 405.
- Signature Verification: Verifierar den råa request bodyn och headers
webhook-id,webhook-timestampochwebhook-signaturemedwebhookKeyenligt specifikationen Standard Webhooks. Returnerar 401 om verifieringen misslyckas. - Payload Validation: Validerar payloaden med Zod. Returnerar 400 för en ogiltig payload.
- Error Handling:
- 401: Ogiltig signatur
- 400: Ogiltig payload
- 500: Internt fel under verifieringen
- Event Routing: Anropar
onPayloadför varje händelse, därefter hanteraren för händelsetypen, och returnerar 200.