Chuyển đến nội dung chính
Trang thanh toán
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.

Checkout Sessions API

Tạo các phiên thanh toán lưu trữ theo chương trình.

Preview Checkout

Tính toán giá và thuế trước khi tạo phiên.

Payment Methods

Các phương thức thanh toán được hỗ trợ và tùy chọn cấu hình.

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
Bộ chọn tiền tệ khi thanh toán

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.

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.
Bộ chọn ngôn ngữ khi thanh toán

Đ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ữ
Ả Rậpar
Catalanca
Tiếng Trungzh
Tiếng Hà Lannl
Tiếng Anhen
Tiếng Phápfr
Tiếng Đứcde
Tiếng Do Tháihe
Tiếng Indonesiaid
Tiếng Ýit
Tiếng Nhậtja
Tiếng Hànko
Tiếng Mã Laims
Tiếng Ba Lanpl
Tiếng Bồ Đào Nhapt
Tiếng Romaniaro
Tiếng Ngaru
Tiếng Tây Ban Nhaes
Tiếng Thụy Điểnsv
Tiếng Tháith
Tiếng Thổ Nhĩ Kỳtr
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 để biết chi tiết.

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ế

1

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ó).
2

Dynamic Updates

Số tiền thuế cập nhật tự động khi:
  • Thay đổi quốc gia
  • Cập nhật địa chỉ
3

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

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
Nhập mã số thuế doanh nghiệp khi thanh toán
Đ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ế.

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
Nhập mã giảm giá khi thanh toán

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á:
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'
});
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.

Discount Codes

Tìm hiểu cách tạo và quản lý mã giảm giá.

Validate Discount by Code

Tra cứu và xác thực giảm giá bằng cách sử dụng tên mã.

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ọnMô tả
Tự động điền địa chỉ GoogleLựa chọn nhanh với tự động hoàn thành
Nhập thủ côngKiể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ảnChỉ thu thập quốc gia (và mã ZIP nếu cần cho thuế) — xem Chế độ địa chỉ tối giản
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ủ.

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ể.
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
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  minimal_address: true,
  return_url: 'https://yoursite.com/return'
});
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 đủ.

Minimal Address Reference

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.

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 địnhHành vi
allow_phone_number_collectiontrueHiển thị trường số điện thoại trên biểu mẫu thanh toán
require_phone_numberfalseLà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)
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'
});
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.
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ủ.

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ạiMô tả
textNhập liệu một dòng
numberNhập liệu số
emailĐịa chỉ email với xác thực
urlURL với xác thực
dateChọn ngày
dropdownChọn từ các tùy chọn đã định trước
booleanChuyển đổi Có/Không

Ví dụ

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'
});
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.

Custom Fields Guide

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.

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ủ:
Đ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.

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

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'
});
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.

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.

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:
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'
  }
});
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 để biết danh sách đầy đủ.

Checkout Sessions API

Tham khảo đầy đủ API cho các phiên thanh toán.

Checkout Integration Guide

Hướng dẫn từng bước để tích hợp thanh toán.

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.
Trang thanh toán được tùy chỉnh theo chủ đề

Design & Theme Customization

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.
Phần này bao gồm cấu hình chủ đề API phía máy chủ bằng cách sử dụng customization.theme_config. Nếu bạn đang sử dụng Checkout SDK (thanh toán lớp phủ hoặc nội tuyến), hãy xem các phần tùy chỉnh chủ đề trong Overlay Checkout hoặc Inline Checkout sử dụng thuộc tính camelCase (ví dụ, bgPrimary thay vì bg_primary).

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

Thuộc tínhMô tả
lightCấu hình màu cho chế độ sáng
darkCấu hình màu cho chế độ tối
font_primary_urlURL cho phông chữ chính
font_secondary_urlURL cho phông chữ phụ
font_sizeKích thước phông: xs, sm, md, lg, xl, 2xl
font_weightĐộ đậm phông: normal, medium, bold, extraBold
radiusBán kính viền cho các phần tử giao diện (ví dụ, 4px, 0.5rem, 8px)
pay_button_textVă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ế độ (lightdark) hỗ trợ các thuộc tính màu sau:
Thuộc tínhMô tả
bg_primaryMàu nền chính
bg_secondaryMàu nền phụ
text_primaryMàu văn bản chính
text_secondaryMàu văn bản phụ
text_placeholderMàu văn bản gợi ý
text_errorMàu văn bản lỗi
text_successMàu văn bản thành công
border_primaryMàu viền chính
border_secondaryMàu viền phụ
button_primaryMàu nền nút chính
button_primary_hoverMàu khi hover của nút chính
button_secondaryMàu nền nút phụ
button_secondary_hoverMàu khi hover của nút phụ
button_text_primaryMàu văn bản nút chính
button_text_secondaryMàu văn bản nút phụ
input_focus_borderMàu viền khi nhập liệu
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

Ví dụ

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'
});
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.
Lần sửa đổi cuối 9 tháng 6, 2026