产品和价格
产品和价格是 PaymentKit 目录中的基本要素。产品代表你销售的商品(例如,软件订阅、实体商品或积分包),而价格则决定了该产品的收费金额和频率。一个产品可以有多个价格,从而实现灵活的计费模式(例如,按月订阅与按年订阅)。
本指南将引导你使用 PaymentKit SDK 管理产品及其关联价格。有关所有可用 API 方法和参数的完整列表,请参阅 产品 API 参考 和 价格 API 参考。
首先,我们来直观地了解一下产品和价格之间的关系。
管理产品#
payment.products 对象提供了创建、检索、更新和管理系统中产品的方法。
创建产品#
如需创建新产品,请使用 payment.products.create 方法。你需要提供名称、类型和可选的描述。
参数
名称 | 类型 | 描述 |
|---|---|---|
|
| 必填。 产品名称,会向客户显示。 |
|
| 产品的可选描述。 |
|
| 必填。 产品类型。可以是 |
|
| 产品当前是否可供购买。默认为 |
|
| 一组键值对,用于存储有关该对象的附加信息。 |
示例:创建服务类产品
const product = await payment.products.create({
name: 'Test Product',
description: 'Product description',
type: 'service'
});
console.log(product);响应示例
{
"id": "prod_1C3a5E7b9D1f3G5h7I9j1K3m",
"active": true,
"livemode": false,
"locked": false,
"type": "service",
"name": "Test Product",
"description": "Product description",
"images": [],
"features": [],
"metadata": {},
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:00:00.000Z"
}列出产品#
如需检索产品列表,请使用 payment.products.list 方法。你可以筛选和分页显示结果。
参数
名称 | 类型 | 描述 |
|---|---|---|
|
| (可选)设为 |
|
| (可选)按名称筛选产品。 |
|
| (可选)用于分页的页码。默认为 |
|
| (可选)每页的项目数。默认为 |
|
| (可选)排序顺序(例如 |
示例:列出有效的产品
const products = await payment.products.list({
active: true,
order: 'name:ASC',
});
console.log(products);响应示例
{
"count": 1,
"list": [
{
"id": "prod_1C3a5E7b9D1f3G5h7I9j1K3m",
"active": true,
"livemode": false,
"type": "service",
"name": "Test Product",
"description": "Product description",
"created_at": "2023-10-27T10:00:00.000Z",
"updated_at": "2023-10-27T10:00:00.000Z"
}
]
}管理价格#
拥有产品后,你可以使用 payment.prices 对象为其创建一个或多个价格。
创建价格#
价格可以是一次性购买,也可以是周期性订阅。对于周期性价格,你必须指定计费周期。
参数
名称 | 类型 | 描述 |
|---|---|---|
|
| 必填。 此价格所属产品的 ID。 |
|
| 必填。 定价类型。可以是 |
|
| 必填。 价格金额,为字符串格式。 |
|
| 必填。 此价格的货币 ID。 |
|
| 该价格当前是否可供购买。默认为 |
|
| 当 |
|
| 此价格的总可用数量。 |
|
| 单个订单中客户可购买的最大数量。 |
recurring 对象
名称 | 类型 | 描述 |
|---|---|---|
|
| 必填。 计费频率。可以是 |
|
| 必填。 订阅计费之间的间隔数(例如, |
|
| 用量类型。可以是 |
示例:创建周期性月度价格
const price = await payment.prices.create({
product_id: 'prod_1C3a5E7b9D1f3G5h7I9j1K3m', // 来自先前创建的产品
type: 'recurring',
unit_amount: '19.99',
currency_id: 'pc_A1b2C3d4E5f6G7h8', // 替换为有效的货币 ID
recurring: {
interval: 'month',
interval_count: 1,
usage_type: 'licensed'
}
});
console.log(price);响应示例
{
"id": "price_2D4b6F8c0E2g4H6i8J0k2L4n",
"product_id": "prod_1C3a5E7b9D1f3G5h7I9j1K3m",
"active": true,
"livemode": false,
"type": "recurring",
"billing_scheme": "per_unit",
"unit_amount": "19.99",
"currency_id": "pc_A1b2C3d4E5f6G7h8",
"recurring": {
"interval": "month",
"interval_count": 1,
"usage_type": "licensed"
},
"created_at": "2023-10-27T10:05:00.000Z",
"updated_at": "2023-10-27T10:05:00.000Z"
}管理价格库存#
对于库存有限的产品,你可以使用 inventory 方法调整价格的可用数量。这对于管理供应有限的商品很有用。
参数
名称 | 类型 | 描述 |
|---|---|---|
|
| 必填。 要更新的价格的 ID。 |
|
| 必填。 用于增加或减少库存的数量。 |
|
| 必填。 要执行的操作。必须是 |
示例:增加价格的库存
const priceId = 'price_2D4b6F8c0E2g4H6i8J0k2L4n';
const updatedPrice = await payment.prices.inventory(priceId, {
quantity: 100,
action: 'increment'
});
console.log(`新的可用数量: ${updatedPrice.quantity_available}`);响应示例
{
"id": "price_2D4b6F8c0E2g4H6i8J0k2L4n",
"quantity_available": 100,
"quantity_sold": 0,
// ... 其他价格字段
}现在你已了解如何创建和管理产品与价格,可以开始销售它们了。下一步是为你的客户创建结账体验。请在 结账会话指南 中了解如何操作。