跳到主要内容

UI 组件

@blocklet/payment-react 库提供了一套粒度化的 UI 组件,旨在为您在构建支付和结账界面时提供最大的灵活性。与封装了整个流程的高级结账组件不同,这些组件是用于创建自定义用户体验的构建块。

@blocklet/payment-react 库提供了一套粒度化的 UI 组件,旨在为您在构建支付和结账界面时提供最大的灵活性。与封装了整个流程的高级结账组件不同,这些组件是用于创建自定义用户体验的构建块。

当您需要将支付功能集成到现有应用程序布局中,或者当标准结账流程不满足您的特定设计要求时,这些组件是理想的选择。

组合您的支付 UI

UI 组件旨在组合在一起以构建一个完整的支付页面。这些组件中的大多数需要访问支付上下文以获取支付方式和设置等数据,因此它们必须在 PaymentProvider 中渲染。

下面是一个概念性示例,说明如何结合 PricingTablePaymentSummary 来创建一个自定义结账页面。

一个自定义结账页面

jsx
import { PaymentProvider } from '@blocklet/payment-react';
import { PricingTable, PaymentSummary } from '@blocklet/payment-react/components';
// useSessionContext 钩子在 PaymentProvider 文档中有定义
import { useSessionContext } from '/path/to/session/context';

function CustomCheckoutPage() {
  const { session, connectApi } = useSessionContext();

  // 在实际应用中,您会从后端获取这些数据
  const pricingData = { /* ... 定价表数据对象 ... */ };
  const selectedItems = [ /* ... 基于用户选择的订单项 ... */ ];
  const currency = { /* ... 货币对象 ... */ };

  const handleSelect = (priceId, currencyId) => {
    console.log('用户选择的计划:', priceId, '使用的货币:', currencyId);
    // 将所选计划添加到 'selectedItems' 状态并更新 UI
  };

  return (
    <PaymentProvider
      apiHost={connectApi}
      sessionId={session.user?.did}
      locale="en"
    >
      <div className="checkout-container" style={{ display: 'flex', gap: '2rem' }}>
        <div className="pricing-section" style={{ flex: 2 }}>
          <h2>选择您的计划</h2>
          <PricingTable table={pricingData} onSelect={handleSelect} />
        </div>
        <div className="summary-section" style={{ flex: 1 }}>
          <h2>订单摘要</h2>
          <PaymentSummary items={selectedItems} currency={currency} />
        </div>
      </div>
    </PaymentProvider>
  );
}

在这个例子中,PricingTablePaymentSummary 在一个自定义页面上一起使用。PaymentProvider 包装了整个结构,使支付设置和方法对所有子组件都可用。

下一步

现在您已经了解了 UI 组件的作用,接下来请深入了解每个组件的具体信息,开始构建您的自定义支付流程。我们建议从 PricingTable 开始。