@blocklet/payment-react 1.20.15 → 1.20.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/.aigne/doc-smith/config.yaml +7 -1
  2. package/.aigne/doc-smith/upload-cache.yaml +441 -0
  3. package/docs/components-business-auto-topup.ja.md +187 -0
  4. package/docs/components-business-auto-topup.zh-TW.md +187 -0
  5. package/docs/components-business-auto-topup.zh.md +187 -0
  6. package/docs/components-business-overdue-invoice-payment.ja.md +196 -0
  7. package/docs/components-business-overdue-invoice-payment.zh-TW.md +197 -0
  8. package/docs/components-business-overdue-invoice-payment.zh.md +197 -0
  9. package/docs/components-business-resume-subscription.ja.md +190 -0
  10. package/docs/components-business-resume-subscription.zh-TW.md +190 -0
  11. package/docs/components-business-resume-subscription.zh.md +190 -0
  12. package/docs/components-business.ja.md +21 -0
  13. package/docs/components-business.zh-TW.md +21 -0
  14. package/docs/components-business.zh.md +21 -0
  15. package/docs/components-checkout-checkout-donate.ja.md +259 -0
  16. package/docs/components-checkout-checkout-donate.zh-TW.md +259 -0
  17. package/docs/components-checkout-checkout-donate.zh.md +259 -0
  18. package/docs/components-checkout-checkout-form.ja.md +163 -0
  19. package/docs/components-checkout-checkout-form.zh-TW.md +163 -0
  20. package/docs/components-checkout-checkout-form.zh.md +163 -0
  21. package/docs/components-checkout-checkout-table.ja.md +148 -0
  22. package/docs/components-checkout-checkout-table.zh-TW.md +148 -0
  23. package/docs/components-checkout-checkout-table.zh.md +149 -0
  24. package/docs/components-checkout.ja.md +65 -0
  25. package/docs/components-checkout.zh-TW.md +65 -0
  26. package/docs/components-checkout.zh.md +65 -0
  27. package/docs/components-history-credit-grants-list.ja.md +73 -0
  28. package/docs/components-history-credit-grants-list.zh-TW.md +73 -0
  29. package/docs/components-history-credit-grants-list.zh.md +73 -0
  30. package/docs/components-history-credit-transactions-list.ja.md +106 -0
  31. package/docs/components-history-credit-transactions-list.zh-TW.md +106 -0
  32. package/docs/components-history-credit-transactions-list.zh.md +106 -0
  33. package/docs/components-history-invoice-list.ja.md +110 -0
  34. package/docs/components-history-invoice-list.zh-TW.md +110 -0
  35. package/docs/components-history-invoice-list.zh.md +110 -0
  36. package/docs/components-history-payment-list.ja.md +44 -0
  37. package/docs/components-history-payment-list.zh-TW.md +44 -0
  38. package/docs/components-history-payment-list.zh.md +44 -0
  39. package/docs/components-history.ja.md +67 -0
  40. package/docs/components-history.zh-TW.md +67 -0
  41. package/docs/components-history.zh.md +67 -0
  42. package/docs/components-ui-form-elements-address-form.ja.md +121 -0
  43. package/docs/components-ui-form-elements-address-form.zh-TW.md +121 -0
  44. package/docs/components-ui-form-elements-address-form.zh.md +121 -0
  45. package/docs/components-ui-form-elements-country-select.ja.md +126 -0
  46. package/docs/components-ui-form-elements-country-select.zh-TW.md +126 -0
  47. package/docs/components-ui-form-elements-country-select.zh.md +126 -0
  48. package/docs/components-ui-form-elements-currency-selector.ja.md +108 -0
  49. package/docs/components-ui-form-elements-currency-selector.zh-TW.md +108 -0
  50. package/docs/components-ui-form-elements-currency-selector.zh.md +108 -0
  51. package/docs/components-ui-form-elements-phone-input.ja.md +138 -0
  52. package/docs/components-ui-form-elements-phone-input.zh-TW.md +138 -0
  53. package/docs/components-ui-form-elements-phone-input.zh.md +139 -0
  54. package/docs/components-ui-form-elements.ja.md +91 -0
  55. package/docs/components-ui-form-elements.zh-TW.md +91 -0
  56. package/docs/components-ui-form-elements.zh.md +91 -0
  57. package/docs/components-ui-payment-summary.ja.md +109 -0
  58. package/docs/components-ui-payment-summary.zh-TW.md +109 -0
  59. package/docs/components-ui-payment-summary.zh.md +109 -0
  60. package/docs/components-ui-pricing-table.ja.md +140 -0
  61. package/docs/components-ui-pricing-table.zh-TW.md +140 -0
  62. package/docs/components-ui-pricing-table.zh.md +140 -0
  63. package/docs/components-ui.ja.md +71 -0
  64. package/docs/components-ui.zh-TW.md +71 -0
  65. package/docs/components-ui.zh.md +71 -0
  66. package/docs/components.ja.md +122 -0
  67. package/docs/components.zh-TW.md +122 -0
  68. package/docs/components.zh.md +122 -0
  69. package/docs/getting-started.ja.md +84 -0
  70. package/docs/getting-started.zh-TW.md +84 -0
  71. package/docs/getting-started.zh.md +84 -0
  72. package/docs/guides-theming.ja.md +213 -0
  73. package/docs/guides-theming.zh-TW.md +213 -0
  74. package/docs/guides-theming.zh.md +213 -0
  75. package/docs/guides-utilities.ja.md +197 -0
  76. package/docs/guides-utilities.zh-TW.md +197 -0
  77. package/docs/guides-utilities.zh.md +197 -0
  78. package/docs/guides.ja.md +18 -0
  79. package/docs/guides.zh-TW.md +18 -0
  80. package/docs/guides.zh.md +18 -0
  81. package/docs/hooks-use-mobile.ja.md +84 -0
  82. package/docs/hooks-use-mobile.zh-TW.md +84 -0
  83. package/docs/hooks-use-mobile.zh.md +84 -0
  84. package/docs/hooks-use-subscription.ja.md +111 -0
  85. package/docs/hooks-use-subscription.zh-TW.md +111 -0
  86. package/docs/hooks-use-subscription.zh.md +110 -0
  87. package/docs/hooks.ja.md +14 -0
  88. package/docs/hooks.zh-TW.md +14 -0
  89. package/docs/hooks.zh.md +14 -0
  90. package/docs/overview.ja.md +80 -0
  91. package/docs/overview.zh-TW.md +80 -0
  92. package/docs/overview.zh.md +80 -0
  93. package/docs/providers-donate-provider.ja.md +153 -0
  94. package/docs/providers-donate-provider.zh-TW.md +153 -0
  95. package/docs/providers-donate-provider.zh.md +153 -0
  96. package/docs/providers-payment-provider.ja.md +191 -0
  97. package/docs/providers-payment-provider.zh-TW.md +191 -0
  98. package/docs/providers-payment-provider.zh.md +191 -0
  99. package/docs/providers.ja.md +42 -0
  100. package/docs/providers.zh-TW.md +42 -0
  101. package/docs/providers.zh.md +42 -0
  102. package/es/locales/en.js +13 -3
  103. package/es/locales/zh.js +13 -3
  104. package/es/payment/product-item.js +123 -20
  105. package/es/payment/success.js +2 -2
  106. package/lib/locales/en.js +13 -3
  107. package/lib/locales/zh.js +13 -3
  108. package/lib/payment/product-item.js +136 -32
  109. package/lib/payment/success.js +2 -2
  110. package/package.json +5 -5
  111. package/src/locales/en.tsx +18 -3
  112. package/src/locales/zh.tsx +17 -3
  113. package/src/payment/product-item.tsx +140 -19
  114. package/src/payment/success.tsx +2 -2
