> ## 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.

# Tính năng Thanh toán

> Thanh toán tối ưu hóa chuyển đổi, tuân thủ toàn cầu với hỗ trợ đa tiền tệ, đa ngôn ngữ, tính toán thuế tự động, mã giảm giá, tiện ích bổ sung và thu thập địa chỉ thông minh.

<Frame>
  <img src="https://mintcdn.com/dodopayments/Vafy52417ELLVDIx/images/checkout/cover.png?fit=max&auto=format&n=Vafy52417ELLVDIx&q=85&s=2dc0a0db8e021e39fb17e84fc12eb5f9" alt="Trang thanh toán" style={{ maxHeight: '500px', width: 'auto' }} width="2844" height="1556" data-path="images/checkout/cover.png" />
</Frame>

<Info>
  Trang thanh toán Dodo Payments được tối ưu hóa chuyển đổi và tuân thủ toàn cầu, thiết kế dành cho sản phẩm kỹ thuật số và doanh nghiệp SaaS. Nó hỗ trợ nhiều loại tiền tệ, ngôn ngữ, thuế, giảm giá, tiện ích bổ sung và quy trình tuân thủ thân thiện với doanh nghiệp.
</Info>

<CardGroup cols={2}>
  <Card title="Checkout Sessions API" icon="code" href="/api-reference/checkout-sessions/create">
    Tạo các phiên thanh toán lưu trữ theo chương trình.
  </Card>

  <Card title="Preview Checkout" icon="eye" href="/api-reference/checkout-sessions/preview">
    Tính toán giá và thuế trước khi tạo phiên.
  </Card>

  <Card title="Payment Methods" icon="credit-card" href="/features/payment-methods">
    Các phương thức thanh toán được hỗ trợ và tùy chọn cấu hình.
  </Card>
</CardGroup>

## Tiền tệ Thích ứng

Tiền tệ Thích ứng cho phép khách hàng thanh toán bằng đồng tiền địa phương mà họ ưa thích, cải thiện độ tin cậy và tỷ lệ chuyển đổi.

### Cách Hoạt Động

1. **Kích hoạt**: Bật Tiền tệ Thích ứng từ **Cài đặt → Doanh nghiệp**
2. **Chọn**: Khách hàng có thể chuyển đổi tiền tệ trực tiếp khi thanh toán
3. **Chuyển đổi**: Giá được chuyển đổi động sử dụng tỷ giá hối đoái thực
4. **Hiển thị**: Số tiền cuối cùng phải trả được hiển thị minh bạch trước khi thanh toán

<Frame>
  <img src="https://mintcdn.com/dodopayments/Vafy52417ELLVDIx/images/checkout/c1.png?fit=max&auto=format&n=Vafy52417ELLVDIx&q=85&s=c2f9ee4b1748448d4ab7ab23954dcc64" alt="Bộ chọn tiền tệ khi thanh toán" style={{ maxHeight: '500px', width: '70%' }} width="794" height="858" data-path="images/checkout/c1.png" />
</Frame>

<Card title="Adaptive Currency" icon="money-bill-transfer" href="/features/adaptive-currency">
  Tìm hiểu thêm về các loại tiền được hỗ trợ, phí chuyển đổi và cách xử lý hoàn tiền.
</Card>

## Thanh toán Đa ngôn ngữ

Dodo Payments hỗ trợ nhiều ngôn ngữ trên trang thanh toán, cho phép khách hàng hoàn tất thanh toán bằng ngôn ngữ mà họ cảm thấy thoải mái.

<Frame>
  <img src="https://mintcdn.com/dodopayments/Vafy52417ELLVDIx/images/checkout/c2.png?fit=max&auto=format&n=Vafy52417ELLVDIx&q=85&s=ecc6eb8db604e37433d8797c51768577" alt="Bộ chọn ngôn ngữ khi thanh toán" style={{ maxHeight: '500px', width: '70%' }} width="794" height="858" data-path="images/checkout/c2.png" />
</Frame>

### Điểm Nổi Bật

* Bảng chọn ngôn ngữ có sẵn trực tiếp trên trang thanh toán
* Văn bản UI, nhãn và thông điệp hệ thống được địa phương hóa
* Cải thiện khả năng tiếp cận và tỷ lệ chuyển đổi quốc tế

