@blocklet/payment-react 1.20.16 → 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 (102) 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/package.json +3 -3
@@ -0,0 +1,140 @@
1
+ # PricingTable
2
+
3
+ `PricingTable` 元件是一個彈性的 UI 元件,旨在以結構化、響應式的表格來顯示訂閱方案與價格選項。它允許使用者切換計費週期(例如,月繳、年繳)、選擇偏好的貨幣,並選擇一個方案以繼續進行。
4
+
5
+ 當您需要精細控制價格方案的呈現方式以建立自訂結帳流程時,此元件是理想的選擇。若需要一個能處理完整結帳流程的整合度更高的解決方案,請考慮使用更高階的 [`CheckoutTable`](./components-checkout-checkout-table.md) 元件。
6
+
7
+ ## Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ | --- | --- | --- | --- |
11
+ | `table` | `TPricingTableExpanded` | - | **必填**。一個包含價格表資料的物件,包括項目(方案)列表、貨幣資訊和其他詳細資訊。 |
12
+ | `onSelect` | `(priceId: string, currencyId: string) => void` | - | **必填**。當使用者點擊方案的動作按鈕時觸發的回呼函式。它會接收所選的 `priceId` 和 `currencyId`。 |
13
+ | `alignItems` | `'center' \| 'left'` | `'center'` | 控制表格標頭內容(計費週期和貨幣選擇器)的水平對齊方式。 |
14
+ | `mode` | `'checkout' \| 'select'` | `'checkout'` | 決定動作按鈕的行為和文字。`'checkout'` 模式用於啟動付款,而 `'select'` 模式用於在較大的表單中選擇方案。 |
15
+ | `interval` | `string` | `''` | 設定初始選擇的計費間隔。格式通常為 `interval-interval_count`(例如 `month-1`、`year-1`)。 |
16
+ | `hideCurrency` | `boolean` | `false` | 若為 `true`,即使有多種貨幣可用,貨幣選擇器下拉選單也將被隱藏。 |
17
+
18
+ ## 使用範例
19
+
20
+ 若要使用 `PricingTable`,您必須將其包裝在 `PaymentProvider` 中。該元件需要一個包含您產品資料的 `table` 物件,以及一個用於管理使用者選擇的 `onSelect` 處理函式。
21
+
22
+ ```tsx Integration Example icon=lucide:code
23
+ import { PaymentProvider } from '@blocklet/payment-react';
24
+ import { PricingTable } from '@blocklet/payment-react/components/ui';
25
+ import type { TPricingTableExpanded } from '@blocklet/payment-types';
26
+
27
+ // 在實際應用中,您會從您的支付服務中獲取此資料。
28
+ const pricingTableData: TPricingTableExpanded = {
29
+ id: 'pt_123',
30
+ livemode: false,
31
+ currency: { id: 'usd', symbol: '$' },
32
+ items: [
33
+ {
34
+ price_id: 'price_basic_monthly',
35
+ product: {
36
+ name: 'Basic Plan',
37
+ description: 'For individuals and small teams.',
38
+ unit_label: 'user',
39
+ features: [{ name: '5 Projects' }, { name: '10GB Storage' }, { name: 'Basic Support' }],
40
+ },
41
+ price: {
42
+ currency: 'usd',
43
+ unit_amount: '1000', // 以分為單位
44
+ recurring: { interval: 'month', interval_count: 1 },
45
+ currency_options: [{ currency_id: 'usd', unit_amount: '1000' }],
46
+ },
47
+ is_highlight: false,
48
+ },
49
+ {
50
+ price_id: 'price_pro_monthly',
51
+ product: {
52
+ name: 'Pro Plan',
53
+ description: 'For growing businesses.',
54
+ unit_label: 'user',
55
+ features: [{ name: 'Unlimited Projects' }, { name: '100GB Storage' }, { name: 'Priority Support' }],
56
+ },
57
+ price: {
58
+ currency: 'usd',
59
+ unit_amount: '2500',
60
+ recurring: { interval: 'month', interval_count: 1 },
61
+ currency_options: [{ currency_id: 'usd', unit_amount: '2500' }],
62
+ },
63
+ is_highlight: true,
64
+ highlight_text: 'Popular',
65
+ },
66
+ {
67
+ price_id: 'price_basic_yearly',
68
+ product: {
69
+ name: 'Basic Plan',
70
+ description: 'For individuals and small teams.',
71
+ unit_label: 'user',
72
+ features: [{ name: '5 Projects' }, { name: '10GB Storage' }, { name: 'Basic Support' }],
73
+ },
74
+ price: {
75
+ currency: 'usd',
76
+ unit_amount: '10000',
77
+ recurring: { interval: 'year', interval_count: 1 },
78
+ currency_options: [{ currency_id: 'usd', unit_amount: '10000' }],
79
+ },
80
+ is_highlight: false,
81
+ },
82
+ {
83
+ price_id: 'price_pro_yearly',
84
+ product: {
85
+ name: 'Pro Plan',
86
+ description: 'For growing businesses.',
87
+ unit_label: 'user',
88
+ features: [{ name: 'Unlimited Projects' }, { name: '100GB Storage' }, { name: 'Priority Support' }],
89
+ },
90
+ price: {
91
+ currency: 'usd',
92
+ unit_amount: '25000',
93
+ recurring: { interval: 'year', interval_count: 1 },
94
+ currency_options: [{ currency_id: 'usd', unit_amount: '25000' }],
95
+ },
96
+ is_highlight: true,
97
+ highlight_text: 'Popular',
98
+ },
99
+ ],
100
+ };
101
+
102
+ function MyPricingPage() {
103
+ const { session, connect } = useSessionContext();
104
+
105
+ const handlePlanSelect = async (priceId: string, currencyId: string) => {
106
+ console.log(`Plan selected: ${priceId}, Currency: ${currencyId}`);
107
+ // 在這裡,您通常會導向到結帳頁面或打開一個付款彈出視窗。
108
+ // 例如:`router.push("/checkout?price_id=${priceId}&currency_id=${currencyId}")`
109
+ alert(`Selected Price ID: ${priceId}`);
110
+ };
111
+
112
+ return (
113
+ <PaymentProvider session={session} connect={connect}>
114
+ <div style={{ maxWidth: 800, margin: 'auto' }}>
115
+ <PricingTable table={pricingTableData} onSelect={handlePlanSelect} />
116
+ </div>
117
+ </PaymentProvider>
118
+ );
119
+ }
120
+
121
+ export default MyPricingPage;
122
+ ```
123
+
124
+ ## 使用情境
125
+
126
+ ### 模式:`checkout` vs. `select`
127
+
128
+ `mode` 屬性會改變行動呼籲按鈕以適應不同的使用案例。
129
+
130
+ - **`mode='checkout'` (預設):** 按鈕文字將根據情境顯示,例如「訂閱」或「開始試用」。此模式適用於使用者點擊後應立即啟動付款或結帳流程的情況。
131
+
132
+ - **`mode='select'`:** 按鈕文字將顯示「選擇」或「已選擇」。當價格表是較大表單或多步驟流程的一部分時,這非常有用。`onSelect` 回呼可用於更新應用程式狀態中所選擇的方案,且 UI 將視覺上指示目前選擇的方案。
133
+
134
+ ### 處理 `onSelect`
135
+
136
+ `onSelect` 回呼是處理使用者互動的核心機制。它是一個非同步函式,會接收所選方案的 `priceId` 和 `currencyId`。您的應用程式邏輯應置於此處。常見的操作包括:
137
+
138
+ - 將所選方案儲存在您的應用程式狀態中。
139
+ - 將使用者重新導向至專用的結帳頁面,並將 `priceId` 作為 URL 參數傳遞。
140
+ - 使用 `priceId` 與支付服務後端建立一個結帳會話,然後開啟一個付款表單。
@@ -0,0 +1,140 @@
1
+ # PricingTable
2
+
3
+ `PricingTable` 组件是一个灵活的 UI 元素,旨在以结构化的响应式表格显示订阅计划和定价选项。它允许用户在计费周期(例如,月度、年度)之间切换,选择他们偏好的货币,并选择一个计划以继续。
4
+
5
+ 该组件非常适合用于构建需要对定价计划的呈现进行精细控制的自定义结账流程。如果需要一个能处理整个结账流程的更集成的解决方案,请考虑使用更高级别的 [`CheckoutTable`](./components-checkout-checkout-table.md) 组件。
6
+
7
+ ## Props
8
+
9
+ | Prop | Type | Default | Description |
10
+ | --- | --- | --- | --- |
11
+ | `table` | `TPricingTableExpanded` | - | **必需**。一个包含定价表数据的对象,包括项目(计划)列表、货币信息和其他详细信息。 |
12
+ | `onSelect` | `(priceId: string, currencyId: string) => void` | - | **必需**。当用户点击计划的操作按钮时触发的回调函数。它接收所选的 `priceId` 和 `currencyId`。 |
13
+ | `alignItems` | `'center' \| 'left'` | `'center'` | 控制表格头部内容(计费周期和货币选择器)的水平对齐方式。 |
14
+ | `mode` | `'checkout' \| 'select'` | `'checkout'` | 决定操作按钮的行为和文本。`'checkout'` 模式用于发起支付,而 `'select'` 模式用于在更大的表单中选择一个计划。 |
15
+ | `interval` | `string` | `''` | 设置初始选定的计费周期。格式通常是 `interval-interval_count`(例如,`month-1`,`year-1`)。 |
16
+ | `hideCurrency` | `boolean` | `false` | 如果为 `true`,即使有多种货币可用,货币选择器下拉列表也将被隐藏。 |
17
+
18
+ ## 用法示例
19
+
20
+ 要使用 `PricingTable`,您必须将其包裹在 `PaymentProvider` 中。该组件需要一个包含您的产品数据的 `table` 对象和一个用于管理用户选择的 `onSelect` 处理程序。
21
+
22
+ ```tsx Integration Example icon=lucide:code
23
+ import { PaymentProvider } from '@blocklet/payment-react';
24
+ import { PricingTable } from '@blocklet/payment-react/components/ui';
25
+ import type { TPricingTableExpanded } from '@blocklet/payment-types';
26
+
27
+ // 在实际应用中,您将从支付服务中获取此数据。
28
+ const pricingTableData: TPricingTableExpanded = {
29
+ id: 'pt_123',
30
+ livemode: false,
31
+ currency: { id: 'usd', symbol: '$' },
32
+ items: [
33
+ {
34
+ price_id: 'price_basic_monthly',
35
+ product: {
36
+ name: '基础计划',
37
+ description: '适用于个人和小型团队。',
38
+ unit_label: '用户',
39
+ features: [{ name: '5 个项目' }, { name: '10GB 存储空间' }, { name: '基础支持' }],
40
+ },
41
+ price: {
42
+ currency: 'usd',
43
+ unit_amount: '1000', // 单位为美分
44
+ recurring: { interval: 'month', interval_count: 1 },
45
+ currency_options: [{ currency_id: 'usd', unit_amount: '1000' }],
46
+ },
47
+ is_highlight: false,
48
+ },
49
+ {
50
+ price_id: 'price_pro_monthly',
51
+ product: {
52
+ name: '专业版计划',
53
+ description: '适用于成长中的企业。',
54
+ unit_label: '用户',
55
+ features: [{ name: '无限项目' }, { name: '100GB 存储空间' }, { name: '优先支持' }],
56
+ },
57
+ price: {
58
+ currency: 'usd',
59
+ unit_amount: '2500',
60
+ recurring: { interval: 'month', interval_count: 1 },
61
+ currency_options: [{ currency_id: 'usd', unit_amount: '2500' }],
62
+ },
63
+ is_highlight: true,
64
+ highlight_text: '热门',
65
+ },
66
+ {
67
+ price_id: 'price_basic_yearly',
68
+ product: {
69
+ name: '基础计划',
70
+ description: '适用于个人和小型团队。',
71
+ unit_label: '用户',
72
+ features: [{ name: '5 个项目' }, { name: '10GB 存储空间' }, { name: '基础支持' }],
73
+ },
74
+ price: {
75
+ currency: 'usd',
76
+ unit_amount: '10000',
77
+ recurring: { interval: 'year', interval_count: 1 },
78
+ currency_options: [{ currency_id: 'usd', unit_amount: '10000' }],
79
+ },
80
+ is_highlight: false,
81
+ },
82
+ {
83
+ price_id: 'price_pro_yearly',
84
+ product: {
85
+ name: '专业版计划',
86
+ description: '适用于成长中的企业。',
87
+ unit_label: '用户',
88
+ features: [{ name: '无限项目' }, { name: '100GB 存储空间' }, { name: '优先支持' }],
89
+ },
90
+ price: {
91
+ currency: 'usd',
92
+ unit_amount: '25000',
93
+ recurring: { interval: 'year', interval_count: 1 },
94
+ currency_options: [{ currency_id: 'usd', unit_amount: '25000' }],
95
+ },
96
+ is_highlight: true,
97
+ highlight_text: '热门',
98
+ },
99
+ ],
100
+ };
101
+
102
+ function MyPricingPage() {
103
+ const { session, connect } = useSessionContext();
104
+
105
+ const handlePlanSelect = async (priceId: string, currencyId: string) => {
106
+ console.log(`已选择计划:${priceId},货币:${currencyId}`);
107
+ // 在这里,您通常会导航到结账页面或打开一个支付模态框。
108
+ // 例如:`router.push(\"/checkout?price_id=${priceId}&currency_id=${currencyId}\")`
109
+ alert(`已选择价格 ID:${priceId}`);
110
+ };
111
+
112
+ return (
113
+ <PaymentProvider session={session} connect={connect}>
114
+ <div style={{ maxWidth: 800, margin: 'auto' }}>
115
+ <PricingTable table={pricingTableData} onSelect={handlePlanSelect} />
116
+ </div>
117
+ </PaymentProvider>
118
+ );
119
+ }
120
+
121
+ export default MyPricingPage;
122
+ ```
123
+
124
+ ## 使用场景
125
+
126
+ ### 模式:`checkout` vs. `select`
127
+
128
+ `mode` prop 会更改号召性用语按钮以适应不同的用例。
129
+
130
+ - **`mode='checkout'` (默认):** 按钮文本将具有上下文感知能力,显示“订阅”或“开始试用”等标签。此模式旨在当用户的点击应立即启动支付或结账流程时使用。
131
+
132
+ - **`mode='select'`:** 按钮文本将显示“选择”或“已选择”。当定价表是更大表单或多步骤流程的一部分时,这非常有用。`onSelect` 回调可用于更新应用程序状态中的所选计划,并且 UI 将在视觉上指示当前选择的计划。
133
+
134
+ ### 处理 `onSelect`
135
+
136
+ `onSelect` 回调是处理用户交互的核心机制。它是一个接收所选计划的 `priceId` 和 `currencyId` 的异步函数。您的应用程序逻辑应放在此处。常见操作包括:
137
+
138
+ - 在应用程序的状态中存储所选的计划。
139
+ - 将用户重定向到专用的结账页面,并将 `priceId` 作为 URL 参数传递。
140
+ - 使用 `priceId` 与支付服务后端创建一个结账会话,然后打开一个支付表单。
@@ -0,0 +1,71 @@
1
+ # UIコンポーネント
2
+
3
+ `@blocklet/payment-react` ライブラリは、支払いおよびチェックアウトインターフェースを構築する際に最大限の柔軟性を提供するために設計された、一連のきめ細かいUIコンポーネントを提供します。フロー全体をカプセル化する高レベルの[チェックアウトコンポーネント](./components-checkout.md)とは異なり、これらのコンポーネントはカスタムユーザーエクスペリエンスを作成するためのビルディングブロックです。
4
+
5
+ これらのコンポーネントは、既存のアプリケーションレイアウトに支払い機能を統合する必要がある場合や、標準のチェックアウトフローが特定の設計要件を満たさない場合に最適です。
6
+
7
+ <x-cards data-columns="3">
8
+ <x-card data-title="PricingTable" data-icon="lucide:layout-list" data-href="/components/ui/pricing-table">
9
+ 構造化されたテーブルでサブスクリプションプランと価格オプションを表示し、ユーザーがプランを選択してチェックアウトに進むことができます。
10
+ </x-card>
11
+ <x-card data-title="PaymentSummary" data-icon="lucide:receipt" data-href="/components/ui/payment-summary">
12
+ チェックアウトフロー内で、明細、合計、試用情報など、注文の詳細な要約を表示します。
13
+ </x-card>
14
+ <x-card data-title="Form Elements" data-icon="lucide:form-input" data-href="/components/ui/form-elements">
15
+ 住所、電話番号、国選択など、カスタムの支払いおよび連絡先情報フォームを構築するための特殊な入力コンポーネントのコレクションです。
16
+ </x-card>
17
+ </x-cards>
18
+
19
+ ## 支払いUIの構成
20
+
21
+ UIコンポーネントは、完全な支払いページを構築するために組み合わせて使用されることを意図しています。これらのコンポーネントのほとんどは、支払い方法や設定などのデータのために支払いコンテキストにアクセスする必要があるため、`PaymentProvider`内でレンダリングする必要があります。
22
+
23
+ 以下は、`PricingTable`と`PaymentSummary`を組み合わせてカスタムチェックアウトページを作成する方法の概念的な例です。
24
+
25
+ ```jsx カスタムチェックアウトページ icon=logos:react
26
+ import { PaymentProvider } from '@blocklet/payment-react';
27
+ import { PricingTable, PaymentSummary } from '@blocklet/payment-react/components';
28
+ // useSessionContext フックは PaymentProvider のドキュメントで定義されています
29
+ import { useSessionContext } from '/path/to/session/context';
30
+
31
+ function CustomCheckoutPage() {
32
+ const { session, connectApi } = useSessionContext();
33
+
34
+ // 実際のアプリケーションでは、このデータをバックエンドから取得します
35
+ const pricingData = { /* ... 価格表データオブジェクト ... */ };
36
+ const selectedItems = [ /* ... ユーザーの選択に基づく明細項目 ... */ ];
37
+ const currency = { /* ... 通貨オブジェクト ... */ };
38
+
39
+ const handleSelect = (priceId, currencyId) => {
40
+ console.log('ユーザーが選択したプラン:', priceId, '通貨:', currencyId);
41
+ // 選択したプランを 'selectedItems' ステートに追加し、UIを更新します
42
+ };
43
+
44
+ return (
45
+ <PaymentProvider
46
+ apiHost={connectApi}
47
+ sessionId={session.user?.did}
48
+ locale="en"
49
+ >
50
+ <div className="checkout-container" style={{ display: 'flex', gap: '2rem' }}>
51
+ <div className="pricing-section" style={{ flex: 2 }}>
52
+ <h2>プランを選択してください</h2>
53
+ <PricingTable table={pricingData} onSelect={handleSelect} />
54
+ </div>
55
+ <div className="summary-section" style={{ flex: 1 }}>
56
+ <h2>注文概要</h2>
57
+ <PaymentSummary items={selectedItems} currency={currency} />
58
+ </div>
59
+ </div>
60
+ </PaymentProvider>
61
+ );
62
+ }
63
+ ```
64
+
65
+ この例では、`PricingTable`と`PaymentSummary`がカスタムページで一緒に使用されています。`PaymentProvider`が全体の構造をラップし、支払い設定とメソッドをすべての子コンポーネントで利用できるようにします。
66
+
67
+ ## 次のステップ
68
+
69
+ UIコンポーネントの役割を理解したところで、各コンポーネントの詳細を掘り下げて、カスタム支払いフローの構築を始めましょう。`PricingTable`から始めることをお勧めします。
70
+
71
+ [PricingTableコンポーネントについて学ぶ &rarr;](./components-ui-pricing-table.md)
@@ -0,0 +1,71 @@
1
+ # UI 元件
2
+
3
+ `@blocklet/payment-react` 函式庫提供了一組細粒度的 UI 元件,旨在為您在建構支付和結帳介面時提供最大的靈活性。與封裝整個流程的高階 [結帳元件](./components-checkout.md) 不同,這些元件是建立自訂使用者體驗的基礎。
4
+
5
+ 當您需要將支付功能整合到現有應用程式佈局中,或者當標準結帳流程不符合您的特定設計要求時,這些元件是理想的選擇。
6
+
7
+ <x-cards data-columns="3">
8
+ <x-card data-title="PricingTable" data-icon="lucide:layout-list" data-href="/components/ui/pricing-table">
9
+ 在結構化表格中顯示訂閱方案和定價選項,允許使用者選擇方案並繼續結帳。
10
+ </x-card>
11
+ <x-card data-title="PaymentSummary" data-icon="lucide:receipt" data-href="/components/ui/payment-summary">
12
+ 在結帳流程中顯示訂單的詳細摘要,包括項目、總計和試用資訊。
13
+ </x-card>
14
+ <x-card data-title="Form Elements" data-icon="lucide:form-input" data-href="/components/ui/form-elements">
15
+ 一系列專門的輸入元件,用於建構自訂的支付和聯絡資訊表單,例如地址、電話和國家選擇。
16
+ </x-card>
17
+ </x-cards>
18
+
19
+ ## 組成您的支付 UI
20
+
21
+ UI 元件旨在組合在一起以建構一個完整的支付頁面。這些元件大多需要存取支付上下文以獲取支付方式和設定等資料,因此它們必須在 `PaymentProvider` 內進行渲染。
22
+
23
+ 以下是一個概念性範例,說明如何結合 `PricingTable` 和 `PaymentSummary` 來建立一個自訂結帳頁面。
24
+
25
+ ```jsx A Custom Checkout Page icon=logos:react
26
+ import { PaymentProvider } from '@blocklet/payment-react';
27
+ import { PricingTable, PaymentSummary } from '@blocklet/payment-react/components';
28
+ // useSessionContext hook 在 PaymentProvider 文件中有定義
29
+ import { useSessionContext } from '/path/to/session/context';
30
+
31
+ function CustomCheckoutPage() {
32
+ const { session, connectApi } = useSessionContext();
33
+
34
+ // 在實際應用中,您會從後端獲取此資料
35
+ const pricingData = { /* ... pricing table data object ... */ };
36
+ const selectedItems = [ /* ... line items based on user selection ... */ ];
37
+ const currency = { /* ... currency object ... */ };
38
+
39
+ const handleSelect = (priceId, currencyId) => {
40
+ console.log('使用者選擇的方案:', priceId, '使用的貨幣:', currencyId);
41
+ // 將所選方案新增到 'selectedItems' 狀態並更新 UI
42
+ };
43
+
44
+ return (
45
+ <PaymentProvider
46
+ apiHost={connectApi}
47
+ sessionId={session.user?.did}
48
+ locale="en"
49
+ >
50
+ <div className="checkout-container" style={{ display: 'flex', gap: '2rem' }}>
51
+ <div className="pricing-section" style={{ flex: 2 }}>
52
+ <h2>選擇您的方案</h2>
53
+ <PricingTable table={pricingData} onSelect={handleSelect} />
54
+ </div>
55
+ <div className="summary-section" style={{ flex: 1 }}>
56
+ <h2>訂單摘要</h2>
57
+ <PaymentSummary items={selectedItems} currency={currency} />
58
+ </div>
59
+ </div>
60
+ </PaymentProvider>
61
+ );
62
+ }
63
+ ```
64
+
65
+ 在這個範例中,`PricingTable` 和 `PaymentSummary` 在一個自訂頁面上一起使用。`PaymentProvider` 包裹了整個結構,使得支付設定和方法對所有子元件都可用。
66
+
67
+ ## 下一步
68
+
69
+ 現在您已經了解了 UI 元件的作用,請深入了解每個元件的具體細節,開始建構您的自訂支付流程。我們建議從 `PricingTable` 開始。
70
+
71
+ [了解 PricingTable 元件 &rarr;](./components-ui-pricing-table.md)
@@ -0,0 +1,71 @@
1
+ # UI 组件
2
+
3
+ `@blocklet/payment-react` 库提供了一套粒度化的 UI 组件,旨在为您在构建支付和结账界面时提供最大的灵活性。与封装了整个流程的高级[结账组件](./components-checkout.md)不同,这些组件是用于创建自定义用户体验的构建块。
4
+
5
+ 当您需要将支付功能集成到现有应用程序布局中,或者当标准结账流程不满足您的特定设计要求时,这些组件是理想的选择。
6
+
7
+ <x-cards data-columns="3">
8
+ <x-card data-title="PricingTable" data-icon="lucide:layout-list" data-href="/components/ui/pricing-table">
9
+ 在一个结构化的表格中显示订阅计划和价格选项,允许用户选择一个计划并继续结账。
10
+ </x-card>
11
+ <x-card data-title="PaymentSummary" data-icon="lucide:receipt" data-href="/components/ui/payment-summary">
12
+ 在结账流程中显示订单的详细摘要,包括订单项、总计和试用信息。
13
+ </x-card>
14
+ <x-card data-title="Form Elements" data-icon="lucide:form-input" data-href="/components/ui/form-elements">
15
+ 一组专门用于构建自定义支付和联系信息表单的输入组件,例如地址、电话和国家/地区选择。
16
+ </x-card>
17
+ </x-cards>
18
+
19
+ ## 组合您的支付 UI
20
+
21
+ UI 组件旨在组合在一起以构建一个完整的支付页面。这些组件中的大多数需要访问支付上下文以获取支付方式和设置等数据,因此它们必须在 `PaymentProvider` 中渲染。
22
+
23
+ 下面是一个概念性示例,说明如何结合 `PricingTable` 和 `PaymentSummary` 来创建一个自定义结账页面。
24
+
25
+ ```jsx 一个自定义结账页面 icon=logos:react
26
+ import { PaymentProvider } from '@blocklet/payment-react';
27
+ import { PricingTable, PaymentSummary } from '@blocklet/payment-react/components';
28
+ // useSessionContext 钩子在 PaymentProvider 文档中有定义
29
+ import { useSessionContext } from '/path/to/session/context';
30
+
31
+ function CustomCheckoutPage() {
32
+ const { session, connectApi } = useSessionContext();
33
+
34
+ // 在实际应用中,您会从后端获取这些数据
35
+ const pricingData = { /* ... 定价表数据对象 ... */ };
36
+ const selectedItems = [ /* ... 基于用户选择的订单项 ... */ ];
37
+ const currency = { /* ... 货币对象 ... */ };
38
+
39
+ const handleSelect = (priceId, currencyId) => {
40
+ console.log('用户选择的计划:', priceId, '使用的货币:', currencyId);
41
+ // 将所选计划添加到 'selectedItems' 状态并更新 UI
42
+ };
43
+
44
+ return (
45
+ <PaymentProvider
46
+ apiHost={connectApi}
47
+ sessionId={session.user?.did}
48
+ locale="en"
49
+ >
50
+ <div className="checkout-container" style={{ display: 'flex', gap: '2rem' }}>
51
+ <div className="pricing-section" style={{ flex: 2 }}>
52
+ <h2>选择您的计划</h2>
53
+ <PricingTable table={pricingData} onSelect={handleSelect} />
54
+ </div>
55
+ <div className="summary-section" style={{ flex: 1 }}>
56
+ <h2>订单摘要</h2>
57
+ <PaymentSummary items={selectedItems} currency={currency} />
58
+ </div>
59
+ </div>
60
+ </PaymentProvider>
61
+ );
62
+ }
63
+ ```
64
+
65
+ 在这个例子中,`PricingTable` 和 `PaymentSummary` 在一个自定义页面上一起使用。`PaymentProvider` 包装了整个结构,使支付设置和方法对所有子组件都可用。
66
+
67
+ ## 下一步
68
+
69
+ 现在您已经了解了 UI 组件的作用,接下来请深入了解每个组件的具体信息,开始构建您的自定义支付流程。我们建议从 `PricingTable` 开始。
70
+
71
+ [了解 PricingTable 组件 &rarr;](./components-ui-pricing-table.md)
@@ -0,0 +1,122 @@
1
+ # コンポーネント
2
+
3
+ `@blocklet/payment-react` ライブラリは、支払い、サブスクリプション、寄付機能の開発を加速するために設計された、事前に構築されたReactコンポーネントの包括的なスイートを提供します。これらのコンポーネントは、完全なドロップインソリューションが必要な場合でも、カスタムエクスペリエンスを構築するためのきめ細かいUI要素が必要な場合でも、適切なツールを見つけやすいように分類されています。
4
+
5
+ すべてのコンポーネントは、状態管理とAPI通信を処理する `PaymentProvider` コンテキスト内でシームレスに動作するように設計されています。
6
+
7
+ ## コンポーネントアーキテクチャ
8
+
9
+ 次の図は、高レベルのコンポーネントが通常どのように相互作用するかを示しています。`CheckoutTable` や `CheckoutDonate` のようなユーザー向けのコンポーネントがエントリーポイントとして機能し、その後、コアの `CheckoutForm` を利用して最終的な支払い処理を行います。
10
+
11
+ ```d2
12
+ direction: down
13
+
14
+ User: {
15
+ shape: c4-person
16
+ }
17
+
18
+ PaymentProvider-Context: {
19
+ label: "PaymentProviderコンテキスト"
20
+ shape: rectangle
21
+ style: {
22
+ stroke: "#888"
23
+ stroke-width: 2
24
+ stroke-dash: 4
25
+ }
26
+
27
+ Entry-Points: {
28
+ label: "高レベルコンポーネント"
29
+ shape: rectangle
30
+
31
+ CheckoutTable: {
32
+ label: "CheckoutTable"
33
+ }
34
+
35
+ CheckoutDonate: {
36
+ label: "CheckoutDonate"
37
+ }
38
+ }
39
+
40
+ Core-Processor: {
41
+ label: "コア支払いプロセッサ"
42
+ shape: rectangle
43
+
44
+ CheckoutForm: {
45
+ label: "CheckoutForm"
46
+ }
47
+ }
48
+ }
49
+
50
+ User -> PaymentProvider-Context.Entry-Points.CheckoutTable: "プランを選択"
51
+ User -> PaymentProvider-Context.Entry-Points.CheckoutDonate: "寄付を行う"
52
+ PaymentProvider-Context.Entry-Points.CheckoutTable -> PaymentProvider-Context.Core-Processor.CheckoutForm: "チェックアウトを開始"
53
+ PaymentProvider-Context.Entry-Points.CheckoutDonate -> PaymentProvider-Context.Core-Processor.CheckoutForm: "チェックアウトを開始"
54
+ ```
55
+
56
+ ## コンポーネントカテゴリ
57
+
58
+ コンポーネントカテゴリを調べて、必要な構成要素を見つけてください。
59
+
60
+ ### チェックアウトコンポーネント
61
+
62
+ これらは、すぐに使える完全な支払い体験を提供する高レベルのコンポーネントです。支払いフローの主要なエントリーポイントとして使用してください。
63
+
64
+ <x-cards>
65
+ <x-card data-title="CheckoutForm" data-icon="lucide:credit-card" data-href="/components/checkout/checkout-form">
66
+ 支払いリンクとチェックアウトセッションを処理するための主要コンポーネント。
67
+ </x-card>
68
+ <x-card data-title="CheckoutTable" data-icon="lucide:table" data-href="/components/checkout/checkout-table">
69
+ 完全な価格表をレンダリングし、チェックアウトフローを処理します。
70
+ </x-card>
71
+ <x-card data-title="CheckoutDonate" data-icon="lucide:heart-handshake" data-href="/components/checkout/checkout-donate">
72
+ この柔軟なコンポーネントで寄付機能を実装します。
73
+ </x-card>
74
+ </x-cards>
75
+
76
+ ### UIコンポーネント
77
+
78
+ カスタムの支払いフォームや表示を構築するためのきめ細かいコンポーネントのコレクション。これらのブロックを組み合わせて、アプリケーションの設計に完全に一致するユーザーインターフェースを作成します。
79
+
80
+ <x-cards>
81
+ <x-card data-title="PricingTable" data-icon="lucide:layout-list" data-href="/components/ui/pricing-table">
82
+ サブスクリプションプランと価格オプションを構造化されたテーブルに表示します。
83
+ </x-card>
84
+ <x-card data-title="PaymentSummary" data-icon="lucide:receipt" data-href="/components/ui/payment-summary">
85
+ 品目と合計を含む注文の詳細な概要を表示します。
86
+ </x-card>
87
+ <x-card data-title="Form Elements" data-icon="lucide:pencil-ruler" data-href="/components/ui/form-elements">
88
+ カスタムの支払いフォームや連絡先フォームを構築するための一連の入力。
89
+ </x-card>
90
+ </x-cards>
91
+
92
+ ### ビジネスロジックコンポーネント
93
+
94
+ 延滞請求書の管理、サブスクリプションの再開、自動クレジットトップアップの設定など、複雑なビジネスワークフローを処理するために設計された専用コンポーネント。
95
+
96
+ <x-cards>
97
+ <x-card data-title="OverdueInvoicePayment" data-icon="lucide:file-warning" data-href="/components/business/overdue-invoice-payment">
98
+ 顧客またはサブスクリプションの延滞請求書の支払いを処理します。
99
+ </x-card>
100
+ <x-card data-title="ResumeSubscription" data-icon="lucide:play-circle" data-href="/components/business/resume-subscription">
101
+ ユーザーがキャンセルしたサブスクリプションを簡単に再開できるようにします。
102
+ </x-card>
103
+ <x-card data-title="Auto-Topup Components" data-icon="lucide:battery-charging" data-href="/components/business/auto-topup">
104
+ 自動クレジットトップアップ機能を管理および設定します。
105
+ </x-card>
106
+ </x-cards>
107
+
108
+ ### 履歴コンポーネント
109
+
110
+ 過去の支払いおよびクレジットデータをユーザーに表示します。これらのコンポーネントを使用すると、請求書、支払い、およびクレジット取引のリストを簡単にレンダリングできます。
111
+
112
+ <x-cards>
113
+ <x-card data-title="CustomerInvoiceList" data-icon="lucide:history" data-href="/components/history/invoice-list">
114
+ 詳細とステータスを含む顧客の請求書リストをレンダリングします。
115
+ </x-card>
116
+ <x-card data-title="CustomerPaymentList" data-icon="lucide:landmark" data-href="/components/history/payment-list">
117
+ 取引詳細を含む顧客の支払い履歴を表示します。
118
+ </x-card>
119
+ <x-card data-title="CreditGrantsList" data-icon="lucide:award" data-href="/components/history/credit-grants-list">
120
+ ステータスと残額を含むクレジット付与のリストを表示します。
121
+ </x-card>
122
+ </x-cards>