介绍
元数据可让您在 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(仅限产品)
如需在不编写代码的情况下向产品添加元数据,请在 产品 中打开该产品,并在元数据部分添加键值对。您可以在创建或编辑产品时执行此操作。
获取元数据
获取对象时,API 响应会包含元数据:获取结账会话(
GET /checkouts/{id})不会返回 metadata。会话状态响应仅包含 id、created_at、payment_id、payment_status、customer_email 和 customer_name。要读取创建会话时附加的元数据,请使用返回的 payment_id 获取生成的支付。搜索和筛选
API 无法按元数据进行搜索。要通过元数据值查找对象:- 将重要标识符存储在元数据中。
- 通过 API 列出或获取对象。
- 在应用程序代码中过滤结果。
最佳实践
遵循以下指南,让元数据发挥作用。应该:
- 对元数据键使用一致的命名约定。
- 在内部记录元数据架构。
- 保持值简短且有意义。
- 仅将元数据用于静态数据。
- 考虑使用标明源系统的前缀,例如
crm_id或inventory_sku。
不应该:
- 在元数据中存储敏感数据。
- 将元数据用于经常变化的值。
- 依赖元数据实现关键业务逻辑。
- 重复存储对象中已有的信息。
- 在元数据键中使用特殊字符。