# 如何为 AI 应用添加预付费计费

> 分步指南：为 AI 应用实现预付费计费。使用 Dodo Payments，让用户购买预付额度包，并按 API 调用或生成次数消耗预付额度。
- **Author**: Ayush Agarwal
- **Published**: 2026-03-25
- **Category**: Payments, AI, How-To
- **URL**: https://dodopayments.com/blogs/zh/add-credits-billing-ai-app

---

要将预付额度计费添加到 AI 应用中，你需要四个部分：将每项 AI 操作映射到预付额度成本的预付额度经济模型、支付服务商中的一次性预付额度包产品、在购买后增加用户余额的 webhook，以及在每次生成前运行的扣除步骤。其他所有功能，包括自动充值和低余额提示，都建立在这四个部分之上。

你的 AI 应用会在每次请求中消耗 token。无论你调用的是 OpenAI、Anthropic，还是在 H100 上运行自己的 Llama 3 实例，每次生成都会产生直接的边际成本。固定订阅在这里往往效果不佳：要么让几乎不使用应用的轻度用户付出过高价格，要么让生成数千张图片或数百万个 token 的重度用户导致亏损。

预付费计费能让你的成本与使用量保持一致，同时让用户完全掌控支出。它是 2026 年 AI 应用最受欢迎的计费模式，因为它解决了"重度用户"问题，又不会吓退只是随便体验的用户。通过销售预付额度包，你可以将可变成本转化为可预测收入，并为客户建立清晰的价值交换关系。

在本指南中，我们将详细介绍如何使用 Dodo Payments 为你的 AI 应用实现稳健的预付费计费系统。内容涵盖从定义预付额度经济模型，到处理 webhook 和构建低余额 UI 的全部流程。

## 为什么 AI 应用适合使用预付额度？

AI 应用的独特之处在于，其成本结构高度可变。传统 SaaS 中，用户对服务器账单的影响通常微乎其微；而一个 AI 用户在单次会话中就可能让你付出数美元的成本。因此，传统的固定费率定价存在风险。

预付额度在基础设施成本与用户定价之间提供了缓冲。当用户购买 500 个预付额度的套餐时，本质上是在预付一部分特定数量的计算资源。这样，你就不会因某个用户的使用而陷入亏损。它还能防止滥用，因为恶意用户或失控脚本最多只能消耗已经付费的额度。

用户也能直观地理解预付额度。"街机代币"模式很熟悉，可以降低可变定价带来的阻力。用户无需担心"每千个单词消耗多少 token"，只需看到 GPT-4 查询消耗 5 个预付额度，图片生成消耗 10 个预付额度即可。这种透明度能够建立信任，也会鼓励用户探索你的功能，而不用担心月底收到意外账单。

最后，预付额度有助于更好地控制利润率。你可以为不同模型或功能设置不同的预付额度成本。如果推出了更昂贵的新模型，无需修改订阅层级，只需为特定操作设置更高的预付额度成本即可。在快速发展的 AI 领域，这种灵活性至关重要。

## 预付额度经济模型的工作方式

一个成功的预付额度系统由三个主要部分组成：购买、存储和扣除。用户通过结账流程购买预付额度包。你的系统收到通知后，更新数据库中的用户余额。之后，每当用户执行 AI 操作时，你的应用都会检查余额并扣除相应数量。

这种模式会形成良性循环。用户在需要时购买预付额度，而你可以提前收款。当余额不足时，你可以直接在 UI 中触发再次购买提示。对于 AI 工具来说，这种"充值"行为比每月固定账单自然得多，因为后者可能与用户当月的实际需求不匹配。

你还可以将预付额度与订阅结合使用。例如，"Pro"套餐可以每月包含 1,000 个预付额度，并允许用户在提前用完时购买额外的"充值"包。这种混合模式兼具经常性收入的稳定性和按使用量计费的灵活性。

