Chuyển đến nội dung chính

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.

Discount codes overview cover
Mã giảm giá cho phép bạn thực hiện các chương trình khuyến mãi và ưu đãi có mục tiêu. Tạo giảm giá theo phần trăm hoặc số tiền cố định, đặt giới hạn và thời hạn, hạn chế theo sản phẩm và áp dụng chúng một cách liền mạch trong quá trình thanh toán.

Checkout Sessions

Áp dụng một hoặc nhiều mã chồng trong quá trình thanh toán lưu trữ với discount_codes và các điều khiển UI.

Validate Discount

Kiểm tra xem mã giảm giá có hợp lệ theo ID không.

Get Discount by Code

Tra cứu và xác thực mã giảm giá bằng tên mã (ví dụ: “SAVE20”).

Create Discount (API)

Tạo mã giảm giá mới theo chương trình.

List & Update Discounts

Duyệt và quản lý các mã giảm giá hiện có; cập nhật hoặc xóa theo nhu cầu.

Plan Change Discounts

Áp dụng mã giảm giá khi nâng cấp hoặc hạ cấp gói đăng ký.

Mã giảm giá là gì?

Mã giảm giá là token khuyến mãi giúp giảm tổng số tiền thanh toán tại lúc thanh toán. Chúng rất lý tưởng cho:
  • Chiến dịch theo mùa: Black Friday, ra mắt sản phẩm hoặc kỷ niệm
  • Ưu đãi thu hút: Khuyến khích mua lần đầu hoặc thưởng giới thiệu
  • Duy trì: Thưởng quay lại hoặc cho khách hàng trung thành hiện có
  • Giao dịch B2B: Giá thương lượng thông qua mã riêng tư

Lợi ích chính

  • Giảm giá linh hoạt: Giảm phần trăm hoặc giảm theo số tiền cố định
  • Mã có thể chồng: Áp dụng tối đa 20 mã mỗi lần thanh toán, thanh toán hoặc đăng ký — kết hợp các chiến dịch (ví dụ: WELCOME10 + BLACKFRIDAY20) mà không cần tạo mã riêng biệt
  • Kiểm soát mục tiêu: Hạn chế theo sản phẩm và chu kỳ đăng ký
  • Quản lý chiến dịch: Ngày hết hạn và giới hạn sử dụng
  • Thanh toán liền mạch: Trường giao diện người dùng và hỗ trợ API thông qua phiên thanh toán

Tạo mã giảm giá

Tạo mã giảm giá trong bảng điều khiển Dodo Payments, sau đó áp dụng chúng trong thanh toán được lưu trữ hoặc qua API.

Thiết lập bằng bảng điều khiển

  • Tên Mã Giảm Giá (bắt buộc): Tên hiển thị nội bộ và trên bảng điều khiển
  • (bắt buộc): Chuỗi mà khách hàng nhập tại thanh toán
  • Loại & Số Tiền (bắt buộc): Đặt giá trị phần trăm hoặc cố định, hoặc tạo mã ngẫu nhiên bằng nút được cung cấp
  • Ngày Hết Hạn (không bắt buộc): Ngày sau đó mã sẽ không còn hiệu lực
  • Giới Hạn Sử Dụng (không bắt buộc): Số lần đổi tối đa trên tất cả khách hàng
  • Giới Hạn Sản Phẩm (không bắt buộc): Giới hạn áp dụng cho các sản phẩm được chọn
  • Giới Hạn Chu Kỳ Đăng Ký (không bắt buộc): Số chu kỳ thanh toán mà mã giảm giá áp dụng cho
  • Metadata (không bắt buộc): Đính kèm cặp key–value tùy chỉnh để theo dõi nội bộ hoặc tích hợp
Sử dụng giới hạn chu kỳ cho giá giới thiệu đối với các đăng ký (ví dụ, “50% giảm trong 3 tháng”).

Trải nghiệm thanh toán

  1. Người mua nhập mã vào trường thanh toán.
  2. Mã giảm giá đủ điều kiện được áp dụng và tổng tiền sẽ cập nhật ngay lập tức.
Trong các phiên thanh toán, truyền discount_codes (một mảng) để áp dụng trước một hoặc nhiều mã và đặt feature_flags.allow_discount_code để hiển thị trường nhập mã. Mã được áp dụng theo thứ tự của mảng, tối đa là 20.

Chồng mã giảm giá

Các phiên thanh toán, thanh toán và đăng ký chấp nhận tối đa 20 mã giảm giá chồng thông qua mảng discount_codes (tối đa 20 mục). Mã được áp dụng theo thứ tự của mảng, vì vậy mã đầu tiên hợp lệ sẽ giảm giá cơ bản trước tiên, mã tiếp theo giảm giá đã được chiết khấu, và cứ tiếp tục như vậy. Tập hợp đầy đủ các giảm giá được áp dụng sẽ được trả lại trong phản hồi dưới discount_ids (về thanh toán/đăng ký) và discounts (chi tiết phong phú hơn cho mỗi giảm giá, bao gồm vị trí và chu kỳ đăng ký còn lại).
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  discount_codes: ['WELCOME10', 'BLACKFRIDAY20'], // applied in this order
  customer: { email: 'user@example.com' },
  return_url: 'https://yoursite.com/return'
});
Trường đơn lẻ discount_code đã bị ngưng nhưng vẫn được hỗ trợ hoàn toàn cho khả năng tương thích ngược — các tích hợp hiện có vẫn hoạt động mà không cần thay đổi. Nó không thể được kết hợp với discount_codes trong cùng một yêu cầu. Chúng tôi khuyên bạn nên chuyển sang discount_codes (dạng mảng) khi tiện lợi, thậm chí cho các mã đơn lẻ, để tận dụng lợi ích của việc chồng và phản hồi phong phú hơn.

