> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 官方 SDK

> 适用于 TypeScript、Python、Go、PHP、Java、Kotlin、C#、Ruby 和 Rust 的官方 Dodo Payments SDK，以及适用于移动应用的 checkout SDK。

Dodo Payments 官方服务器 SDK 支持九种语言。另有独立的 checkout SDK，可从 Android、iOS、React Native 和 Flutter 应用打开托管式 checkout。

> **[TypeScript](/developer-resources/sdks/typescript)**
>
> 适用于 Node.js 的类型安全 SDK，提供基于 promise 的 API 和自动分页功能。

> **[Python](/developer-resources/sdks/python)**
>
> 符合 Python 习惯的接口，支持 Python 3.9+ 的 async/await。

> **[Go](/developer-resources/sdks/go)**
>
> 符合 Go 习惯的接口，支持 context 和强类型。

> **[PHP](/developer-resources/sdks/php)**
>
> 符合 PSR-4 标准的 PHP 8.1+ SDK。

> **[Java](/developer-resources/sdks/java)**
>
> 适用于 Java 8+ 的线程安全 SDK，支持 Maven 和 Gradle。

> **[Kotlin](/developer-resources/sdks/kotlin)**
>
> 支持协程和 null safety 的 Kotlin SDK。

> **[C#](/developer-resources/sdks/csharp)**
>
> 面向 .NET Standard 2.0+ 的类型安全 SDK，提供基于 async Task 的 API。

> **[Ruby](/developer-resources/sdks/ruby)**
>
> 遵循 Ruby 惯例的 Ruby SDK。

> **[Rust](/developer-resources/sdks/rust)**
>
> 基于 Tokio 和 reqwest 构建、以异步为先的 Rust 1.75+ SDK。

## 快速开始

**1. Install the SDK**

使用相应的包管理器安装适用于你所用语言的 SDK。

**TypeScript**

```bash theme={null}
npm install dodopayments
```

**Python**

```bash theme={null}
pip install dodopayments
```

**Go**

```bash theme={null}
go get github.com/dodopayments/dodopayments-go
```

**PHP**

```bash theme={null}
composer require dodopayments/client
```

**Java**

```kotlin theme={null}
// build.gradle.kts
implementation("com.dodopayments.api:dodo-payments-java:1.118.0")
```

**Kotlin**

```kotlin theme={null}
// build.gradle.kts
implementation("com.dodopayments.api:dodo-payments-kotlin:1.118.0")
```

**C#**

```bash theme={null}
dotnet add package DodoPayments.Client
```

**Ruby**

```bash theme={null}
bundle add dodopayments
```

**Rust**

```bash theme={null}
cargo add dodopayments
```

有关 Maven 坐标和特定版本的选项，请参阅各 SDK 的页面。

**2. Initialize the Client**

从 `DODO_PAYMENTS_API_KEY` 环境变量中读取 API key。这些示例连接到测试模式；请参阅[测试模式与实时模式](/miscellaneous/test-mode-vs-live-mode)。

**TypeScript**

```typescript theme={null}
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env.DODO_PAYMENTS_API_KEY,
  environment: 'test_mode',
});
```

**Python**

```python theme={null}
import os
from dodopayments import DodoPayments

client = DodoPayments(
    bearer_token=os.environ["DODO_PAYMENTS_API_KEY"],
    environment="test_mode",
)
```

**Go**

```go theme={null}
import (
    "os"

    "github.com/dodopayments/dodopayments-go"
    "github.com/dodopayments/dodopayments-go/option"
)

client := dodopayments.NewClient(
    option.WithBearerToken(os.Getenv("DODO_PAYMENTS_API_KEY")),
    option.WithEnvironmentTestMode(),
)
```

**PHP**

```php theme={null}
use Dodopayments\Client;

$client = new Client(
    bearerToken: getenv('DODO_PAYMENTS_API_KEY'),
    baseUrl: 'https://test.dodopayments.com',
);
```

**Rust**

```rust theme={null}
use dodopayments::{Client, ClientConfig, Environment};

let config = ClientConfig::from_env()
    .expect("DODO_PAYMENTS_API_KEY must be set")
    .with_environment(Environment::TestMode);
let client = Client::new(config).expect("failed to create client");
```

有关 Java、Kotlin、C# 和 Ruby，请参阅各 SDK 页面中的客户端设置。

> [!WARNING]
>
> 将 API key 保存在环境变量或 secrets manager 中。切勿将其提交到版本控制系统。

**3. Create a Checkout Session**

创建 checkout session，并将客户重定向到返回的 `checkout_url`。

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'YOUR_PRODUCT_ID', quantity: 1 }],
});

