Lemon Squeezy 是一个用于运行SaaS业务的一体化平台。它处理支付、订阅、全球税务合规、欺诈预防、多货币等功能。以下是如何将默认支付处理器从Stripe切换到Lemon Squeezy的方法。

获取API密钥

创建Lemonsqueezy账户后,您需要获取API密钥。您可以通过访问仪表板中的API页面来获取。在这里您将找到Secret keyPublishable key。您需要Secret key来完成集成。

添加环境变量

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

.env.local
LEMON_SQUEEZY_API_KEY=
LEMON_SQUEEZY_WEBHOOK_SECRET=

应用内购买

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

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

创建结账会话

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

  • 客户端

它发送请求到/api/lemonsqueezy/checkout端点来创建会话。

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

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

Lemonsqueezy允许使用产品的购买链接,而无需通过API创建结账会话。

Webhook

创建Webhook

要配置新的Webhook,请前往Lemonsqueezy仪表板中的Webhook页面。点击“添加端点”按钮,并至少选择以下事件:

对于订阅:

  • subscription_created
  • subscription_updated
  • subscription_cancelled

对于一次性付款:

  • order_created

您还需要输入一个签名密钥,您可以在终端中运行以下命令来获取:

Terminal
openssl rand -base64 32

Webhook处理器

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

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