需要注意的是：预付额度是预付余额，不是支付方式。定期扣款仍需要已保存的银行卡或银行授权。这也是个人对个人支付渠道无法用于充值的原因，正如我们的[定期商业付款与 Zelle 指南](https://dodopayments.com/blogs/zelle-recurring-business-payments)所解释的那样。

## 第 1 步：定义你的预付额度经济模型

在编写任何代码之前，你需要决定一个"预付额度"值多少钱。这就是你的预付额度经济模型。你应该设计一个易于用户计算，同时又足够精细、能够覆盖不同成本的系统。

例如，你可以决定 1 个预付额度等于 $0.10 的价值，然后将 AI 操作映射到这个单位：

- 1 个预付额度 = 1 次标准图片生成（Stable Diffusion）
- 5 个预付额度 = 1 次高分辨率图片生成（Flux）
- 2 个预付额度 = 1 次 GPT-4o mini 查询
- 10 个预付额度 = 1 次 GPT-4o 查询

通过将美元金额与操作解耦，你可以在后台调整定价或成本，而不会让用户感到困惑。如果 API 服务商降低价格，你只需为每一美元提供更多预付额度，或降低每项操作的预付额度成本即可。

## 第 2 步：在 Dodo Payments 中创建预付额度包产品

定义好经济模型后，你需要创建用户实际购买的产品。在 Dodo Payments 控制面板中，你可以为预付额度包创建"一次性"产品。

常见层级可能如下：

- 入门包：$10 购买 100 个预付额度
- 能力包：$40 购买 500 个预付额度（优惠 20%）
- Pro 包：$100 购买 1,500 个预付额度（优惠 33%）

创建这些产品时，你可以使用 Dodo 中的[预付费计费](https://docs.dodopayments.com/features/credit-based-billing)功能，直接为产品添加权益。这样，Dodo 可以替你追踪余额；或者，你也可以直接使用购买事件更新自己的内部账本。

## 第 3 步：实现结账流程

要让用户购买预付额度，你可以使用[叠加层结账](https://docs.dodopayments.com/developer-resources/overlay-checkout)。这能提供无缝体验，让用户无需离开应用即可完成付款。

你可以使用 Dodo Payments SDK 触发结账。当用户点击"购买 500 个预付额度"时，你的后端会创建结账会话，并将 URL 或 ID 返回给前端。

```javascript
import DodoPayments from "dodopayments";

const client = new DodoPayments({
  bearerToken: process.env["DODO_PAYMENTS_API_KEY"],
});

const session = await client.checkoutSessions.create({
  product_cart: [
    {
      product_id: "pdt_credit_pack_500",
      quantity: 1,
    },
  ],
  customer: {
    email: user.email,
    name: user.name,
  },
  return_url: "https://dodopayments.com",
});
```

这种集成可以确保你使用的是一个为 AI 提供服务的[MoR（名义商户）](https://dodopayments.com/blogs/merchant-of-record-ai)，由它替你处理全球税务合规和支付路由。你无需担心欧洲的 VAT 或美国的销售税；Dodo 会处理这一切。

## 第 4 步：处理购买 webhook

付款成功后，Dodo Payments 会向你的服务器发送 webhook。这是集成中最关键的部分。你必须监听 `payment.succeeded` 事件，以更新用户余额。

使用 [webhook](https://docs.dodopayments.com/developer-resources/webhooks) 可以确保即使用户在重定向期间关闭浏览器，预付额度仍会添加到其账户中。

```javascript
// webhook 处理程序示例（Node.js/Express）
app.post("/webhooks/dodo", async (req, res) => {
  const event = req.body;

  if (event.type === "payment.succeeded") {
    const { customer_id, product_cart } = event.data;
    const creditProduct = product_cart[0];

    // 将 product_id 映射到预付额度数量
    const creditAmount = getCreditsForProduct(creditProduct.product_id);

    // 更新数据库
    await db.users.update(
      { dodo_customer_id: customer_id },
      { $inc: { credit_balance: creditAmount } },
    );
  }

  res.status(200).send("OK");
});
```

这套逻辑可以确保你的 [API 变现](https://dodopayments.com/blogs/api-monetization)准确且实时。如果你不想在自己的数据库中管理余额，也可以使用 Dodo 内置的预付余额账本。

## 第 5 步：在 AI 请求中扣除预付额度

现在用户已经可以购买预付额度，你需要对余额进行强制管理。每当用户访问你的 AI 端点时，都应检查其余额并扣除相应的操作成本。

一种常见做法是为 AI 调用使用中间件或包装函数。这样可以避免代码重复，并确保每个请求都被计入。

```javascript
async function processAIRequest(userId, actionType, params) {
  const user = await db.users.findById(userId);
  const cost = getCreditCost(actionType);

  if (user.credit_balance < cost) {
    throw new Error("预付额度不足");
  }

  // 先扣除预付额度（悲观锁）
  await db.users.update({ _id: userId }, { $inc: { credit_balance: -cost } });

  try {
    const result = await callAIModel(actionType, params);
    return result;
  } catch (error) {
    // AI 调用失败时退还预付额度
    await db.users.update({ _id: userId }, { $inc: { credit_balance: cost } });
    throw error;
  }
}
```

这种方式对于有效地[实现 AI 变现](https://dodopayments.com/blogs/monetize-ai)至关重要。它可以确保每次成功生成都有对应付款，从而保护你的利润率；如果发生技术错误，也能保障用户权益。

## 第 6 步：可视化预付额度流程

为了帮助团队和利益相关者理解系统，流程图非常有用。它展示了用户、你的应用与 Dodo Payments 之间的交互。

```mermaid
flowchart TD
    A[用户点击购买预付额度] --> B[应用创建 Dodo 结账会话]
    B --> C[用户在叠加层中完成付款]
    C --> D[Dodo 发送 payment.succeeded Webhook]
    D --> E[应用更新数据库中的用户余额]
    E --> F[用户发起 AI 请求]
    F --> G{应用检查余额}
    G -- 余额不足 --> H[显示充值提示]
    G -- 余额充足 --> I[扣除预付额度并调用 AI]
    I --> J[显示结果和新余额]
```

这张图展示了预付额度的完整生命周期，也凸显了[计费 UX](https://dodopayments.com/blogs/billing-ux-usage-caps-alerts)的重要性：在用户彻底用完额度前，提示其进行充值。

## 第 7 步：构建低余额 UI

预付额度系统的体验取决于其用户体验。如果用户因为额度用完而导致请求突然失败，他们会感到沮丧。你应该主动显示余额，并在余额较低时发出提醒。

你可以在导航栏中实现简单的"预付额度条"，或者在余额低于特定阈值时显示 toast 通知。

```javascript
// 低余额提醒的 React 组件
function CreditBalance({ balance }) {
  const isLow = balance < 20;

  return (
    <div className="flex items-center gap-2">
      <span className={isLow ? "font-bold text-red-500" : "text-gray-700"}>
        剩余 {balance} 个预付额度
      </span>
      {isLow && (
        <button
          onClick={openTopUpModal}
          className="rounded bg-lime-400 px-3 py-1 text-sm"
        >
          充值
        </button>
      )}
    </div>
  );
}
```

提供这些[使用上限和提醒](https://dodopayments.com/blogs/billing-ux-usage-caps-alerts)是任何[按使用量计费的 SaaS](https://dodopayments.com/blogs/usage-based-billing-saas)都应遵循的最佳实践。它能让用户了解情况，并减少与"丢失"预付额度或请求失败有关的支持工单。

## 高级预付额度策略

掌握基础功能后，你可以实施更高级的策略，以提高留存率和收入。

### 自动充值

有些用户不想每次用完预付额度后都手动购买。你可以提供"自动充值"功能：当余额达到某个阈值时，应用会自动购买指定的套餐。这需要保存用户的支付方式，Dodo 会安全地处理这一过程。

### 预付额度到期

为了鼓励使用并管理长期负债，你可以为预付额度设置有效期。例如，预付额度可以在购买 12 个月后到期。这是许多行业的常见做法，但务必向用户清楚说明，以免造成不满。

### 赠送与推荐

预付额度是促进增长的绝佳工具。你可以向新用户赠送 50 个免费预付额度，让他们试用应用；也可以向成功推荐朋友的用户赠送 100 个预付额度。由于预付额度对你的成本是固定的，与提供"订阅免费一个月"相比，计算这些营销活动的 ROI 要容易得多。

### 将预付额度作为代理预算

如果你的应用是由自主代理调用，而不是由用户点击按钮调用，那么预付额度池还可以充当支出护栏。代理只能消耗不超过余额的额度，相比直接向它提供已保存的银行卡，这是一种更安全的默认方式。我们的[代理商务概览](https://dodopayments.com/blogs/agentic-commerce)介绍了组织如何按代理或团队划分这些额度池。

对于从不创建账户的完全匿名机器调用方，[x402 协议](https://dodopayments.com/blogs/x402-protocol)提供了另一种互补路径：通过 HTTP 402 报价，并按请求结算，而不是预售余额。

### 混合订阅模式

如前所述，将预付额度与订阅结合，是[实现按使用量计费](https://dodopayments.com/blogs/implement-usage-based-billing)的有效方式。你可以提供每月 $10、包含 100 个预付额度的"Basic"套餐，以及每月 $50、包含 1,000 个预付额度的"Pro"套餐。超出部分则通过一次性预付额度包购买处理。这样，你可以兼得经常性收入和无限增长空间。

## 使用预付额度管理现金流

预付费计费最大的优势之一，是它对现金流的影响。由于用户会提前支付预付额度费用，你可以在向 AI 服务商支付 token 费用之前收到现金。这种"负现金转换周期"是成长型初创公司的巨大优势。

你可以在我们的[计费预付额度与现金流](https://dodopayments.com/blogs/billing-credits-pricing-cashflow)文章中进一步了解这对业务的影响。通过提前收取收入，你可以将资金重新投入增长或产品开发，速度远快于等待月底发票的公司。

## 选择合适的 AI 定价模式

虽然预付额度非常适合许多 AI 应用，但它并不是唯一选择。根据目标受众，你也可以考虑纯按使用量计费（按量付费）或分层订阅。

我们详细分析了不同的 [AI 定价模式](https://dodopayments.com/blogs/ai-pricing-models)，帮助你决定哪一种最适合你的产品。通常，预付额度是 B2C 和专业消费者工具的最佳折中方案，而开发者和企业 API 用户往往更偏好纯按使用量计费。

## 集成 Dodo Payments SDK

为了进一步简化实现，你应该使用官方 [Dodo Payments SDK](https://docs.dodopayments.com/developer-resources/dodo-payments-sdks)。它们提供类型安全的方法，用于创建结账会话、管理客户和处理 webhook。

无论你使用 Node.js、Python 还是 Go 构建应用，SDK 都会处理 API 身份验证和请求格式化等复杂工作。这样，你可以专注于 AI 逻辑，而不必操心计费系统的底层工作。

## 结语

为 AI 应用添加预付费计费，是保护利润率并改善用户体验的战略举措。按照本指南中的步骤操作，你可以构建一个可扩展、透明且盈利能力强的系统。

Dodo Payments 提供了[如何接受在线付款](https://dodopayments.com/blogs/how-to-accept-online-payments)所需的基础设施，让你能够在全球开展业务，而不必为税务合规而烦恼。借助我们的[按使用量计费](https://docs.dodopayments.com/features/usage-based-billing/introduction)和[预付费计费](https://docs.dodopayments.com/features/credit-based-billing)功能，你可以充满信心地推出 AI 产品。

准备好开始实现 AI 应用变现了吗？立即[注册 Dodo Payments](https://dodopayments.com)，几分钟内即可上线你的第一个预付额度包。

## 常见问题

### 如何处理未使用预付额度的退款？

你可以直接通过 Dodo Payments 控制面板处理预付额度退款。你可以选择退还整笔购买金额或部分金额。退款处理完成后，你应监听 `refund.succeeded` webhook，并从数据库中的用户余额扣除相应预付额度，以确保数据同步。

### 可以将预付额度设置为永不过期吗？

可以。你可以在 Dodo Payments 中配置预付额度权益，使其没有到期日。这通常是对用户最友好的方式，因为它消除了"要么使用，要么作废"的压力。不过，一些企业更倾向于设置有效期，以便管理长期财务负债。具体选择取决于你的业务模式和客户预期。

### 如果用户的 AI 请求在扣除预付额度后失败，会发生什么？

你应始终在应用代码中实现"失败退款"逻辑。如代码示例所示，你可以将 AI 调用放在 try-catch 代码块中。如果 AI 模型返回错误或超时，应立即将用户的预付额度余额恢复到之前的状态。这样可以确保用户只为成功的生成付费。

### 如何防止用户钻预付额度系统的漏洞？

防止滥用的最佳方式，是在扣除预付额度时使用数据库悲观锁。这意味着你要在开始成本高昂的 AI 生成之前扣除预付额度。如果在生成之后才扣除，用户可能在余额归零前同时发起数百个请求。提前扣除可以确保用户永远不会超出已支付的额度上限。

### 可以为不同功能提供不同类型的预付额度吗？

当然可以。Dodo Payments 支持为同一客户创建多个预付额度权益。你可以为图片生成器设置"图片预付额度"，为聊天机器人设置"文本预付额度"。这样，你可以对不同类型的计算资源进行差异化定价，并更精细地了解用户如何使用产品。

---

查看我们的[定价](https://dodopayments.com/pricing)，了解 Dodo Payments 如何帮助你的 AI 业务在全球扩展。
---
- [More Payments articles](https://dodopayments.com/blogs/category/payments)
- [All articles](https://dodopayments.com/blogs)