### Các Ngôn ngữ Hỗ trợ

Trang thanh toán hỗ trợ 21 ngôn ngữ:

| Ngôn ngữ          | Mã   |
| ----------------- | ---- |
| Ả Rập             | `ar` |
| Catalan           | `ca` |
| Tiếng Trung       | `zh` |
| Tiếng Hà Lan      | `nl` |
| Tiếng Anh         | `en` |
| Tiếng Pháp        | `fr` |
| Tiếng Đức         | `de` |
| Tiếng Do Thái     | `he` |
| Tiếng Indonesia   | `id` |
| Tiếng Ý           | `it` |
| Tiếng Nhật        | `ja` |
| Tiếng Hàn         | `ko` |
| Tiếng Mã Lai      | `ms` |
| Tiếng Ba Lan      | `pl` |
| Tiếng Bồ Đào Nha  | `pt` |
| Tiếng Romania     | `ro` |
| Tiếng Nga         | `ru` |
| Tiếng Tây Ban Nha | `es` |
| Tiếng Thụy Điển   | `sv` |
| Tiếng Thái        | `th` |
| Tiếng Thổ Nhĩ Kỳ  | `tr` |

<Tip>
  Bạn có thể ép một ngôn ngữ cụ thể trên trang thanh toán bằng cách đặt tham số `force_language` khi tạo phiên thanh toán. Xem [Checkout Sessions API](/developer-resources/checkout-session#14-forcing-a-language) để biết chi tiết.
</Tip>

## Tính Thuế Tự Động

Thuế được tính tự động dựa trên vị trí thanh toán của khách hàng, đảm bảo tuân thủ các yêu cầu về GST, VAT và thuế bán hàng mà không cần cài đặt thủ công.

### Cách hoạt động của việc tính thuế

<Steps>
  <Step title="Location Detection">
    Các quy tắc thuế được áp dụng dựa trên quốc gia của khách hàng (và khu vực nếu có).
  </Step>

  <Step title="Dynamic Updates">
    Số tiền thuế cập nhật tự động khi:

    * Thay đổi quốc gia
    * Cập nhật địa chỉ
  </Step>

  <Step title="Transparent Display">
    Bảng phân tích thuế cuối cùng được hiển thị rõ ràng trước khi thanh toán.
  </Step>
</Steps>

<Tip>
  Việc tính thuế hoàn toàn tự động. Không cần cấu hình thủ công cho hàng hóa kỹ thuật số tiêu chuẩn và sản phẩm SaaS.
</Tip>

## Hỗ trợ Mã số Thuế Doanh nghiệp

Đối với doanh nghiệp đã đăng ký, trang thanh toán cho phép khách hàng nhập Mã số Thuế Doanh nghiệp (ví dụ: số VAT/GST).

### Điều gì xảy ra khi nhập Mã số Thuế

* Tính hợp lệ thuế được xác thực theo thời gian thực
* Áp dụng các miễn giảm thuế hoặc quy tắc thuế ngược thích hợp
* Số tiền thuế cập nhật ngay lập tức trên trang thanh toán

<Frame>
  <img src="https://mintcdn.com/dodopayments/Vafy52417ELLVDIx/images/checkout/c3.png?fit=max&auto=format&n=Vafy52417ELLVDIx&q=85&s=76451fed5636a6ef3e5c3ec7f6a96c9f" alt="Nhập mã số thuế doanh nghiệp khi thanh toán" style={{ maxHeight: '500px', width: '70%' }} width="1440" height="1716" data-path="images/checkout/c3.png" />
</Frame>

<Info>
  Điều này đặc biệt hữu ích cho SaaS B2B và dịch vụ kỹ thuật số, nơi khách hàng doanh nghiệp có thể đủ điều kiện miễn thuế.
</Info>

## Mã Giảm Giá

Khách hàng có thể áp dụng mã giảm giá hoặc mã khuyến mại bạn tạo trong bảng điều khiển trực tiếp trên trang thanh toán.

### Trải nghiệm thanh toán

1. Khách hàng nhập mã giảm giá
2. Giảm giá được xác thực ngay lập tức
3. Giá cập nhật và khoản tiết kiệm được hiển thị rõ ràng

<Frame>
  <img src="https://mintcdn.com/dodopayments/Vafy52417ELLVDIx/images/checkout/c4.png?fit=max&auto=format&n=Vafy52417ELLVDIx&q=85&s=639dcc94ddd1b41fdd6ff200c2a28e47" alt="Nhập mã giảm giá khi thanh toán" style={{ maxHeight: '500px', width: '70%' }} width="794" height="858" data-path="images/checkout/c4.png" />
</Frame>

### Tích hợp API

Áp dụng trước một hoặc nhiều mã giảm giá xếp chồng hoặc bật trường nhập mã giảm giá:

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  discount_codes: ['WELCOME20'], // Pre-apply one or more codes (max 20, applied in order)
  feature_flags: {
    allow_discount_code: true // Show discount input field
  },
  return_url: 'https://yoursite.com/return'
});
```

<Info>
  `discount_codes` chấp nhận một mảng tối đa 20 mã xếp chồng lần lượt. Trường đơn `discount_code` đã lỗi thời nhưng vẫn hoạt động — các tích hợp hiện tại không cần thay đổi ngay lập tức. Di chuyển sang `discount_codes` khi thuận tiện để sử dụng xếp chồng và hình thức phản hồi phong phú hơn.
</Info>

<Card title="Discount Codes" icon="percent" href="/features/discount-codes">
  Tìm hiểu cách tạo và quản lý mã giảm giá.
</Card>

<Card title="Validate Discount by Code" icon="tag" href="/api-reference/discounts/get-discount-by-code">
  Tra cứu và xác thực giảm giá bằng cách sử dụng tên mã.
</Card>

## Thu Thập Địa Chỉ Thông Minh

Quy trình thanh toán hỗ trợ nhập địa chỉ linh hoạt để hoàn thành nhanh hơn.

### Các Tùy Chọn Khả Dụng

| Tùy chọn                        | Mô tả                                                                                                     |
| ------------------------------- | --------------------------------------------------------------------------------------------------------- |
| **Tự động điền địa chỉ Google** | Lựa chọn nhanh với tự động hoàn thành                                                                     |
| **Nhập thủ công**               | Kiểm soát đầy đủ cho địa chỉ hoàn chỉnh                                                                   |
| **Lựa chọn quốc gia**           | Ảnh hưởng đến logic thuế và tuân thủ                                                                      |
| **Địa chỉ tối giản**            | Chỉ thu thập quốc gia (và mã ZIP nếu cần cho thuế) — xem [Chế độ địa chỉ tối giản](#minimal-address-mode) |

<Tip>
  Thu thập địa chỉ cân bằng tốc độ, độ chính xác và phủ sóng toàn cầu để tối đa hóa chuyển đổi trong khi đảm bảo tuân thủ.
</Tip>

### Chế độ Địa chỉ Tối giản

Để tối đa hóa tỉ lệ chuyển đổi, bật thu thập địa chỉ tối giản để giảm sự cản trở khi thanh toán. Khi `minimal_address` được đặt thành `true`, quá trình thanh toán chỉ thu thập:

* **Quốc gia** — luôn cần thiết để xác định thuế
* **Mã Bưu chính** — chỉ áp dụng tại các khu vực cần cho tính thuế bán hàng, VAT, hoặc GST

Các trường địa chỉ khác (đường phố, thành phố, bang) bị bỏ qua, giúp tăng tốc độ hoàn thành thanh toán đáng kể.

<Frame>
  <img src="https://mintcdn.com/dodopayments/7dyPZdWH7JucnLrT/images/changelog/minimal-address.png?fit=max&auto=format&n=7dyPZdWH7JucnLrT&q=85&s=cd0e5d6f8c32e052c7ab93a88d841fb8" alt="Chế độ địa chỉ tối giản chỉ hiển thị các trường quốc gia và mã bưu chính khi thanh toán" style={{ maxHeight: '500px', width: 'auto' }} width="1459" height="817" data-path="images/changelog/minimal-address.png" />
</Frame>

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  minimal_address: true,
  return_url: 'https://yoursite.com/return'
});
```