Quản lý API

Tạo mã giảm giá thông qua lập trình với loại và số tiền.

API Reference

Xem API tạo mã giảm giá.
Liệt kê tất cả giảm giá hoặc truy xuất chi tiết để quản lý và kiểm toán.

API Reference

Duyệt các API liệt kê và truy xuất.
Tra mã giảm giá bằng mã dễ đọc (ví dụ: “SAVE20”) thay vì ID nội bộ.

API Reference

Truy xuất mã giảm giá theo tên mã.
Thay đổi cấu hình giảm giá như số tiền, ngày hết hạn hoặc hạn chế.

API Reference

Tìm hiểu cách cập nhật chi tiết giảm giá.
Kiểm tra xem mã giảm giá có hợp lệ và có thể áp dụng trước khi áp dụng hay không.

API Reference

Xác thực việc sử dụng mã giảm giá.
Vô hiệu hóa hoặc xóa các mã giảm giá không cần thiết nữa.

API Reference

Xóa mã giảm giá.

Trường hợp Sử dụng Chung

  • Ưu đãi giới thiệu: Khuyến mãi ra mắt có thời hạn giới hạn cho sản phẩm mới
  • Giảm giá số lượng lớn hoặc B2B: Giảm giá theo hợp đồng cho các bộ sản phẩm được chọn
  • Chiến lược giữ chân: Mã giành lại trong quy trình ngăn ngừa gián đoạn
  • Chiến dịch theo mùa: Khuyến mãi dựa trên sự kiện hoặc ngày lễ

Ví dụ Tích hợp

Tạo mã giảm giá với siêu dữ liệu

Đính kèm các cặp khóa-giá trị tùy chỉnh để theo dõi nội bộ.
const discount = await client.discounts.create({
  type: 'percentage',
  amount: 1500, // 15%
  code: 'SUMMER2025',
  metadata: {
    campaign: 'summer_promo',
    source: 'email_blast'
  }
});
Sử dụng siêu dữ liệu để gắn thẻ giảm giá theo chiến dịch, nguồn, hoặc ID tham chiếu nội bộ để bạn có thể phối hợp sử dụng và đo ROI sau này.

Áp dụng giảm giá trong Phiên Thanh toán

Áp dụng trước một hoặc nhiều mã giảm giá chồng và hiển thị giao diện nhập mã.
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  discount_codes: ['BLACKFRIDAY2024', 'NEWUSER5'], // stacked in array order
  customer: { email: 'user@example.com', name: 'Jane Doe' },
  return_url: 'https://yoursite.com/return'
});

Áp dụng giảm giá khi thay đổi gói

Cung cấp giá khuyến mãi khi khách hàng nâng cấp hoặc hạ cấp đăng ký của họ.
await client.subscriptions.changePlan('sub_123', {
  product_id: 'prod_pro',
  quantity: 1,
  proration_billing_mode: 'prorated_immediately',
  discount_codes: ['UPGRADE20']
});
discount_codes valueHành vi khi thay đổi gói
undefined / null (không được cung cấp)Giảm giá hiện có với preserve_on_plan_change=true được giữ lại nếu áp dụng cho sản phẩm mới.
[] (mảng trống)Tất cả giảm giá hiện có bị xóa khỏi đăng ký.
['CODE_A', 'CODE_B', ...]Thay thế bất kỳ giảm giá hiện có nào với bộ mã chồng này, áp dụng theo thứ tự của mảng.
Đọc tất cả giảm giá đã áp dụng trên đăng ký thông qua mảng discounts mới trong phản hồi đăng ký. Mỗi mục bao gồm discount_id, position, cycles_remaining (cho đăng ký), và mã gốc.

Cho phép nhập mã giảm giá mà không áp dụng trước

Cho phép khách hàng nhập mã tại thanh toán mà không cần truyền mã trước.
const session = await client.checkoutSessions.create({
  product_cart: [
    { product_id: 'prod_abc', quantity: 1 }
  ],
  feature_flags: {
    allow_discount_code: true
  },
  return_url: 'https://yoursite.com/return'
});

Thực hành Tốt nhất

  • Đặt tên rõ ràng: Sử dụng các mã dễ nhận biết phù hợp với tên chiến dịch
  • Giới hạn thời gian: Thêm ngày hết hạn để thúc đẩy sự gấp gáp và ngăn chặn lạm dụng
  • Quy mô khôn ngoan: Giới hạn vào sản phẩm cụ thể để tránh chảy máu lợi nhuận
  • Xác thực sớm: Kiểm tra khả năng áp dụng mã trước khi xác nhận thanh toán
  • Giám sát tác động: Theo dõi sử dụng và chuyển đổi theo chiến dịch
Mã giảm giá là công cụ mạnh mẽ cho việc thu hút và giữ chân. Bắt đầu với các ưu đãi đơn giản, đặt tên rõ ràng, xác thực kỹ lưỡng, và cải thiện dựa trên hiệu suất.
Last modified on May 22, 2026