訂閱項目代表客戶訂閱的特定產品和價格。它們是訂閱的組成部分,對於管理週期性計費至關重要,尤其是對於計量用量的方案。
此 API 允許您建立、擷取、更新和刪除訂閱項目。關鍵的是,它還提供了回報計量計費用量的方法。
訂閱項目物件
訂閱項目物件包含訂閱中特定項目的詳細資訊。
TSubscriptionItemExpanded 物件
interface TSubscriptionItemExpanded {
id: string; // 訂閱項目的唯一識別碼
subscription_id: string; // 此項目所屬訂閱的 ID
price_id: string; // 與此項目關聯的價格 ID
quantity: number; // 價格的數量
billing_thresholds: object | null; // 基於用量的計費閾值
metadata: object | null; // 一組用於附加資訊的鍵值對
created_at: number; // 建立時間戳
updated_at: number; // 最後更新時間戳
price: TPrice; // 展開的 Price 物件
}建立訂閱項目
將新項目(產品和價格)新增至現有訂閱中。
建立訂閱項目
const subscriptionItem = await payment.subscriptionItems.create({
subscription_id: 'sub_xxxxxxxxxxxxxx',
price_id: 'price_xxxxxxxxxxxxxx',
quantity: 1,
});參數
| Name | Type | Description |
|---|---|---|
subscription_id | string | 必填。 要新增此項目的訂閱 ID。 |
price_id | string | 必填。 客戶要訂閱的價格 ID。 |
quantity | number | 價格的數量。預設為 1。 |
billing_thresholds | object | 此項目的基於用量的計費閾值。 |
metadata | object | 一組您可以附加到物件上的鍵值對。這對於以結構化格式儲存有關物件的附加資訊很有用。 |
傳回值
傳回新建立的 TSubscriptionItem 物件。
擷取訂閱項目
擷取現有訂閱項目的詳細資訊。
擷取訂閱項目
const subscriptionItem = await payment.subscriptionItems.retrieve(
'si_xxxxxxxxxxxxxx' // 訂閱項目 ID
);參數
| Name | Type | Description |
|---|---|---|
id | string | 必填。 要擷取的訂閱項目的唯一識別碼。 |
傳回值
如果提供了有效的 ID,則傳回 TSubscriptionItemExpanded 物件。
更新訂閱項目
更新訂閱項目的屬性。您可以更新 price_id、quantity 和 metadata。
更新訂閱項目
const subscriptionItem = await payment.subscriptionItems.update(
'si_xxxxxxxxxxxxxx', // 訂閱項目 ID
{
quantity: 2,
}
);參數
| Name | Type | Description |
|---|---|---|
id | string | 必填。 要更新的訂閱項目 ID。 |
updates | object | 包含要更新欄位的物件。 |
可更新欄位
| Name | Type | Description |
|---|---|---|
price_id | string | 此項目的新價格 ID。 |
quantity | number | 此項目的新數量。 |
billing_thresholds | object | 此項目的基於用量的計費閾值。 |
metadata | object | 要更新的一組鍵值對。 |
傳回值
傳回更新後的 TSubscriptionItem 物件。
列出訂閱項目
傳回指定訂閱的訂閱項目列表。
列出訂閱項目
const subscriptionItems = await payment.subscriptionItems.list({
subscription_id: 'sub_xxxxxxxxxxxxxx',
});參數
| Name | Type | Description |
|---|---|---|
subscription_id | string | 必填。 您要列出其項目的訂閱 ID。 |
page | number | 分頁的頁碼。預設為 1。 |
pageSize | number | 每頁傳回的項目數。預設為 20。 |
傳回值
TSubscriptionItemExpanded 物件的分頁列表。
刪除訂閱項目
從訂閱中刪除一個項目。此為永久性操作。
刪除訂閱項目
const deletedItem = await payment.subscriptionItems.del(
'si_xxxxxxxxxxxxxx', // 訂閱項目 ID
{
clear_usage: true, // 可選
}
);參數
| Name | Type | Description |
|---|---|---|
id | string | 必填。 要刪除的訂閱項目 ID。 |
body.clear_usage | boolean | 如果為 true,計量價格的所有用量記錄將被清除。預設為 false。 |
傳回值
傳回已刪除的 TSubscriptionItem 物件。
建立用量記錄
對於 metered(計量)價格,您必須回報用量才能正確地向客戶收費。此方法會為指定的訂閱項目建立一筆用量記錄。
建立用量記錄
const usageRecord = await payment.subscriptionItems.createUsageRecord({
subscription_item_id: 'si_xxxxxxxxxxxxxx',
quantity: 100,
action: 'increment',
timestamp: Math.floor(Date.now() / 1000),
});參數
| Name | Type | Description |
|---|---|---|
subscription_item_id | string | 必填。 要回報用量的訂閱項目 ID。 |
quantity | number | 必填。 要回報的用量數量。必須為正整數。 |
action | string | 決定如何應用回報的 quantity。可以是 increment(增加到現有用量)或 set(在指定時間戳覆寫用量)。預設為 increment。 |
timestamp | number | 用量事件的 UNIX 時間戳。必須在當前計費週期內。預設為當前時間。 |
傳回值
傳回已建立的 TUsageRecord 物件。
列出用量記錄摘要
對於指定的訂閱項目,傳回按計費週期(發票)匯總的用量記錄摘要列表。
列出用量記錄摘要
const summaries = await payment.subscriptionItems.listUsageRecordSummaries({
subscription_item_id: 'si_xxxxxxxxxxxxxx',
});參數
| Name | Type | Description |
|---|---|---|
subscription_item_id | string | 必填。 訂閱項目的 ID。 |
page | number | 分頁的頁碼。預設為 1。 |
pageSize | number | 每頁傳回的項目數。預設為 20。 |
傳回值
TUsageRecordSummary 物件的分頁列表。
TUsageRecordSummary 物件
interface TUsageRecordSummary {
invoice_id: string; // 此週期的發票 ID
subscription_item_id: string;
total_usage: number; // 此週期的總用量
period: {
start: number; // 計費週期開始時間(UNIX 時間戳)
end: number; // 計費週期結束時間(UNIX 時間戳)
};
}列出用量記錄
擷取訂閱項目的個別用量記錄列表。這提供了所有已回報用量的詳細、非匯總視圖。
列出用量記錄
const records = await payment.subscriptionItems.listUsageRecords({
subscription_item_id: 'si_xxxxxxxxxxxxxx',
});參數
| Name | Type | Description |
|---|---|---|
subscription_item_id | string | 必填。 訂閱項目的 ID。 |
start | number | 用於篩選此時間之後用量記錄的 UNIX 時間戳。 |
end | number | 用於篩選此時間之前或此時間點用量記錄的 UNIX 時間戳。 |
page | number | 分頁的頁碼。預設為 1。 |
pageSize | number | 每頁傳回的項目數。預設為 20。 |
傳回值
TUsageRecord 物件的分頁列表。
TUsageRecord 物件
interface TUsageRecord {
id: string;
subscription_item_id: string;
quantity: number;
timestamp: number; // 記錄的 UNIX 時間戳
billed: boolean; // 此用量是否已計費
}