インボイス API を使用すると、インボイスの作成、管理、確定ができます。この API は、1 回限りの支払い、定期的なサブスクリプション、クレジットベースの請求など、さまざまな請求シナリオを処理するための包括的な機能を提供します。詳細なインボイス情報の取得、割引の適用、ステーキング操作の管理、履歴レコードの検索が可能です。
関連機能の詳細については、サブスクリプション および クレジットベースの請求 を参照してください。
インボイスの取得
既存のインボイスの詳細を取得します。このメソッドは、品目、適用された割引、関連するクレジット付与、支払い情報を含む包括的なインボイスオブジェクトを返します。
パラメータ
- id
string(required) — 取得するインボイスの一意の識別子。
戻り値
- Invoice
object— 詳細が展開された Invoice オブジェクト。完全な構造については、TInvoiceExpanded と以下の追加プロパティを参照してください。- discountDetails
array— インボイスに適用された割引の詳細。- coupon
object— 割引に関連付けられたクーポン。 - promotionCode
object— 割引を適用するために使用されたプロモーションコード。
- coupon
- relatedInvoice
object— 関連するインボイスに関する情報(例:クレジットノートの場合など)。 - relatedCreditGrants
array— このインボイスの支払い結果として作成されたクレジット付与のリスト。 - paymentLink
object— このインボイスのチェックアウトセッションを作成するために使用された支払いリンク。 - checkoutSession
object— このインボイスに関連付けられたチェックアウトセッション。
- discountDetails
インボイスの取得
import payment from '@blocklet/payment-js';
async function getInvoice(invoiceId) {
try {
const invoice = await payment.invoices.retrieve(invoiceId);
console.log('Retrieved Invoice:', invoice.id);
console.log('Discount Details:', invoice.discountDetails);
console.log('Related Credit Grants:', invoice.relatedCreditGrants);
} catch (error) {
console.error('Error retrieving invoice:', error.message);
}
}
// 使用例:
getInvoice('inv_xxxxxxxxxxxxxx');インボイスの一覧表示
インボイスのページ分割されたリストを返します。ステータス、顧客、サブスクリプションなどのさまざまな基準に基づいてリストをフィルタリングできます。
パラメータ
- status
string— フィルタリングするインボイスのステータスをカンマ区切りの文字列で指定します(例:paid,open)。 - customer_id
string— 特定の顧客 ID でインボイスをフィルタリングします。 - customer_did
string— 顧客の DID でインボイスをフィルタリングします。 - subscription_id
string— 特定のサブスクリプション ID でインボイスをフィルタリングします。 - currency_id
string— 特定の通貨 ID でインボイスをフィルタリングします。 - ignore_zero
boolean(default:false) — true の場合、小計がゼロのインボイスは除外されます。 - include_staking
boolean(default:false) — true の場合、ステーキング関連のインボイスが結果に含まれます。 - include_return_staking
boolean(default:false) — true の場合、返却されたステークに関連するインボイスが含まれます。 - include_overdraft_protection
boolean(default:true) — true の場合、ステークの当座貸越保護のためのインボイスが含まれます。 - include_recovered_from
boolean(default:false) — true の場合、リカバリーチェーン内の以前のサブスクリプションからのインボイスが含まれます。 - metadata.{key}
string— カスタムメタデータフィールドでフィルタリングします。{key} をメタデータキーに置き換えてください。 - page
number(default:1) — ページネーションのページ番号。 - pageSize
number(default:20) — 1ページあたりに返すアイテム数。
戻り値
- PaginatedInvoices
object— インボイスのリストとページネーション情報を含むオブジェクト。- list
array—Invoiceオブジェクトの配列。 - count
number— フィルタ条件に一致するインボイスの総数。 - paging
object— ページネーションの詳細。- page
number— 現在のページ番号。 - pageSize
number— 1ページあたりのアイテム数。
- page
- list
インボイスの一覧表示
import payment from '@blocklet/payment-js';
async function listPaidInvoices() {
try {
const invoices = await payment.invoices.list({
status: 'paid',
customer_id: 'cus_xxxxxxxxxxxxxx',
ignore_zero: true,
pageSize: 10,
});
console.log(`Found ${invoices.count} paid invoices.`);
invoices.list.forEach(invoice => {
console.log(`- Invoice ID: ${invoice.id}, Amount: ${invoice.total}`);
});
} catch (error) {
console.error('Error listing invoices:', error.message);
}
}
listPaidInvoices();インボイスの検索
インボイス番号、顧客詳細、品目説明などのさまざまなフィールドにわたって、クエリ文字列に一致するインボイスを検索します。
パラメータ
- q
string(required) — 検索クエリ文字列。 - page
number(default:1) — ページネーションのページ番号。 - pageSize
number(default:20) — 1ページあたりに返すアイテム数。
戻り値
- PaginatedInvoices
object— インボイスのリストとページネーション情報を含むオブジェクト。- list
array—Invoiceオブジェクトの配列。 - count
number— 検索条件に一致するインボイスの総数。 - paging
object— ページネーションの詳細。- page
number— 現在のページ番号。 - pageSize
number— 1ページあたりのアイテム数。
- page
- list
インボイスの検索
import payment from '@blocklet/payment-js';
async function searchForInvoice(query) {
try {
const results = await payment.invoices.search({ q: query, pageSize: 5 });
console.log(`Found ${results.count} results for query: '${query}'`);
results.list.forEach(invoice => {
console.log(`- Invoice ID: ${invoice.id}, Customer: ${invoice.customer.did}`);
});
} catch (error) {
console.error('Error searching invoices:', error.message);
}
}
// 使用例:
searchForInvoice('Premium Plan');インボイスの更新
metadata のキーと値のペアを設定して、指定されたインボイスを更新します。他のインボイスプロパティは通常更新できません。
パラメータ
- id
string(required) — 更新するインボイスの一意の識別子。 - metadata
object— インボイスオブジェクトと一緒に保存するキーと値のペアのセット。キーは最大40文字、値は最大500文字です。
戻り値
- Invoice
object— 更新された Invoice オブジェクト。
インボイスメタデータの更新
import payment from '@blocklet/payment-js';
async function updateInvoiceMetadata(invoiceId) {
try {
const updatedInvoice = await payment.invoices.update(invoiceId, {
metadata: { order_id: 'order_12345' },
});
console.log('Invoice metadata updated:', updatedInvoice.metadata);
} catch (error) {
console.error('Error updating invoice:', error.message);
}
}
// 使用例:
updateInvoiceMetadata('inv_xxxxxxxxxxxxxx');インボイスの無効化
インボイスを無効にします。この操作は、open または uncollectible のインボイスに対してのみ可能です。一度無効にされたインボイスは支払うことができません。
パラメータ
- id
string(required) — 無効にするインボイスの一意の識別子。
戻り値
- Invoice
object— 無効化された Invoice オブジェクト。ステータスは void に設定されます。
インボイスの無効化
import payment from '@blocklet/payment-js';
async function voidInvoice(invoiceId) {
try {
const voidedInvoice = await payment.invoices.void(invoiceId);
console.log(`Invoice ${voidedInvoice.id} has been voided. Status: ${voidedInvoice.status}`);
} catch (error) {
console.error('Error voiding invoice:', error.message);
}
}
// 使用例:
voidInvoice('inv_xxxxxxxxxxxxxx');ステーク返却情報の取得
stake または stake_overdraft_protection インボイスに対して返却可能なステークの額を取得します。
パラメータ
- id
string(required) — ステーキングインボイスの識別子。
戻り値
- StakeInfo
object— 残りのステークに関する詳細を含むオブジェクト。
返却可能ステークの取得
import payment from '@blocklet/payment-js';
async function getStakeInfo(invoiceId) {
try {
const stakeInfo = await payment.invoices.getReturnStake(invoiceId);
console.log('Returnable Stake Information:', stakeInfo);
} catch (error) {
console.error('Error getting stake info:', error.message);
}
}
// 使用例:
getStakeInfo('inv_stake_xxxxxx');ステークの返却
支払い済みの stake または stake_overdraft_protection インボイスに関連付けられたステークの返却プロセスを開始します。
パラメータ
- id
string(required) — ステーキングインボイスの識別子。
戻り値
- ReturnResult
object— 操作の結果を示すオブジェクト。- success
boolean— ステーク返却プロセスが正常に開始されたかどうかを示します。 - subscriptionId
string— 関連するサブスクリプションの ID。 - error
string— 操作が失敗した場合のエラーメッセージ。
- success
ステークの返却
import payment from '@blocklet/payment-js';
async function returnStake(invoiceId) {
try {
const result = await payment.invoices.returnStake(invoiceId);
if (result.success) {
console.log(`Stake return initiated for subscription: ${result.subscriptionId}`);
} else {
console.error('Failed to return stake:', result.error);
}
} catch (error) {
console.error('Error returning stake:', error.message);
}
}
// 使用例:
returnStake('inv_stake_xxxxxx');