console.log(session.checkout_url);
```

有关其他语言中的相同调用，以及 payment links 和 webhooks，请参阅[集成指南](/developer-resources/integration-guide)。

## 主要功能

所有后端 SDK 均包括：

* **类型安全**：提供强类型支持，确保编译时安全并改善 IDE 支持。
* **错误处理**：提供类型化错误，其中包含 HTTP status 和 API 返回的错误正文。
* **身份验证**：使用从环境变量中读取的 API key 进行身份验证。
* **异步支持**：在适用情况下采用现代 async/await 模式。
* **自动分页**：自动处理列表响应的分页。
* **使用量事件**：提供发送使用量事件的方法，用于基于使用量的计费。
* **测试模式**：将客户端指向测试模式的设置，因此不会发生真实资金转移。

## 移动端 Checkout SDK

对于原生 Android、iOS、React Native 和 Flutter 应用，请使用移动端 Checkout SDK。它们会在平台的真实浏览器界面中打开 Dodo 托管的 checkout 页面（而不是 WebView），因此 Apple Pay 和 Google Pay 的工作方式与开放 Web 上相同。

四个移动端 SDK 共享相同的契约：`start(...)` 返回一个类型化的 `CheckoutResult`，它们都不持有 API key，也不会直接调用 API。

> **[Android](/developer-resources/sdks/android)**
>
> 可打开 Chrome Custom Tab 的 Kotlin SDK。需要 `minSdk` 23。

> **[iOS](/developer-resources/sdks/ios)**
>
> 可打开 SFSafariViewController 的 Swift SDK。需要 iOS 16+。

> **[React Native](/developer-resources/sdks/react-native)**
>
> 同时支持两个原生核心的 Turbo Module。需要 React Native 0.76+。

> **[Flutter](/developer-resources/sdks/flutter)**
>
> 同时支持两个原生核心的 Pigeon channel。需要 Flutter 3.44+。

> **[Mobile Integration Guide](/developer-resources/mobile-integration)**
>
> 端到端的移动支付流程，从后端 checkout session 到 callback scheme 设置。

## 命令行界面

Dodo CLI 可从终端管理支付、客户和 webhooks。它包含交互式 TUI、AI assistant 和 webhook 测试工具。

> **[CLI](/developer-resources/sdks/cli)**
>
> 带有 AI assistant 和 webhook 测试功能的交互式终端客户端。

使用以下命令在 macOS 或 Linux 上安装：

```bash theme={null}
curl -fsSL https://dodopayments.com/install.sh | sh
```

## Framework 适配器

适配器可将 checkout、Customer Portal 和 webhook handlers 添加到你的 framework 中。

### 推荐的 Framework

> **[Next.js](/developer-resources/nextjs-adaptor)**
>
> 在 App Router 中处理 checkout、Customer Portal 和 webhooks 的路由处理程序。

> **[Better Auth](/developer-resources/better-auth-adaptor)**
>
> 用户注册时创建客户，并将 checkout 和 Customer Portal 添加到你的身份验证流程中。

> **[Supabase](/developer-resources/supabase-boilerplate)**
>
> 集成身份验证、数据库 schema、webhooks 和定价页面的 Next.js 与 Supabase starter。

> **[Convex](/developer-resources/convex-component)**
>
> 适用于 Convex backend 的 checkout、Customer Portal 和 webhook functions。

> **All Other Framework Adaptors**
>
> > **[SvelteKit](/developer-resources/sveltekit-adaptor)**
>
> > **[Nuxt](/developer-resources/nuxt-adaptor)**
>
> > **[Remix](/developer-resources/remix-adaptor)**
>
> > **[Express](/developer-resources/express-adaptor)**
>
> > **[Fastify](/developer-resources/fastify-adaptor)**
>
> > **[Hono](/developer-resources/hono-adaptor)**
>
> > **[Astro](/developer-resources/astro-adaptor)**
>
> > **[TanStack](/developer-resources/tanstack-adaptor)**
>
> > **[Bun](/developer-resources/bun-adaptor)**

## 从 Node.js SDK 迁移

> [!NOTE]
>
> TypeScript SDK 替代了旧版 Node.js SDK。如果你使用的是 Node.js SDK，请参阅[迁移指南](https://github.com/dodopayments/dodopayments-typescript/blob/main/MIGRATION.md)来更新你的集成。

## 获取帮助

* **Discord**：加入我们的[社区服务器](https://discord.gg/bYqAp4ayYh)以获取实时帮助。
* **Email**：通过 [support@dodopayments.com](mailto:support@dodopayments.com) 联系我们。
* **GitHub**：在相应的 SDK repository 中提交 issue。
* **Documentation**：访问 [API reference](/api-reference/introduction)。

## 参与贡献

每个 SDK repository 都接受贡献。大多数 repository 都包含一个 `CONTRIBUTING.md` 文件，其中提供了报告 bug、请求功能、提交 pull request、运行测试和代码风格约定等方面的指南。

访问各个 SDK 页面，以获取其 GitHub repository 和贡献指南。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.