@@ -0,0 +1,106 @@
1
+ # CreditTransactionsList
2
+
3
+ `CreditTransactionsList` 组件渲染了一个包含所有信用额度交易的详细分页表格,提供了信用额度使用和调整的清晰日志。它非常适合在客户门户或管理仪表板中使用,以跟踪信用额度的授予和消耗情况。
4
+
5
+ 该组件会自动处理数据获取、分页和格式化,提供了一种显示交易历史的简单方法。
6
+
7
+ ## 属性
8
+
9
+ | 属性 | 类型 | 描述 | 默认值 |
10
+ | --- | --- | --- | --- |
11
+ | `customer_id` | `string` | 要显示的交易记录所属客户的 ID。如果未提供,则默认为来自 `PaymentProvider` 上下文的当前登录用户的 DID。 | `session.user.did` |
12
+ | `subscription_id` | `string` | 将交易记录筛选到特定的订阅。 | `undefined` |
13
+ | `credit_grant_id` | `string` | 将交易记录筛选到特定的信用额度授予。 | `undefined` |
14
+ | `pageSize` | `number` | 每页显示的交易数量。 | `10` |
15
+ | `onTableDataChange` | `(data, prevData) => void` | 当表格数据被获取或更新时触发的回调函数。 | `() => {}` |
16
+ | `showAdminColumns` | `boolean` | 如果为 `true` 且用户是管理员,则会显示额外的列,例如 'Meter Event'。 | `false` |
17
+ | `showTimeFilter` | `boolean` | 如果为 `true`,则会显示一个日期范围选择器,以允许按日期筛选交易记录。 | `false` |
18
+ | `source` | `string` | 一个可选的源字符串,用于筛选交易记录。 | `''` |
19
+ | `mode` | `'dashboard' \| 'portal'` | 决定相关项目(如信用额度授予)的链接结构。对管理视图使用 `'dashboard'`,对面向客户的视图使用 `'portal'`。 | `'portal'` |
20
+
21
+ ## 客户门户的基本用法
22
+
23
+ 此示例展示了如何显示当前登录用户的信用额度交易历史。当 `customer_id` 被省略时,该组件会自动使用来自 `PaymentProvider` 上下文的用户的 DID。
24
+
25
+ ```jsx MyCreditHistoryPage.tsx icon=logos:react
26
+ import React from 'react';
27
+ import { CreditTransactionsList, PaymentProvider } from '@blocklet/payment-react';
28
+ import { useSessionContext } from '../hooks/session-context'; // 你的会话上下文钩子
29
+
30
+ function MyCreditHistoryPage() {
31
+ const { session, connectApi } = useSessionContext();
32
+
33
+ if (!session || !connectApi) {
34
+ return <div>正在加载会话...</div>;
35
+ }
36
+
37
+ return (
38
+ <PaymentProvider session={session} connectApi={connectApi}>
39
+ <h2>我的信用额度交易</h2>
40
+ <CreditTransactionsList />
41
+ </PaymentProvider>
42
+ );
43
+ }
44
+
45
+ export default MyCreditHistoryPage;
46
+ ```
47
+
48
+ ## 带筛选功能的管理视图
49
+
50
+ 对于管理仪表板,你可以传递一个特定的 `customer_id`,并启用管理列和时间筛选器,以提供用户交易历史的更强大和详细的视图。
51
+
52
+ ```jsx CustomerDetailsPage.tsx icon=logos:react
53
+ import React from 'react';
54
+ import { CreditTransactionsList, PaymentProvider } from '@blocklet/payment-react';
55
+ import { useSessionContext } from '../hooks/session-context'; // 你的会话上下文钩子
56
+
57
+ function CustomerDetailsPage({ customerId }) {
58
+ const { session, connectApi } = useSessionContext();
59
+
60
+ if (!session || !connectApi) {
61
+ return <div>正在加载会话...</div>;
62
+ }
63
+
64
+ return (
65
+ <PaymentProvider session={session} connectApi={connectApi}>
66
+ <h3>{customerId} 的交易历史</h3>
67
+ <CreditTransactionsList
68
+ customer_id={customerId}
69
+ showAdminColumns={true}
70
+ showTimeFilter={true}
71
+ pageSize={20}
72
+ mode="dashboard"
73
+ />
74
+ </PaymentProvider>
75
+ );
76
+ }
77
+
78
+ export default CustomerDetailsPage;
79
+ ```
80
+
81
+ ## 显示特定信用额度授予的交易记录
82
+
83
+ 要显示特定信用额度授予的消耗详情日志,请传递 `credit_grant_id`。这对于显示单个信用额度授予详情的页面非常有用。
84
+
85
+ ```jsx CreditGrantDetailsPage.tsx icon=logos:react
86
+ import React from 'react';
87
+ import { CreditTransactionsList, PaymentProvider } from '@blocklet/payment-react';
88
+ import { useSessionContext } from '../hooks/session-context'; // 你的会话上下文钩子
89
+
90
+ function CreditGrantDetailsPage({ grantId }) {
91
+ const { session, connectApi } = useSessionContext();
92
+
93
+ if (!session || !connectApi) {
94
+ return <div>正在加载会话...</div>;
95
+ }
96
+
97
+ return (
98
+ <PaymentProvider session={session} connectApi={connectApi}>
99
+ <h4>授权 {grantId} 的使用详情</h4>
100
+ <CreditTransactionsList credit_grant_id={grantId} />
101
+ </PaymentProvider>
102
+ );
103
+ }
104
+
105
+ export default CreditGrantDetailsPage;
106
+ ```
@@ -0,0 +1,110 @@
1
+ # CustomerInvoiceList
2
+
3
+ `CustomerInvoiceList` コンポーネントは、顧客の請求履歴をレンダリングするために設計されています。支払いサービスから請求書データを取得して表示し、2つの異なるレイアウトを提供します:無限スクロールを備えた日付でグループ化されたシンプルなリストと、詳細なページ分割テーブルです。このコンポーネントが正しく機能するためには、`PaymentProvider` 内で使用する必要があります。
4
+
5
+ ## プロパティ
6
+
7
+ | プロパティ | 型 | 説明 | デフォルト |
8
+ | --- | --- | --- | --- |
9
+ | `customer_id` | `string` | 請求書を表示する顧客のID。 | `''` |
10
+ | `subscription_id` | `string` | 特定のサブスクリプションIDで請求書を絞り込みます。 | `''` |
11
+ | `currency_id` | `string` | 特定の通貨IDで請求書を絞り込みます。 | `''` |
12
+ | `include_staking` | `boolean` | `true` の場合、ステーキング関連の請求書をリストに含めます。 | `false` |
13
+ | `include_return_staking` | `boolean` | `true` の場合、返還ステーキングの請求書を含めます。 | `false` |
14
+ | `include_recovered_from` | `boolean` | `true` の場合、以前の残高から回収された請求書を含めます。 | `false` |
15
+ | `status` | `string` | 表示する請求書のステータスをカンマ区切りで指定した文字列(例:`'open,paid,uncollectible'`)。 | `'open,paid,uncollectible'` |
16
+ | `pageSize` | `number` | 1ページあたりに取得する請求書の数。 | `10` |
17
+ | `target` | `string` | 請求書リンクの `target` 属性(例:`'_self'`、`'_blank'`)。 | `'_self'` |
18
+ | `action` | `string` | 特定の請求書に対するコールトゥアクションを定義します。`'pay'` に設定すると、未払いの請求書に支払いボタンが表示されます。 | `''` |
19
+ | `type` | `'list' \| 'table'` | 請求書リストの表示モード。 | `'list'` |
20
+ | `onTableDataChange` | `Function` | 請求書データが変更されたときにトリガーされるコールバック関数。 | `() => {}` |
21
+ | `relatedSubscription` | `boolean` | `table` モードで `true` の場合、関連するサブスクリプションへのリンクを含む列を表示します。 | `false` |
22
+
23
+ ## 基本的な使い方(リストビュー)
24
+
25
+ デフォルトのビュー(`type="list"`)では、日付でグループ化された請求書のシンプルなリストが表示され、無限スクロール機能で項目を追加読み込みします。
26
+
27
+ ```tsx CustomerInvoiceListPage.tsx icon=logos:react
28
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
29
+
30
+ function InvoiceHistoryPage() {
31
+ // customerIdが利用可能であると仮定します(例:セッションまたはpropsから)
32
+ const customerId = 'cus_xxxxxxxxxxxxxx';
33
+
34
+ return (
35
+ <PaymentProvider>
36
+ <CustomerInvoiceList customer_id={customerId} />
37
+ </PaymentProvider>
38
+ );
39
+ }
40
+ ```
41
+
42
+ ## テーブルビュー
43
+
44
+ より詳細で構造化された表示には、`type="table"` を設定します。このモードでは、ソート可能な列を持つページ分割されたテーブルに請求書が表示されます。
45
+
46
+ ```tsx CustomerInvoiceTablePage.tsx icon=logos:react
47
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
48
+
49
+ function InvoiceHistoryTable() {
50
+ const customerId = 'cus_xxxxxxxxxxxxxx';
51
+
52
+ return (
53
+ <PaymentProvider>
54
+ <CustomerInvoiceList
55
+ customer_id={customerId}
56
+ type="table"
57
+ relatedSubscription={true} // 関連サブスクリプションの列を表示
58
+ pageSize={5}
59
+ />
60
+ </PaymentProvider>
61
+ );
62
+ }
63
+ ```
64
+
65
+ この例では、`relatedSubscription` プロパティを有効にして、各請求書に関連付けられたサブスクリプションに直接リンクする列を追加しています。これはサブスクリプションベースのサービスに役立ちます。
66
+
67
+ ## 請求書のフィルタリング
68
+
69
+ さまざまなプロパティを使用して、表示される請求書をフィルタリングできます。例えば、ステーキングに関連する支払い済みの請求書のみを表示するには、次のようにします:
70
+
71
+ ```tsx FilteredInvoiceListPage.tsx icon=logos:react
72
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
73
+
74
+ function FilteredInvoiceList() {
75
+ const customerId = 'cus_xxxxxxxxxxxxxx';
76
+
77
+ return (
78
+ <PaymentProvider>
79
+ <CustomerInvoiceList
80
+ customer_id={customerId}
81
+ type="table"
82
+ status="paid" // 支払い済みの請求書のみ表示
83
+ include_staking={true} // ステーキング取引も含む
84
+ />
85
+ </PaymentProvider>
86
+ );
87
+ }
88
+ ```
89
+
90
+ ## 未払い請求書の支払いを有効にする
91
+
92
+ `action` プロパティを `'pay'` に設定すると、ステータスが `open` または `uncollectible` の請求書に「支払う」ボタンを追加できます。このボタンをクリックすると、`PaymentProvider` の `connect` インスタンスを使用して支払いフローが開始されます。
93
+
94
+ ```tsx PayableInvoiceListPage.tsx icon=logos:react
95
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
96
+
97
+ function PayableInvoiceList() {
98
+ const customerId = 'cus_xxxxxxxxxxxxxx';
99
+
100
+ return (
101
+ <PaymentProvider>
102
+ <CustomerInvoiceList
103
+ customer_id={customerId}
104
+ status="open,uncollectible" // 支払いが必要な請求書のみ表示
105
+ action="pay" // 「支払う」ボタンを追加
106
+ />
107
+ </PaymentProvider>
108
+ );
109
+ }
110
+ ```
@@ -0,0 +1,110 @@
1
+ # CustomerInvoiceList
2
+
3
+ `CustomerInvoiceList` 元件旨在呈現客戶的發票歷史記錄。它會從支付服務中擷取並顯示發票資料,提供兩種不同的版面配置:一種是簡單的、按日期分組的無限滾動列表,另一種是詳細的、分頁的表格。此元件必須在 `PaymentProvider` 中使用才能正常運作。
4
+
5
+ ## Props
6
+
7
+ | Prop | 類型 | 說明 | 預設值 |
8
+ | --- | --- | --- | --- |
9
+ | `customer_id` | `string` | 要顯示其發票的客戶 ID。 | `''` |
10
+ | `subscription_id` | `string` | 按特定訂閱 ID 篩選發票。 | `''` |
11
+ | `currency_id` | `string` | 按特定貨幣 ID 篩選發票。 | `''` |
12
+ | `include_staking` | `boolean` | 如果為 `true`,則在列表中包含與質押相關的發票。 | `false` |
13
+ | `include_return_staking` | `boolean` | 如果為 `true`,則包含返還質押的發票。 | `false` |
14
+ | `include_recovered_from` | `boolean` | 如果為 `true`,則包含從先前餘額中恢復的發票。 | `false` |
15
+ | `status` | `string` | 要顯示的發票狀態的逗號分隔字串(例如:`'open,paid,uncollectible'`)。 | `'open,paid,uncollectible'` |
16
+ | `pageSize` | `number` | 每頁要擷取的發票數量。 | `10` |
17
+ | `target` | `string` | 發票連結的目標屬性(例如:`'_self'`、`'_blank'`)。 | `'_self'` |
18
+ | `action` | `string` | 為某些發票定義行動呼籲。設定為 `'pay'` 以顯示未付款發票的支付按鈕。 | `''` |
19
+ | `type` | `'list' \| 'table'` | 發票列表的顯示模式。 | `'list'` |
20
+ | `onTableDataChange` | `Function` | 當發票資料變更時觸發的回呼函式。 | `() => {}` |
21
+ | `relatedSubscription` | `boolean` | 在表格模式下,如果為 `true`,則顯示一個包含相關訂閱連結的欄位。 | `false` |
22
+
23
+ ## 基本用法(列表視圖)
24
+
25
+ 預設視圖 (`type="list"`) 會呈現一個按日期分組的簡單發票列表,並具有無限滾動機制以載入更多項目。
26
+
27
+ ```tsx CustomerInvoiceListPage.tsx icon=logos:react
28
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
29
+
30
+ function InvoiceHistoryPage() {
31
+ // 假設 customerId 可用,例如,來自會話或 props
32
+ const customerId = 'cus_xxxxxxxxxxxxxx';
33
+
34
+ return (
35
+ <PaymentProvider>
36
+ <CustomerInvoiceList customer_id={customerId} />
37
+ </PaymentProvider>
38
+ );
39
+ }
40
+ ```
41
+
42
+ ## 表格視圖
43
+
44
+ 若要進行更詳細和結構化的呈現,您可以設定 `type="table"`。此模式會在具有可排序欄位的分頁表格中顯示發票。
45
+
46
+ ```tsx CustomerInvoiceTablePage.tsx icon=logos:react
47
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
48
+
49
+ function InvoiceHistoryTable() {
50
+ const customerId = 'cus_xxxxxxxxxxxxxx';
51
+
52
+ return (
53
+ <PaymentProvider>
54
+ <CustomerInvoiceList
55
+ customer_id={customerId}
56
+ type="table"
57
+ relatedSubscription={true} // 顯示相關訂閱的欄位
58
+ pageSize={5}
59
+ />
60
+ </PaymentProvider>
61
+ );
62
+ }
63
+ ```
64
+
65
+ 在此範例中,啟用了 `relatedSubscription` prop 來新增一個直接連結到每張發票相關訂閱的欄位,這對於基於訂閱的服務非常有用。
66
+
67
+ ## 篩選發票
68
+
69
+ 您可以使用各種 props 來篩選顯示的發票。例如,若要僅顯示與質押相關的已付款發票:
70
+
71
+ ```tsx FilteredInvoiceListPage.tsx icon=logos:react
72
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
73
+
74
+ function FilteredInvoiceList() {
75
+ const customerId = 'cus_xxxxxxxxxxxxxx';
76
+
77
+ return (
78
+ <PaymentProvider>
79
+ <CustomerInvoiceList
80
+ customer_id={customerId}
81
+ type="table"
82
+ status="paid" // 僅顯示已付款發票
83
+ include_staking={true} // 同時包含質押交易
84
+ />
85
+ </PaymentProvider>
86
+ );
87
+ }
88
+ ```
89
+
90
+ ## 為未付款發票啟用支付功能
91
+
92
+ 透過將 `action` prop 設定為 `'pay'`,您可以為任何狀態為 `open` 或 `uncollectible` 的發票新增一個「支付」按鈕。點擊此按鈕將使用來自 `PaymentProvider` 的 `connect` 實例啟動支付流程。
93
+
94
+ ```tsx PayableInvoiceListPage.tsx icon=logos:react
95
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
96
+
97
+ function PayableInvoiceList() {
98
+ const customerId = 'cus_xxxxxxxxxxxxxx';
99
+
100
+ return (
101
+ <PaymentProvider>
102
+ <CustomerInvoiceList
103
+ customer_id={customerId}
104
+ status="open,uncollectible" // 僅顯示需要支付的發票
105
+ action="pay" // 新增「支付」按鈕
106
+ />
107
+ </PaymentProvider>
108
+ );
109
+ }
110
+ ```
@@ -0,0 +1,110 @@
1
+ # CustomerInvoiceList
2
+
3
+ `CustomerInvoiceList` 组件用于渲染客户的发票历史记录。它会从支付服务中获取并显示发票数据,并提供两种不同的布局:一种是按日期分组的简单列表,支持无限滚动;另一种是详细的分页表格。此组件必须在 `PaymentProvider` 内部使用才能正常工作。
4
+
5
+ ## Props
6
+
7
+ | Prop | Type | Description | Default |
8
+ | --- | --- | --- | --- |
9
+ | `customer_id` | `string` | 要显示其发票的客户 ID。 | `''` |
10
+ | `subscription_id` | `string` | 按特定订阅 ID 筛选发票。 | `''` |
11
+ | `currency_id` | `string` | 按特定货币 ID 筛选发票。 | `''` |
12
+ | `include_staking` | `boolean` | 如果为 `true`,则在列表中包含与质押相关的发票。 | `false` |
13
+ | `include_return_staking` | `boolean` | 如果为 `true`,则包含返还质押的发票。 | `false` |
14
+ | `include_recovered_from` | `boolean` | 如果为 `true`,则包含从先前余额中恢复的发票。 | `false` |
15
+ | `status` | `string` | 一个逗号分隔的发票状态字符串,用于显示(例如,`'open,paid,uncollectible'`)。 | `'open,paid,uncollectible'` |
16
+ | `pageSize` | `number` | 每页要获取的发票数量。 | `10` |
17
+ | `target` | `string` | 发票链接的目标属性(例如,`'_self'`,`'_blank'`)。 | `'_self'` |
18
+ | `action` | `string` | 为某些发票定义一个行动号召。设置为 `'pay'` 以显示待支付发票的支付按钮。 | `''` |
19
+ | `type` | `'list' \| 'table'` | 发票列表的显示模式。 | `'list'` |
20
+ | `onTableDataChange` | `Function` | 当发票数据更改时触发的回调函数。 | `() => {}` |
21
+ | `relatedSubscription` | `boolean` | 在 `table` 模式下,如果为 `true`,则显示一个包含相关订阅链接的列。 | `false` |
22
+
23
+ ## 基本用法(列表视图)
24
+
25
+ 默认视图 (`type="list"`) 会渲染一个按日期分组的简单发票列表,并带有无限滚动机制来加载更多项目。
26
+
27
+ ```tsx CustomerInvoiceListPage.tsx icon=logos:react
28
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
29
+
30
+ function InvoiceHistoryPage() {
31
+ // 假设 customerId 可用,例如,从 session 或 props 中获取
32
+ const customerId = 'cus_xxxxxxxxxxxxxx';
33
+
34
+ return (
35
+ <PaymentProvider>
36
+ <CustomerInvoiceList customer_id={customerId} />
37
+ </PaymentProvider>
38
+ );
39
+ }
40
+ ```
41
+
42
+ ## 表格视图
43
+
44
+ 若要获得更详细、结构化的展示,您可以设置 `type="table"`。此模式会在一个带有可排序列的分页表格中显示发票。
45
+
46
+ ```tsx CustomerInvoiceTablePage.tsx icon=logos:react
47
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
48
+
49
+ function InvoiceHistoryTable() {
50
+ const customerId = 'cus_xxxxxxxxxxxxxx';
51
+
52
+ return (
53
+ <PaymentProvider>
54
+ <CustomerInvoiceList
55
+ customer_id={customerId}
56
+ type="table"
57
+ relatedSubscription={true} // 显示相关订阅的列
58
+ pageSize={5}
59
+ />
60
+ </PaymentProvider>
61
+ );
62
+ }
63
+ ```
64
+
65
+ 在此示例中,启用了 `relatedSubscription` 属性来添加一列,该列直接链接到与每张发票关联的订阅,这对于基于订阅的服务非常有用。
66
+
67
+ ## 筛选发票
68
+
69
+ 您可以使用各种属性来筛选所显示的发票。例如,要仅显示与质押相关的已支付发票:
70
+
71
+ ```tsx FilteredInvoiceListPage.tsx icon=logos:react
72
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
73
+
74
+ function FilteredInvoiceList() {
75
+ const customerId = 'cus_xxxxxxxxxxxxxx';
76
+
77
+ return (
78
+ <PaymentProvider>
79
+ <CustomerInvoiceList
80
+ customer_id={customerId}
81
+ type="table"
82
+ status="paid" // 仅显示已支付的发票
83
+ include_staking={true} // 同时包括质押交易
84
+ />
85
+ </PaymentProvider>
86
+ );
87
+ }
88
+ ```
89
+
90
+ ## 为待支付发票启用支付功能
91
+
92
+ 通过将 `action` 属性设置为 `'pay'`,您可以为任何状态为 `open` 或 `uncollectible` 的发票添加一个“支付”按钮。点击此按钮将使用 `PaymentProvider` 中的 `connect` 实例来启动支付流程。
93
+
94
+ ```tsx PayableInvoiceListPage.tsx icon=logos:react
95
+ import { PaymentProvider, CustomerInvoiceList } from '@blocklet/payment-react';
96
+
97
+ function PayableInvoiceList() {
98
+ const customerId = 'cus_xxxxxxxxxxxxxx';
99
+
100
+ return (
101
+ <PaymentProvider>
102
+ <CustomerInvoiceList
103
+ customer_id={customerId}
104
+ status="open,uncollectible" // 仅显示需要支付的发票
105
+ action="pay" // 添加“支付”按钮
106
+ />
107
+ </PaymentProvider>
108
+ );
109
+ }
110
+ ```
@@ -0,0 +1,44 @@
1
+ # CustomerPaymentList
2
+
3
+ `CustomerPaymentList`コンポーネントは、顧客の支払い履歴の詳細をレンダリングします。データの取得、無限スクロールによるページネーション、日付ごとの支払いのグループ化を自動的に処理し、ユーザーの取引履歴を明確かつ整理されたビューで提供します。
4
+
5
+ このコンポーネントは、顧客が過去の取引を確認する必要があるユーザーダッシュボードやアカウントページに最適です。
6
+
7
+ ## Props
8
+
9
+ | Prop | Type | Required | Description |
10
+ |---|---|---|---|
11
+ | `customer_id` | `string` | はい | 支払い履歴を表示したい顧客の一意の識別子(例:ユーザーのDID)。 |
12
+
13
+ ## 使用例
14
+
15
+ `CustomerPaymentList`を使用するには、`PaymentProvider`でラップし、必須の`customer_id`を提供する必要があります。
16
+
17
+ ```tsx Customer Payment History icon=logos:react
18
+ import { PaymentProvider, CustomerPaymentList } from '@blocklet/payment-react';
19
+ import { useSessionContext } from './hooks/useSessionContext'; // セッションコンテキストフックへのパスを調整してください
20
+
21
+ export default function CustomerDashboard() {
22
+ const { session, connectApi } = useSessionContext();
23
+
24
+ // ユーザーがログインしていることを確認してDIDを取得
25
+ if (!session?.user?.did) {
26
+ return <div>支払い履歴を表示するにはログインしてください。</div>;
27
+ }
28
+
29
+ return (
30
+ <PaymentProvider session={session} connect={connectApi}>
31
+ <h2>私の支払い履歴</h2>
32
+ <CustomerPaymentList customer_id={session.user.did} />
33
+ </PaymentProvider>
34
+ );
35
+ }
36
+ ```
37
+
38
+ ## 機能
39
+
40
+ - **自動データ取得**: コンポーネントはAPIエンドポイント`/api/payment-intents`から支払いインテントを取得します。
41
+ - **無限スクロール**: ユーザーが要求すると自動的により多くの支払いを読み込み、長い支払い履歴に対しても効率的なデータ処理を保証します。
42
+ - **日付によるグループ化**: 支払いは日付ごとに視覚的にグループ化され、リストを簡単に確認できます。
43
+ - **詳細情報**: 各支払いについて、作成時間、金額、ステータス、説明、および利用可能な場合はブロックチェーン取引へのリンクを表示します。
44
+ - **読み込み中および空の状態**: データ取得中に読み込みインジケーターを含み、顧客に支払い履歴がない場合はユーザーフレンドリーなメッセージを表示します。
@@ -0,0 +1,44 @@
1
+ # CustomerPaymentList
2
+
3
+ `CustomerPaymentList` 元件可呈現客戶付款的詳細歷史記錄。它會自動處理擷取、透過無限滾動實現分頁以及按日期將付款分組,從而提供清晰、有條理的使用者交易歷史記錄檢視。
4
+
5
+ 此元件非常適合用於使用者儀表板或帳戶頁面,客戶可以在其中查看過去的交易。
6
+
7
+ ## Props
8
+
9
+ | Prop | 類型 | 必填 | 說明 |
10
+ |---|---|---|---|
11
+ | `customer_id` | `string` | 是 | 客戶的唯一識別碼(例如,使用者的 DID),您想要顯示其付款歷史記錄。 |
12
+
13
+ ## 使用範例
14
+
15
+ 若要使用 `CustomerPaymentList`,您必須將其包裝在 `PaymentProvider` 中,並提供必要的 `customer_id`。
16
+
17
+ ```tsx Customer Payment History icon=logos:react
18
+ import { PaymentProvider, CustomerPaymentList } from '@blocklet/payment-react';
19
+ import { useSessionContext } from './hooks/useSessionContext'; // 調整到您的 session context hook 的路徑
20
+
21
+ export default function CustomerDashboard() {
22
+ const { session, connectApi } = useSessionContext();
23
+
24
+ // 確保使用者已登入以取得其 DID
25
+ if (!session?.user?.did) {
26
+ return <div>請登入以查看您的付款歷史記錄。</div>;
27
+ }
28
+
29
+ return (
30
+ <PaymentProvider session={session} connect={connectApi}>
31
+ <h2>我的付款歷史記錄</h2>
32
+ <CustomerPaymentList customer_id={session.user.did} />
33
+ </PaymentProvider>
34
+ );
35
+ }
36
+ ```
37
+
38
+ ## 功能
39
+
40
+ - **自動資料擷取**:該元件從 API 端點 `/api/payment-intents` 擷取付款意圖。
41
+ - **無限滾動**:當使用者請求時,它會自動載入更多付款,確保對長付款歷史記錄進行有效的資料處理。
42
+ - **日期分組**:付款會按日期進行視覺分組,使清單易於瀏覽。
43
+ - **詳細資訊**:對於每筆付款,它會顯示建立時間、金額、狀態、說明以及區塊鏈交易連結(如果有的話)。
44
+ - **載入中和空白狀態**:它在資料擷取期間包含一個載入指示器,並在客戶沒有付款歷史記錄時顯示一個使用者友善的訊息。
@@ -0,0 +1,44 @@
1
+ # CustomerPaymentList
2
+
3
+ `CustomerPaymentList` 组件呈现客户付款的详细历史记录。它通过无限滚动自动处理获取、分页和按日期对付款进行分组,为用户的交易历史提供清晰有序的视图。
4
+
5
+ 此组件非常适用于用户仪表板或客户需要查看其过去交易的账户页面。
6
+
7
+ ## Props
8
+
9
+ | Prop | Type | Required | Description |
10
+ |---|---|---|---|
11
+ | `customer_id` | `string` | 是 | 客户的唯一标识符(例如,用户的 DID),用于显示其付款历史。 |
12
+
13
+ ## 使用示例
14
+
15
+ 要使用 `CustomerPaymentList`,您必须将其包装在 `PaymentProvider` 中,并提供所需的 `customer_id`。
16
+
17
+ ```tsx Customer Payment History icon=logos:react
18
+ import { PaymentProvider, CustomerPaymentList } from '@blocklet/payment-react';
19
+ import { useSessionContext } from './hooks/useSessionContext'; // 调整到您的会话上下文钩子的路径
20
+
21
+ export default function CustomerDashboard() {
22
+ const { session, connectApi } = useSessionContext();
23
+
24
+ // 确保用户已登录以获取其 DID
25
+ if (!session?.user?.did) {
26
+ return <div>请登录以查看您的付款历史。</div>;
27
+ }
28
+
29
+ return (
30
+ <PaymentProvider session={session} connect={connectApi}>
31
+ <h2>我的付款历史</h2>
32
+ <CustomerPaymentList customer_id={session.user.did} />
33
+ </PaymentProvider>
34
+ );
35
+ }
36
+ ```
37
+
38
+ ## 功能特性
39
+
40
+ - **自动数据获取**:该组件从 API 端点 `/api/payment-intents` 获取付款意图。
41
+ - **无限滚动**:当用户请求时,它会自动加载更多付款,从而确保对长付款历史进行高效的数据处理。
42
+ - **日期分组**:付款按日期进行视觉分组,使列表易于浏览。
43
+ - **详细信息**:对于每笔付款,它会显示创建时间、金额、状态、描述以及可用的区块链交易链接。
44
+ - **加载和空状态**:它在数据获取期间包含一个加载指示器,并在客户没有付款历史时显示用户友好的消息。
@@ -0,0 +1,67 @@
1
+ # 履歴コンポーネント
2
+
3
+ `@blocklet/payment-react`ライブラリは、ユーザーが過去のアクティビティを明確かつ詳細に確認できるように設計された一連の履歴コンポーネントを提供します。これらのコンポーネントは、ユーザーが請求、支払い、クレジットの使用状況を追跡する必要がある顧客ポータル、アカウントダッシュボード、および管理インターフェースの構築に不可欠です。
4
+
5
+ これらのコンポーネントは、支払いサービスから直接データを取得して表示するため、複雑なデータ取得およびレンダリングロジックをゼロから構築することなく、履歴情報をシームレスに提示できます。
6
+
7
+ <x-cards data-columns="2">
8
+ <x-card data-title="CustomerInvoiceList" data-icon="lucide:receipt-text" data-href="/components/history/invoice-list">
9
+ 顧客の請求書リストまたはテーブルをレンダリングし、ステータス、金額、作成日の詳細を含みます。
10
+ </x-card>
11
+ <x-card data-title="CustomerPaymentList" data-icon="lucide:credit-card" data-href="/components/history/payment-list">
12
+ 顧客の完全な支払い履歴を表示し、取引詳細、支払い方法、ステータスを含みます。
13
+ </x-card>
14
+ <x-card data-title="CreditGrantsList" data-icon="lucide:award" data-href="/components/history/credit-grants-list">
15
+ 顧客のすべてのクレジット付与のリストを表示し、ステータス、残額、有効日を詳述します。
16
+ </x-card>
17
+ <x-card data-title="CreditTransactionsList" data-icon="lucide:history" data-href="/components/history/credit-transactions-list">
18
+ 個々のすべてのクレジット取引をリスト表示し、クレジットの使用状況と経時的な調整の詳細なログを提供します。
19
+ </x-card>
20
+ </x-cards>
21
+
22
+ ## 一般的なユースケース
23
+
24
+ 一般的なユースケースは、ユーザーのアカウントページに「請求履歴」セクションを作成することです。タブ付きインターフェースを使用して、請求書、支払い、クレジットなどの異なる履歴ビューを切り替えることができます。
25
+
26
+ 以下は、そのようなページを構成する方法の概念的な例です。
27
+
28
+ ```jsx MyBillingPage.tsx icon=lucide:user
29
+ import React from 'react';
30
+ import { CustomerInvoiceList, CustomerPaymentList } from '@blocklet/payment-react';
31
+
32
+ // セッションまたはコンテキストから顧客IDを取得していると仮定します
33
+ const customerId = 'cus_xxxxxxxxxxxxxx';
34
+
35
+ export default function MyBillingPage() {
36
+ // 実際のアプリケーションでは、stateを使用してアクティブなタブを管理します
37
+ const [activeTab, setActiveTab] = React.useState('invoices');
38
+
39
+ return (
40
+ <div>
41
+ <h1>Billing History</h1>
42
+ <nav>
43
+ <button onClick={() => setActiveTab('invoices')}>Invoices</button>
44
+ <button onClick={() => setActiveTab('payments')}>Payments</button>
45
+ </nav>
46
+
47
+ <div style={{ marginTop: '20px' }}>
48
+ {activeTab === 'invoices' && (
49
+ <CustomerInvoiceList
50
+ customer_id={customerId}
51
+ type="table"
52
+ />
53
+ )}
54
+ {activeTab === 'payments' && (
55
+ <CustomerPaymentList
56
+ customer_id={customerId}
57
+ />
58
+ )}
59
+ </div>
60
+ </div>
61
+ );
62
+ }
63
+ ```
64
+
65
+ この例は、履歴コンポーネントを簡単に埋め込むことで、包括的なセルフサービスの請求情報をユーザーに提供する方法を示しています。各コンポーネントは、独自のデータ取得、ページネーション、および表示ロジックを処理します。
66
+
67
+ 各コンポーネントの詳細なドキュメントを参照して、その特定のプロパティとカスタマイズオプションを理解してください。