<Info>
  Thu thập địa chỉ đầy đủ vẫn là mặc định. Bật `minimal_address` cho các sản phẩm kỹ thuật số và luồng SaaS nơi không yêu cầu chi tiết thanh toán đầy đủ.
</Info>

<Card title="Minimal Address Reference" icon="address-card" href="/developer-resources/checkout-session#request-body">
  Xem tài liệu tham khảo đầy đủ về tham số `minimal_address` trong hướng dẫn API Phiên Thanh toán.
</Card>

## Thu thập Số điện thoại

Kiểm soát liệu trường số điện thoại có xuất hiện khi thanh toán hay không — và liệu nó có bắt buộc không — bằng cách sử dụng các cờ tính năng phiên thanh toán.

| Cờ                              | Mặc định | Hành vi                                                                              |
| ------------------------------- | -------- | ------------------------------------------------------------------------------------ |
| `allow_phone_number_collection` | `true`   | Hiển thị trường số điện thoại trên biểu mẫu thanh toán                               |
| `require_phone_number`          | `false`  | Làm cho trường số điện thoại bắt buộc (xác thực biểu mẫu yêu cầu giá trị không rỗng) |

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  feature_flags: {
    allow_phone_number_collection: true,
    require_phone_number: true
  },
  return_url: 'https://yoursite.com/return'
});
```

<Warning>
  `require_phone_number: true` yêu cầu `allow_phone_number_collection: true`. API từ chối các phiên khi việc thu thập điện thoại bị tắt trong khi số điện thoại là cần thiết.
</Warning>

<Tip>
  Sử dụng `require_phone_number` cho SaaS B2B, các ngành được điều tiết, hoặc bất kỳ luồng nào mà bạn cần kênh liên hệ được xác minh cho hỗ trợ, xem xét gian lận hoặc tuân thủ.
</Tip>

## Trường Tùy chỉnh

Thu thập thêm thông tin từ khách hàng trong khi thanh toán bằng cách định nghĩa các trường biểu mẫu tùy chỉnh. Điều này hữu ích cho việc thu thập dữ liệu như tên công ty, kích thước đội nhóm, nguồn giới thiệu hoặc bất kỳ thông tin cụ thể doanh nghiệp nào khác.

### Các loại trường khả dụng

| Loại       | Mô tả                              |
| ---------- | ---------------------------------- |
| `text`     | Nhập liệu một dòng                 |
| `number`   | Nhập liệu số                       |
| `email`    | Địa chỉ email với xác thực         |
| `url`      | URL với xác thực                   |
| `date`     | Chọn ngày                          |
| `dropdown` | Chọn từ các tùy chọn đã định trước |
| `boolean`  | Chuyển đổi Có/Không                |

### Ví dụ

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  custom_fields: [
    {
      key: 'company_name',
      label: 'Company Name',
      field_type: 'text',
      required: true
    },
    {
      key: 'team_size',
      label: 'Team Size',
      field_type: 'dropdown',
      required: true,
      options: ['1-10', '11-50', '51-200', '200+']
    }
  ],
  return_url: 'https://yoursite.com/return'
});
```

