跳到主要內容

CustomerInvoiceList

CustomerInvoiceList 元件旨在呈現客戶的發票歷史記錄。它會從支付服務中擷取並顯示發票資料,提供兩種不同的版面配置:一種是簡單的、按日期分組的無限滾動列表,另一種是詳細的、分頁的表格。此元件必須在 PaymentProvider 中使用才能正常運作。

Props

Prop類型說明預設值
customer_idstring要顯示其發票的客戶 ID。''
subscription_idstring按特定訂閱 ID 篩選發票。''
currency_idstring按特定貨幣 ID 篩選發票。''
include_stakingboolean如果為 true,則在列表中包含與質押相關的發票。false
include_return_stakingboolean如果為 true,則包含返還質押的發票。false
include_recovered_fromboolean如果為 true,則包含從先前餘額中恢復的發票。false
statusstring要顯示的發票狀態的逗號分隔字串(例如:'open,paid,uncollectible')。'open,paid,uncollectible'
pageSizenumber每頁要擷取的發票數量。10
targetstring發票連結的目標屬性(例如:'_self''_blank')。'_self'
actionstring為某些發票定義行動呼籲。設定為 'pay' 以顯示未付款發票的支付按鈕。''
type'list' | 'table'發票列表的顯示模式。'list'
onTableDataChangeFunction當發票資料變更時觸發的回呼函式。() => {}
relatedSubscriptionboolean在表格模式下,如果為 true,則顯示一個包含相關訂閱連結的欄位。false

基本用法(列表視圖)

預設視圖 (type="list") 會呈現一個按日期分組的簡單發票列表,並具有無限滾動機制以載入更多項目。

CustomerInvoiceListPage.tsx

tsx
import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';

function InvoiceHistoryPage() {
  // 假設 customerId 可用,例如,來自會話或 props
  const customerId = 'cus_xxxxxxxxxxxxxx';

  return (
    <PaymentProvider>
      <CustomerInvoiceList customer_id={customerId} />
    </PaymentProvider>
  );
}

表格視圖

若要進行更詳細和結構化的呈現,您可以設定 type="table"。此模式會在具有可排序欄位的分頁表格中顯示發票。

CustomerInvoiceTablePage.tsx

tsx
import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';

function InvoiceHistoryTable() {
  const customerId = 'cus_xxxxxxxxxxxxxx';

  return (
    <PaymentProvider>
      <CustomerInvoiceList
        customer_id={customerId}
        type="table"
        relatedSubscription={true} // 顯示相關訂閱的欄位
        pageSize={5}
      />
    </PaymentProvider>
  );
}

在此範例中,啟用了 relatedSubscription prop 來新增一個直接連結到每張發票相關訂閱的欄位,這對於基於訂閱的服務非常有用。

篩選發票

您可以使用各種 props 來篩選顯示的發票。例如,若要僅顯示與質押相關的已付款發票:

FilteredInvoiceListPage.tsx

tsx
import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';

function FilteredInvoiceList() {
  const customerId = 'cus_xxxxxxxxxxxxxx';

  return (
    <PaymentProvider>
      <CustomerInvoiceList
        customer_id={customerId}
        type="table"
        status="paid" // 僅顯示已付款發票
        include_staking={true} // 同時包含質押交易
      />
    </PaymentProvider>
  );
}

為未付款發票啟用支付功能

透過將 action prop 設定為 'pay',您可以為任何狀態為 openuncollectible 的發票新增一個「支付」按鈕。點擊此按鈕將使用來自 PaymentProviderconnect 實例啟動支付流程。

PayableInvoiceListPage.tsx

tsx
import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';

function PayableInvoiceList() {
  const customerId = 'cus_xxxxxxxxxxxxxx';

  return (
    <PaymentProvider>
      <CustomerInvoiceList
        customer_id={customerId}
        status="open,uncollectible" // 僅顯示需要支付的發票
        action="pay" // 新增「支付」按鈕
      />
    </PaymentProvider>
  );
}