Kinde Billing 的实际运作方式
如果你曾经为 SaaS 应用设置过计费系统,你肯定深有体会:你埋头在 Stripe 的控制面板里,忙着处理 Webhook、同步订阅数据,还要想方设法把所有东西和你的身份验证及基于角色的访问控制 (RBAC) 系统勉强拼凑在一起。这虽然可行,但谈不上优雅。
Kinde 则有不同的想法:你正在开发一款产品——计费系统应该能够正常运行。
想象一下,如果你的计费系统像身份识别系统一样运作,定价、访问权限和身份验证都集中在一个地方?
这正是Kinde Billing试图解决的问题。它是在 Kinde 备受好评的身份验证平台之上新增的一层——虽然仍处于早期阶段,但它的构建目标非常明确:让计费功能与你正在构建的产品浑然一体。
我正在使用它来驱动 Learnflow AI(我正在开发的一款 AI 语音导师工具),在这篇文章中,我将带你了解 Kinde Billing 的工作原理——目前可以实现的功能、它与 Stripe 的区别、它仍在追赶的方面,以及我对它的真实看法。
那么,什么是 Kinde Billing?
Kinde 以开发者优先的身份验证、授权、团队角色、基于角色的访问控制 (RBAC) 等功能而闻名。
但上个月,他们推出了一项新功能:一个运行在同一平台内的计费引擎。
这意味着您现在可以定义定价方案、订阅用户、限制功能,甚至让客户管理他们的账单——所有这些都无需直接接触 Stripe 的用户界面。
没错,它底层仍然使用Stripe。但你无需费力处理 Stripe 的整个 schema(以及你自己的 schema)。Kinde 会处理这些繁琐的部分,并为你提供一个简洁的、以开发为先的底层界面。
身份验证和支付将成为您产品身份架构的一部分,为您带来以下优势:
- 计划管理(固定费用或按使用量计费)
- 客户订阅
- 审判处理
- 托管式客户门户
- 集成功能授权
- 用于计费生命周期事件的 Webhook
- 严格的基于角色的访问控制 (RBAC) + 计费同步(Kindle 原生支持)
简而言之:您可以使用 Kinde 构建登录、团队访问、功能限制和支付计划。
这为什么重要?
大多数开发者把计费功能当作额外的开发工作。只有在准备向用户收费时才会添加计费功能,然后祈祷它不会破坏任何东西。
Kinde 完全颠覆了这种观念。它将计费视为产品身份层的核心组成部分——并非独立于身份验证之外的东西,而是应该与之并存。
这带来了三个非常实际的好处:
- 更少的活动部件——无需再拼接 Stripe、自定义身份验证和您自己的功能标志系统。
- 更清晰的逻辑——计费状态和功能访问权限位于同一个用户对象中。
- 构建速度更快——配置更少,极端情况更少,出错的机会也更少。
核心构建模块(Kinde计费模式)
让我们来详细了解一下 Kinde Billing 的主要组成部分:
1.用户 = 客户
当用户使用 Kinde Auth 登录您的应用时,他们的身份会立即与支付账户绑定。无需在不同系统间同步。用户从访问您的应用的那一刻起,就成为了您的客户。
2. 付款计划
在 Kinde 上创建套餐只需点击几下。登录您的控制面板,点击侧边栏的“账单”,然后按照本指南中的详细说明操作:https://docs.kinde.com/billing/manage-plans/create-plans
您可以创建“免费”、“专业”或“团队”等方案。
每个方案都可能包含:
- 固定月费(通过 Stripe 收取)
- 按用量收费(计量、按单位)
- 权益(功能)
注意:目前 Kinde仅支持按月付费。年度套餐和试用版已列入开发计划,但尚未推出。
3.客户门户(托管)
想让用户自行管理账单?没问题。
您可以使用 Kinde React SDK 生成门户 URL:
import { PortalLink } from "@kinde-oss/kinde-auth-react";
<PortalLink>Manage Billing</PortalLink>
您的用户可以更改套餐、更新帐户和付款详情。
目前,用户无法通过自助服务门户取消订阅。要了解有关如何在您的应用程序中实现此功能的更多信息,请阅读此链接:https://docs.kinde.com/billing/manage-plans/cancel-plans。
4.权利
这是 Kinde 的一项强大功能:权限/功能访问权限会自动与用户的计费方案绑定,并且可以随用户会话自动获取,使您能够编写如下逻辑:
import { useEffect, useState } from "react";
import { useKindeAuth } from "@kinde-oss/kinde-auth-react";
import PageLoader from "@/components/page-loader";
interface Plan {
key: string;
}
interface EntitlementsData {
data: {
plans: Plan[];
org_code: string;
};
}
const { isAuthenticated, getAccessTokenRaw } = useKindeAuth();
const [entitlements, setEntitlements] = useState<EntitlementsData | null>(null);
if (!isAuthenticated) {
return <PageLoader />;
}
useEffect(() => {
const fetchEntitlements = async () => {
const accessToken = await getAccessTokenRaw();
try {
const res = await fetch(`${process.env.NEXT_PUBLIC_KINDE_ISSUER_URL}/account_api/v1/entitlements`, {
headers: {
Authorization: `Bearer ${accessToken}`,
},
cache: "no-store",
});
const data = await res.json();
setEntitlements(data as EntitlementsData);
} catch (error) {
console.error("Error fetching entitlements:", error);
}
};
fetchEntitlements();
}, [getAccessTokenRaw]);
const hasEntitlement = (entitlementKey: string): boolean => {
if (!entitlements?.data?.plans) return false;
return entitlements.data.plans.some((plan: Plan) =>
plan.key === entitlementKey
);
};
if (hasEntitlement("ai_voice_mode")) {
// User has the ai_voice_mode entitlement
}
无需手动同步或设置任何标记逻辑。如果用户拥有其套餐的访问权限,则该权限已存在。
5.计费事件的 Webhook
需要为计费事件添加自定义逻辑吗?Kinde 会发出与计费相关的事件(例如,订阅创建、付款失败等)。
您可以通过 Kinde 控制面板注册 Webhook。访问“设置”>“Webhook”:
所有事件均使用已签名的 JWT。免费套餐包含 1 个 webhook;付费套餐包含无限个 webhook。
实际应用:Learnflow AI
我目前正在开发一款 SaaS 应用,其中使用了 Kinde Billing;这款应用名为 Learnflow AI,是一款对话式人工智能,可以帮助开发者通过语音学习复杂的主题。
为此,我需要:
- 电子邮件/密码验证
- 新用户可免费试用
- 升级到“专业版”的方法
- 功能限制(以便专业版用户获得更多访问权限)
用 Kinde,我不到一个小时就搭建好了这一切。无需设置 Stripe 控制面板,也无需编写后端功能逻辑。只需几个 API 调用,就上线了。
说实话,这是我第一次感觉计费是产品的一部分,而不仅仅是另一个集成功能。
何时应该使用 Kinde Billing?
说实话,Kinde Billing 并非适用于所有场景。如果您需要高级税务逻辑、国际定价或基于试用的营销流程,您可能需要再等等。
不过,在以下几种情况下,Kinde Billing最为适用:
- 您正在构建一个 SaaS 或 AI 工具,并希望在一个地方处理身份验证和计费。
- 您正在推出最小可行产品 (MVP),并且不想管理 3-4 个第三方服务
- 您重视开发者体验和速度
- 您希望功能访问权限与付费等级挂钩。
那么,选择金德是毋庸置疑的。
它非常适合:
- 独立黑客
- 个体经营者
- 黑客马拉松团队
- MVP发布
- 内部B2B工具
Stripe 与 Kinde:快速对比
| 特征 | 条纹 | 善良 |
|---|---|---|
| 授权与计费 | ❌ 分开 | ✅ 统一 |
| 权利 | ❌ 手动 | ✅ 内置 |
| 月度账单 | ✅ | ✅ |
| 年度账单 | ✅ | ❌ 尚未 |
| 试用支持 | ✅ | ❌ 尚未 |
| 自助服务门户 | ✅ | ✅ |
| RBAC 集成 | ❌ 外部 | ✅ 原生 |
| 实际设置时间 | 🛠️ 1-2天 | ⚡约1小时 |
最后想说的话
计费不再是产品发布后的任务,而是用户体验产品的重要组成部分。
借助 Kinde,计费成为身份管理层的延伸,而非事后添加的功能。它就像原本就应该存在的那样,与身份验证、角色和访问控制并驾齐驱。
你编写的代码更少,开发速度更快,遇到的极端情况错误也更少。
它目前还不完美。但如果您正在构建新的系统,并且速度至关重要,那么这可能是最简单的方法,让您在一个下午就能上线真正的计费逻辑。
你怎么认为?
如果你正在使用 Kindle 进行开发,或者正在考虑尝试他们的新计费功能,我很想听听你的想法:
- 您是否已将 Kinde Billing 集成到您自己的应用程序中?
- 哪些方面做得好?哪些方面可以改进?
- 你希望它具备哪些功能?
- 就您的使用场景而言,它与 Stripe、LemonSqueezy 或 Paddle 相比如何?
请在下方留言——我会阅读并回复每一条留言!
如果您也想亲自体验一下,不妨前往Kinde Billing 网站,探索它的强大功能。您或许会惊讶于它能如何简化您的工作流程。
文章来源:https://dev.to/sholajgede/how-kinde-billing-actually-works-8fc