<Info>
  Phản hồi của khách hàng được tự động bao gồm trong tải trọng webhook (`payment.succeeded`, `subscription.active`) và phản hồi API thông qua mảng `custom_field_responses`. Bạn có thể định nghĩa tới 5 trường tùy chỉnh cho mỗi phiên thanh toán.
</Info>

<Card title="Custom Fields Guide" icon="input-text" href="/developer-resources/checkout-session#15-collecting-custom-fields">
  Tìm hiểu thêm về cấu hình trường tùy chỉnh và truy cập phản hồi.
</Card>

## Chính Sách Bảo Mật & Chấp Nhận Điều Khoản

Để đảm bảo tính minh bạch pháp lý và tuân thủ:

* Các liên kết [Chính Sách Bảo Mật](https://dodopayments.com/privacy-policy) và [Điều Khoản Người Mua](https://dodopayments.com/buyer-terms) được hiển thị rõ ràng khi thanh toán
* Khách hàng xác nhận rõ ràng những điều này trước khi hoàn tất thanh toán

<Info>
  Điều này giúp đáp ứng các yêu cầu bảo vệ người tiêu dùng toàn cầu và quy định về bảo mật dữ liệu bao gồm tuân thủ GDPR.
</Info>

## Thanh Toán Bộ sưu tập

Bộ sưu tập sản phẩm cho phép trải nghiệm thanh toán hợp nhất nơi khách hàng có thể xem và chọn từ nhiều sản phẩm liên quan (ví dụ: các gói Starter, Pro, Enterprise) trong một lần thanh toán.

### Cách Hoạt Động

1. **Tất cả sản phẩm được hiển thị**: Khách hàng sẽ thấy mọi sản phẩm đang hoạt động trong bộ sưu tập
2. **Sản phẩm đầu tiên được chọn sẵn**: Sản phẩm đầu tiên trong bộ sưu tập được tự động chọn
3. **So sánh các tùy chọn**: Khách hàng có thể so sánh giá và tính năng trước khi lựa chọn
4. **Chọn một lần**: Sau khi chọn sản phẩm, tiếp tục thanh toán với luồng thanh toán tiêu chuẩn

### Tạo một Bộ sưu tập Thanh toán

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_collection_id: 'pdc_abc123',
  product_cart: [], // Required: pass an empty array for collection checkout
  return_url: 'https://yoursite.com/return'
});
```

<Warning>
  Khi sử dụng `product_collection_id`, truyền một mảng `product_cart` trống. Không thể áp dụng mã giảm giá trước khi tạo phiên.
</Warning>

<Card title="Product Collections" icon="layer-group" href="/features/product-collections">
  Tìm hiểu cách tạo và quản lý bộ sưu tập sản phẩm cho trải nghiệm thanh toán hợp nhất.
</Card>

## Cấu hình Phiên Thanh toán

Kiểm soát hành vi thanh toán bằng cách sử dụng API Phiên Thanh toán:

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customer: {
    email: 'customer@example.com',
    name: 'Jane Doe'
  },
  billing_currency: 'EUR', // Set specific currency
  discount_codes: ['PROMO10'],
  feature_flags: {
    allow_discount_code: true
  },
  return_url: 'https://yoursite.com/return',
  cancel_url: 'https://yoursite.com/pricing', // Optional: where to redirect on cancel
  metadata: {
    order_ref: 'ORD-12345'
  }
});
```

