Skip to main content

介绍

元数据可让您在 Dodo Payments 对象上存储自己的键值数据,例如您系统中的订单 ID 或 CRM 引用。您可以将元数据附加到大多数对象,包括支付、订阅、客户和产品。完整列表请参阅支持的对象。

概述

元数据遵循以下规则:
  • Metadata 键最长可达 40 个字符(通过 POST /events/ingest 摄取的 usage events 最长可达 100 个字符)。
  • Metadata 值可以是字符串、整数、数字或布尔值。字符串值最长可达 500 个字符。
  • 不接受对象、数组和 null 作为 metadata 值。
  • 每个对象最多可添加 50 个 metadata 键值对。超过此数量的请求将返回 MAXIMUM_KEYS_REACHED 错误代码。
  • API 无法按 metadata 进行搜索或筛选,但会在 API 响应和 webhooks 中返回 metadata。

使用场景

使用元数据来:
  • 存储外部 ID 或引用。
  • 添加内部备注。
  • 将 Dodo Payments 对象关联到您系统中的记录。
  • 对交易进行分类。
  • 为报告添加自定义属性。

添加元数据

通过 API 创建或更新对象时添加元数据。对于产品,您还可以在仪表板中添加元数据。

通过 API

在请求正文中传递一个 metadata 对象。以下示例使用 TypeScript SDK,并假定已初始化 client:

通过仪表板 UI(仅限产品)

如需在不编写代码的情况下向产品添加元数据,请在 产品 中打开该产品,并在元数据部分添加键值对。您可以在创建或编辑产品时执行此操作。
Dodo Payments 仪表板中的产品元数据部分
不使用 API 的团队成员可以使用仪表板管理产品元数据,例如产品类别。

获取元数据

获取对象时,API 响应会包含元数据:
获取结账会话(GET /checkouts/{id})不会返回 metadata。会话状态响应仅包含 id、created_at、payment_id、payment_status、customer_email 和 customer_name。要读取创建会话时附加的元数据,请使用返回的 payment_id 获取生成的支付。

搜索和筛选

API 无法按元数据进行搜索。要通过元数据值查找对象:
  1. 将重要标识符存储在元数据中。
  2. 通过 API 列出或获取对象。
  3. 在应用程序代码中过滤结果。

最佳实践

遵循以下指南,让元数据发挥作用。

应该:

  • 对元数据键使用一致的命名约定。
  • 在内部记录元数据架构。
  • 保持值简短且有意义。
  • 仅将元数据用于静态数据。
  • 考虑使用标明源系统的前缀,例如 crm_id 或 inventory_sku。

不应该:

  • 在元数据中存储敏感数据。
  • 将元数据用于经常变化的值。
  • 依赖元数据实现关键业务逻辑。
  • 重复存储对象中已有的信息。
  • 在元数据键中使用特殊字符。

支持的对象

以下对象支持元数据:

Webhooks 和元数据

Webhook payload 包含对象的元数据,因此您的 webhook handler 可以将事件与您自己的记录进行匹配:
最后修改于 2026年9月28日