@dodopayments/remix menyediakan tiga request handler untuk aplikasi Remix Anda. Checkout mengembalikan URL checkout, CustomerPortal mengarahkan customer ke Customer Portal, dan Webhooks memverifikasi event webhook serta meneruskannya ke kode Anda. Setiap handler menerima Request dan mengembalikan Response, sehingga Anda memanggilnya dari loader atau action milik sebuah route.
Checkout Handler
Buat URL checkout dari aplikasi Remix Anda.
Customer Portal
Biarkan customer mengelola subscription dan detail mereka.
Webhooks
Terima dan verifikasi event webhook Dodo Payments.
Instalasi
1
Install the Package
Jalankan command ini di root project Anda:Package ini mencantumkan Remix 2 (
remix 2.16.8 atau yang lebih baru) dan zod 3.25 atau yang lebih baru sebagai peer dependencies.2
Set Up Environment Variables
Buat file Buat API key di Developer → API Keys. Tambahkan endpoint webhook Anda di Developer → Webhooks dan salin signing secret-nya ke
.env di root project Anda:DODO_PAYMENTS_WEBHOOK_KEY. DODO_PAYMENTS_RETURN_URL adalah tempat customer diarahkan setelah checkout. Jika Anda tidak meneruskan environment, handler akan menggunakan live_mode.Contoh Route Handler
Contoh-contoh ini adalah Remix resource routes, yang mengekspor
loader untuk request GET atau action untuk request POST dan tidak memiliki component. Dengan flat file routes, app/routes/api.checkout.tsx menangani /api/checkout.- Checkout Handler
- Customer Portal Handler
- Webhook Handler
Gunakan handler ini untuk menambahkan checkout Dodo Payments ke aplikasi Remix Anda.
loader menangani checkout statis. action menangani checkout dinamis di sini. Untuk menangani checkout sessions, alur yang direkomendasikan, kembalikan checkoutSessionHandler(request) dari action.action mengembalikan checkoutSessionHandler(request).Checkout Route Handler
Checkout handler mendukung ketiga cara menerima pembayaran dengan Dodo Payments:- Static Payment Links: URL yang dapat dibagikan untuk menerima pembayaran tanpa code.
- Dynamic Payment Links: Payment links yang Anda buat dengan detail khusus. Link ini menggunakan endpoint yang deprecated.
- Checkout Sessions: Hosted checkout dengan product cart, detail customer, dan opsi customization. Ini adalah alur yang direkomendasikan.
Checkout menerima opsi berikut:
Static Checkout (GET)
Static Checkout (GET)
Query Parameters yang Didukung
string
wajib
Identifier product, misalnya
?productId=pdt_nZuwz45WAs64n3l07zpQR.integer
default:"1"
Jumlah product.
string
Nama lengkap customer. Diabaikan jika
firstName atau lastName diberikan.string
Nama depan customer.
string
Nama belakang customer.
string
Alamat email customer.
string
Negara customer, sebagai code ISO 3166-1 alpha-2.
string
Baris alamat customer.
string
Kota customer.
string
Provinsi atau negara bagian customer.
string
ZIP atau kode pos customer.
boolean
Atur ke
true untuk menonaktifkan field nama lengkap.boolean
Atur ke
true untuk menonaktifkan field nama depan.boolean
Atur ke
true untuk menonaktifkan field nama belakang.boolean
Atur ke
true untuk menonaktifkan field email.boolean
Atur ke
true untuk menonaktifkan field negara.boolean
Atur ke
true untuk menonaktifkan field baris alamat.boolean
Atur ke
true untuk menonaktifkan field kota.boolean
Atur ke
true untuk menonaktifkan field provinsi.boolean
Atur ke
true untuk menonaktifkan field ZIP code.string
Currency pembayaran, misalnya
USD.boolean
default:"true"
Tampilkan atau sembunyikan currency selector.
number
Menetapkan jumlah yang ditagihkan, dalam unit utama currency, misalnya
12.5 untuk $12.50. Hanya berfungsi dengan product Pay What You Want dan diabaikan jika nilainya di bawah harga minimum product.boolean
default:"true"
Tampilkan atau sembunyikan bagian diskon.
string
Query parameter apa pun yang diawali
metadata_ diteruskan sebagai metadata.returnUrl dari config-nya ke link sebagai redirect_url.Format Response
Checkout statis mengembalikan response JSON dengan URL checkout. Dalam test mode, URL menggunakantest.checkout.dodopayments.com.Dynamic Checkout (POST)
Dynamic Checkout (POST)
- Kirim parameter sebagai JSON body dalam request POST.
- Mendukung pembayaran one-time dan recurring.
billingdancustomerwajib diisi.- Untuk setiap body field yang didukung, lihat:
Format Response
Checkout dinamis mengembalikan response JSON dengan URL checkout:Checkout Sessions (POST)
Checkout Sessions (POST)
Checkout sessions membuat hosted checkout untuk pembelian one-time dan subscription, dengan kontrol penuh atas customization.
product_cart adalah satu-satunya field wajib. Jika body tidak memiliki return_url, handler menggunakan returnUrl dari config-nya.Untuk detail selengkapnya dan setiap field yang didukung, lihat Checkout Sessions Integration Guide.Session yang dibuat dengan payment_method_id tidak mengembalikan URL checkout, sehingga handler merespons dengan 400. Untuk menagih payment method yang tersimpan, buat session menggunakan SDK.Format Response
Checkout sessions mengembalikan response JSON dengan URL checkout:Customer Portal Route Handler
Customer Portal route handler membuat Customer Portal session untuk customer yang Anda teruskan dan mengarahkan browser ke session tersebut dengan response 307.Query Parameters
string
wajib
Customer ID untuk portal session, misalnya
?customer_id=cus_123.boolean
Jika diatur ke
true, Dodo Payments juga mengirimkan link portal melalui email kepada customer.Webhook Route Handler
Webhook route handler memverifikasi setiap request sebelum menjalankan kode Anda:- Method: Hanya request POST yang didukung. Method lain mengembalikan 405.
- Signature Verification: Memverifikasi raw request body serta header
webhook-id,webhook-timestamp, danwebhook-signaturedenganwebhookKey, sesuai spesifikasi Standard Webhooks. Mengembalikan 401 jika verifikasi gagal. - Payload Validation: Memvalidasi payload dengan Zod. Mengembalikan 400 untuk payload yang tidak valid.
- Error Handling:
- 401: Signature tidak valid
- 400: Payload tidak valid
- 500: Error internal selama verifikasi
- Event Routing: Memanggil
onPayloaduntuk setiap event, kemudian handler untuk tipe event tersebut, dan mengembalikan 200.