<Info>
  Sau khi thanh toán, khách hàng sẽ được chuyển đến `return_url` với các tham số truy vấn tự động đính kèm -- bao gồm `payment_id` hoặc `subscription_id`, `status`, `email`, và `license_key` (nếu áp dụng). Xem [Hướng dẫn Phiên Thanh toán](/developer-resources/checkout-session#request-body) để biết danh sách đầy đủ.
</Info>

<CardGroup cols={2}>
  <Card title="Checkout Sessions API" icon="code" href="/api-reference/checkout-sessions/create">
    Tham khảo đầy đủ API cho các phiên thanh toán.
  </Card>

  <Card title="Checkout Integration Guide" icon="book" href="/developer-resources/checkout-session">
    Hướng dẫn từng bước để tích hợp thanh toán.
  </Card>
</CardGroup>

## Tùy chỉnh Giao diện Thanh toán

Tùy chỉnh giao diện trang thanh toán để phù hợp với thương hiệu của bạn bằng cách sử dụng tham số `customization.theme_config` khi tạo phiên thanh toán qua API. Cấu hình màu sắc, phông chữ, bán kính viền và văn bản nút cho cả chế độ tối và sáng.

<Frame>
  <img src="https://mintcdn.com/dodopayments/rTHkQICkStFgSdh-/images/checkout/theme-example.png?fit=max&auto=format&n=rTHkQICkStFgSdh-&q=85&s=5277b69d67c90fd87e7c5d9c125fee12" alt="Trang thanh toán được tùy chỉnh theo chủ đề" style={{ maxHeight: '500px', width: 'auto' }} width="2856" height="1490" data-path="images/checkout/theme-example.png" />
</Frame>

<Card title="Design & Theme Customization" icon="palette" href="/features/design">
  Cấu hình chủ đề trực quan từ bảng điều khiển với các chủ đề dựng sẵn, kiểu chữ, màu sắc và xem trước trực tiếp.
</Card>

<Info>
  Phần này đề cập đến cấu hình chủ đề **API phía máy chủ** sử dụng `customization.theme_config`. Nếu bạn đang sử dụng **Checkout SDK** (overlay hoặc inline checkout), hãy xem phần tùy chỉnh chủ đề trong [Overlay Checkout](/developer-resources/overlay-checkout#theme-customization) sử dụng các thuộc tính camelCase (ví dụ: `bgPrimary` thay vì `bg_primary`).
</Info>

### Tùy chọn Cấu hình Chủ đề

| Thuộc tính           | Mô tả                                                                             |
| -------------------- | --------------------------------------------------------------------------------- |
| `light`              | Cấu hình màu cho chế độ sáng                                                      |
| `dark`               | Cấu hình màu cho chế độ tối                                                       |
| `font_primary_url`   | URL cho phông chữ chính                                                           |
| `font_secondary_url` | URL cho phông chữ phụ                                                             |
| `font_size`          | Kích thước phông: `xs`, `sm`, `md`, `lg`, `xl`, `2xl`                             |
| `font_weight`        | Độ đậm phông: `normal`, `medium`, `bold`, `extraBold`                             |
| `radius`             | Bán kính viền cho các phần tử giao diện (ví dụ, `4px`, `0.5rem`, `8px`)           |
| `pay_button_text`    | Văn bản tùy chỉnh cho nút thanh toán (ví dụ, "Hoàn Tất Mua Hàng", "Đăng Ký Ngay") |

### Cấu hình Màu sắc (Chế độ Sáng/Tối)

Mỗi chế độ (`light` và `dark`) hỗ trợ các thuộc tính màu sau:

| Thuộc tính               | Mô tả                       |
| ------------------------ | --------------------------- |
| `bg_primary`             | Màu nền chính               |
| `bg_secondary`           | Màu nền phụ                 |
| `text_primary`           | Màu văn bản chính           |
| `text_secondary`         | Màu văn bản phụ             |
| `text_placeholder`       | Màu văn bản gợi ý           |
| `text_error`             | Màu văn bản lỗi             |
| `text_success`           | Màu văn bản thành công      |
| `border_primary`         | Màu viền chính              |
| `border_secondary`       | Màu viền phụ                |
| `button_primary`         | Màu nền nút chính           |
| `button_primary_hover`   | Màu khi hover của nút chính |
| `button_secondary`       | Màu nền nút phụ             |
| `button_secondary_hover` | Màu khi hover của nút phụ   |
| `button_text_primary`    | Màu văn bản nút chính       |
| `button_text_secondary`  | Màu văn bản nút phụ         |
| `input_focus_border`     | Màu viền khi nhập liệu      |

<Info>
  Tất cả các trường màu sắc chấp nhận các định dạng màu CSS tiêu chuẩn:

  * Hex: `#fff`, `#ffffff`, `#ffffffff`
  * RGB/RGBA: `rgb(255, 255, 255)`, `rgba(255, 255, 255, 0.5)`
  * HSL/HSLA: `hsl(120, 100%, 50%)`, `hsla(120, 100%, 50%, 0.5)`
  * Tên màu: `red`, `blue`, `transparent`
</Info>

### Ví dụ

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  customization: {
    theme_config: {
      // Custom fonts
      font_primary_url: 'https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap',
      font_size: 'md',
      font_weight: 'medium',
      radius: '8px',
      pay_button_text: 'Complete Purchase',
      
      // Light mode colors
      light: {
        bg_primary: '#ffffff',
        bg_secondary: '#f5f5f5',
        text_primary: '#1a1a1a',
        text_secondary: '#666666',
        button_primary: '#0066ff',
        button_primary_hover: '#0052cc',
        button_text_primary: '#ffffff',
        border_primary: '#e0e0e0'
      },
      
      // Dark mode colors
      dark: {
        bg_primary: '#1a1a1a',
        bg_secondary: '#2d2d2d',
        text_primary: '#ffffff',
        text_secondary: '#a0a0a0',
        button_primary: '#3385ff',
        button_primary_hover: '#4d99ff',
        button_text_primary: '#ffffff',
        border_primary: '#404040'
      }
    }
  },
  return_url: 'https://yoursite.com/return'
});
```

<Tip>
  Bạn không cần phải chỉ định tất cả các thuộc tính màu. Bất kỳ thuộc tính nào không xác định sẽ sử dụng giá trị chủ đề mặc định.
</Tip>
