获取API密钥

创建Polar账户后,您需要获取API密钥。您可以前往仪表板的API页面获取。在这里您会找到Secret keyPublishable key。集成需要使用Secret key

添加环境变量

要使用Polar集成,您需要在.env.local和生产环境中定义以下环境变量:

.env.local
POLAR_ACCESS_TOKEN=""
POLAR_WEBHOOK_SECRET=""
POLAR_ENV="" // 如果使用沙盒环境请设置为'sandbox',否则使用'production'或省略此参数

应用内购买

您可以通过导入polar对象在应用中的任何地方使用Polar:

page.tsx
import { polar } from '@repo/payments';

创建结账会话

我们需要创建一个结账会话来向用户收费,您只需修改部分代码。这包含两部分:

  • 客户端

/api/polar/checkout端点发送创建会话的请求。

apps/web/[locale]/components/payment/price-form.tsx
      const response = await fetch('/api/polar/checkout', { // 改为`/api/polar/checkout`
        method: 'POST',
        body: JSON.stringify({
          priceId: item.priceId,
          interval: item.interval,
        }),
      });
  • 服务端

apps/web/api/polar/checkout/route.ts中实现业务逻辑

Webhook

创建 Webhook

要配置新的 Webhook,请前往 Polar 控制台的 Webhooks 页面。点击“添加端点”按钮,并至少选择以下事件:

对于订阅:

  • subscription.created
  • subscription.updated
  • subscription.canceled

对于一次性支付:

  • order.created

Webhook 处理器

Stripe 的 Webhook 在 apps/api 应用的 POST /webhooks/polar 路由中处理。该路由会构建事件,然后根据事件类型来决定如何处理该事件。

我们已经为您实现了 Webhook 处理器的基本结构。您可以根据需要进行修改。