Skip to main content
@dodopayments/remix 包为你的 Remix 应用提供三个请求处理程序。Checkout 返回 checkout URL,CustomerPortal 将客户发送到 Customer Portal,而 Webhooks 验证 webhook 事件并将其路由到你的代码。每个处理程序都接收一个 Request 并返回一个 Response,因此你可以从路由的 loader 或 action 中调用它。

Checkout Handler

从 Remix 应用创建 checkout URL。

Customer Portal

让客户管理其订阅和详细信息。

Webhooks

接收并验证 Dodo Payments webhook 事件。

安装

1

Install the Package

在项目根目录运行此命令:
该包将 Remix 2(remix 2.16.8 或更高版本)和 zod 3.25 或更高版本列为 peer dependencies。
2

Set Up Environment Variables

在项目根目录创建一个 .env 文件:
在 Developer → API Keys 下创建 API key。在 Developer → Webhooks 下添加 webhook endpoint,并将其 signing secret 复制到 DODO_PAYMENTS_WEBHOOK_KEY。DODO_PAYMENTS_RETURN_URL 是客户完成 checkout 后到达的页面。如果不传入 environment,处理程序将使用 live_mode。
切勿将 .env 文件或 secrets 提交到版本控制系统。

Route Handler 示例

这些示例是 Remix resource routes,它们为 GET 请求导出一个 loader,或为 POST 请求导出一个 action,且不包含组件。对于 flat file routes,app/routes/api.checkout.tsx 提供 /api/checkout。
使用此处理程序将 Dodo Payments checkout 添加到 Remix 应用。loader 提供 static checkout。action 在此提供 dynamic checkout。要提供 checkout sessions(推荐流程),请改为从 action 返回 checkoutSessionHandler(request)。
当 action 返回 checkoutSessionHandler(request) 时,checkout session 请求即可正常工作。

Checkout Route Handler

checkout 处理程序支持使用 Dodo Payments 收款的三种方式:
  • Static Payment Links: 可分享的 URL,无需代码即可收款。
  • Dynamic Payment Links: 使用自定义详细信息生成的 payment links。它们使用已弃用的 endpoints。
  • Checkout Sessions: 支持 product cart、客户详细信息和自定义选项的托管 checkout。这是推荐的流程。
Checkout 接收以下选项:

支持的 Query Parameters

string
必填
Product identifier,例如 ?productId=pdt_nZuwz45WAs64n3l07zpQR。
integer
默认值:"1"
产品数量。
string
客户的全名。如果提供了 firstName 或 lastName,则忽略此项。
string
客户的名字。
string
客户的姓氏。
string
客户的电子邮件地址。
string
客户的国家,以 ISO 3166-1 alpha-2 代码表示。
string
客户的地址行。
string
客户所在的城市。
string
客户所在的州或省。
string
客户的 ZIP 或邮政编码。
boolean
设置为 true 以禁用全名字段。
boolean
设置为 true 以禁用名字字段。
boolean
设置为 true 以禁用姓氏字段。
boolean
设置为 true 以禁用电子邮件字段。
boolean
设置为 true 以禁用国家字段。
boolean
设置为 true 以禁用地址行字段。
boolean
设置为 true 以禁用城市字段。
boolean
设置为 true 以禁用州字段。
boolean
设置为 true 以禁用 ZIP code 字段。
string
付款货币,例如 USD。
boolean
默认值:"true"
显示或隐藏货币选择器。
number
固定收取的金额,以主要货币单位表示,例如 12.5 表示 $12.50。仅适用于 Pay What You Want 产品;如果低于产品的最低价格,则会忽略该值。
boolean
默认值:"true"
显示或隐藏折扣部分。
string
任何以 metadata_ 开头的 query parameter 都会作为 metadata 传递。
处理程序会将其配置中的 returnUrl 作为 redirect_url 添加到链接中。
如果缺少 productId,处理程序将返回 400 响应。无效的 query parameters 和不存在的 product IDs 也会返回 400。

Response Format

Static checkout 返回包含 checkout URL 的 JSON 响应。在 test mode 下,URL 使用 test.checkout.dodopayments.com。
Dynamic checkout 代理已弃用的 POST /payments 和 POST /subscriptions endpoints。它会继续支持现有 integrations,但新 integrations 应使用 checkout sessions。

Response Format

Dynamic checkout 返回包含 checkout URL 的 JSON 响应:
Checkout sessions 为一次性购买和 subscriptions 创建 hosted checkout,并提供完整的自定义控制。product_cart 是唯一的必填字段。如果 body 中没有 return_url,处理程序将使用其配置中的 returnUrl。如需了解更多详细信息和所有支持的字段,请参阅 Checkout Sessions Integration Guide。使用 payment_method_id 创建的 session 不会返回 checkout URL,因此处理程序会返回 400。若要向已保存的 payment method 收款,请改用 SDK 创建 session。

Response Format

Checkout sessions 返回包含 checkout URL 的 JSON 响应:

Customer Portal Route Handler

Customer Portal route handler 为你传入的客户创建 Customer Portal session,并通过 307 响应将浏览器重定向到该 session。
处理程序不会检查调用者的身份。任何使用 customer ID 请求它的人都可以获得该客户的 portal。使用你自己的 authentication 保护此路由,并且只传入已登录用户的 customer ID。

Query Parameters

string
必填
portal session 的 customer ID,例如 ?customer_id=cus_123。
boolean
如果设置为 true,Dodo Payments 还会通过电子邮件将 portal link 发送给客户。
如果缺少 customer_id,则返回 400;如果无法创建 portal session,则返回 500。

Webhook Route Handler

webhook route handler 在运行你的代码前验证每个请求:
  • Method: 仅支持 POST 请求。其他 methods 返回 405。
  • Signature Verification: 根据 Standard Webhooks specification,使用 webhookKey 验证 raw request body 以及 webhook-id、webhook-timestamp 和 webhook-signature headers。验证失败时返回 401。
  • Payload Validation: 使用 Zod 验证 payload。payload 无效时返回 400。
  • Error Handling:
    • 401:签名无效
    • 400:payload 无效
    • 500:验证期间发生内部错误
  • Event Routing: 对每个事件调用 onPayload,然后调用该事件类型对应的处理程序,并返回 200。
该 adaptor 不会捕获你的 handlers 抛出的 errors。这些 errors 会传播到 Remix,并导致请求失败。

支持的 Webhook Event Handlers

每个处理程序都会接收其事件类型对应的已验证 payload:
有关每个事件含义的说明,请参阅 Webhook Event Guide。

LLM 提示词

将此提示词复制到 AI coding assistant 中,让它将 adaptor 添加到你的项目中。若还希望为 agent 提供 Dodo Payments 文档和 skills,请安装 Agent Plugin。
最后修改于 2026年9月26日