In-App Purchase — khái niệm, các loại giao dịch và cách thức kiếm tiền

Tác giả: IT Sectr Đã đăng: 2026-04-22 Thời gian đọc: 9 phút

In-App Purchase (IAP) là cơ chế mua hàng trong ứng dụng cho phép người dùng mua hàng hóa và dịch vụ kỹ thuật số trực tiếp trong ứng dụng di động. Các nền tảng iOS và Android cung cấp API tích hợp để xử lý thanh toán mà không cần chuyển dữ liệu thẻ ngân hàng cho nhà phát triển. Theo tài liệu Apple StoreKit, IAP xử lý hơn 500 tỷ đô la giao dịch hàng năm qua App Store và Google Play.

Những điểm chính

  • In-App Purchase — cơ chế mua hàng hóa kỹ thuật số trong ứng dụng di động qua API cửa hàng.
  • Consumable — giao dịch một lần có thể mua nhiều lần (xu, mạng sống, năng lượng).
  • Non-Consumable — giao dịch vĩnh viễn có sẵn sau khi mua một lần (cấp độ, bộ lọc, tính năng cao cấp).
  • Auto-Renewable Subscription — thanh toán định kỳ để truy cập nội dung hoặc dịch vụ trong một khoảng thời gian.
  • Server-side receipt validation — xác minh biên lai bắt buộc trên máy chủ của riêng bạn để bảo vệ khỏi gian lận.

In-App Purchase là gì?

In-App Purchase (IAP) là công nghệ cho phép bán hàng hóa và dịch vụ kỹ thuật số trong ứng dụng di động. Thanh toán được xử lý qua App Store (trên iOS) hoặc Google Play (trên Android), các nền tảng này thu phí hoa hồng cho việc xử lý giao dịch. Nhà phát triển nhận được số tiền sau khi trừ hoa hồng của cửa hàng.

Apple thu phí hoa hồng 30% (15% cho doanh nghiệp nhỏ có doanh thu dưới 1 triệu đô la). Google Play cũng thu 30% (15% trên 1 triệu đô la đầu tiên doanh thu của nhà phát triển). Từ năm 2024, Google đang thử nghiệm chương trình User Choice Billing, cho phép nhà phát triển sử dụng các hệ thống thanh toán thay thế.

IAP là bắt buộc để bán hàng hóa kỹ thuật số trong ứng dụng theo chính sách của App Store và Google Play. Hàng hóa vật lý, dịch vụ (đặt xe, giao đồ ăn) và thanh toán ngang hàng có thể sử dụng hệ thống thanh toán của bên thứ ba.

Các loại In-App Purchase: consumable, non-consumable và đăng ký

App Store và Google Play hỗ trợ ba loại In-App Purchase chính. Mỗi loại được thiết kế cho các mô hình kiếm tiền khác nhau. Việc chọn loại sản phẩm ảnh hưởng đến logic khôi phục giao dịch, quản lý đăng ký và hành vi khi cài đặt lại ứng dụng.

Consumable (giao dịch tiêu hao)

Giao dịch tiêu hao là những mặt hàng có thể mua nhiều lần và bị tiêu hao trong quá trình sử dụng. Ví dụ điển hình: tiền tệ trong trò chơi (xu, ngọc), mạng sống thêm, bộ tăng tốc, nâng cấp tiêu hao. Hàng tiêu hao không được khôi phục khi cài đặt lại ứng dụng — nhà phát triển tự quản lý số dư của mỗi người dùng trên máy chủ của mình.

Non-Consumable (giao dịch không tiêu hao)

Giao dịch không tiêu hao là những mặt hàng được mua một lần và có sẵn vĩnh viễn. Ví dụ: phiên bản đầy đủ của ứng dụng, cấp độ cao cấp, mở khóa bộ lọc, xóa quảng cáo. Sản phẩm không tiêu hao có thể được khôi phục qua API Restore Purchases: sau khi cài đặt lại, người dùng có thể lấy lại các mặt hàng đã mua trước đó mà không phải trả tiền lần nữa.

Auto-Renewable Subscription (đăng ký tự động gia hạn)

Đăng ký tự động gia hạn là thanh toán định kỳ để truy cập nội dung hoặc dịch vụ trong một khoảng thời gian nhất định (tuần, tháng, năm). Đăng ký tự động gia hạn cho đến khi người dùng hủy trong cài đặt tài khoản. Các cửa hàng cung cấp thông báo máy chủ (App Store Server Notifications, Google Play Developer Notifications) về thay đổi trạng thái đăng ký: gia hạn, hết hạn, hoàn tiền.

Thiết lập IAP trong App Store Connect và Google Play Console

Thiết lập In-App Purchase bắt đầu trong bảng điều khiển nhà phát triển: App Store Connect cho iOS và Google Play Console cho Android. Cho mỗi sản phẩm, bạn chỉ định ID sản phẩm (Product ID), tên, mô tả, loại và giá bằng đô la Mỹ với chuyển đổi tự động sang tiền tệ khu vực. Sau khi tạo, sản phẩm trải qua quá trình kiểm duyệt của cửa hàng.

Trong App Store Connect, sản phẩm IAP được tạo trong mục Features → In-App Purchases. Cho mỗi sản phẩm, bạn chọn loại (consumable, non-consumable, auto-renewable subscription, non-renewing subscription) và điền tên bản địa hóa. Cho đăng ký, các Nhóm đăng ký (Subscription Groups) được cấu hình thêm — các nhóm đăng ký có thể thay thế lẫn nhau.

Trong Google Play Console, sản phẩm được quản lý được cấu hình trong mục Monetise → Products → In-app products. Google sử dụng thuật ngữ Managed Product (tương tự non-consumable) và Subscription. Cho giao dịch tiêu hao trên Android, một cờ consume riêng được sử dụng để đặt lại sản phẩm cho việc mua lại.

Việc kiểm duyệt sản phẩm IAP thường mất 24–48 giờ trên App Store và vài giờ trên Google Play. Thay đổi giá được áp dụng ngay lập tức mà không cần kiểm duyệt lại. ID sản phẩm không thể thay đổi sau khi tạo — chỉ có thể xóa và tạo lại.

Xác minh biên lai phía máy chủ và bảo vệ chống gian lận

Xác minh biên lai là bước bắt buộc trong xử lý In-App Purchase. Ứng dụng khách gửi biên lai đến máy chủ của bạn, máy chủ xác minh qua API của Apple (https://buy.itunes.apple.com) hoặc Google (https://androidpublisher.googleapis.com), và chỉ sau khi xác minh thành công mới cấp mặt hàng cho người dùng.

Nếu không có xác minh phía máy chủ, kẻ tấn công có thể giả mạo phản hồi của cửa hàng và nhận được mặt hàng miễn phí. Xác minh phía máy khách không an toàn vì nó chạy trong môi trường do người dùng kiểm soát. Xác minh phía máy chủ đảm bảo biên lai là xác thực và thanh toán đã thành công. Đối với Apple, xác minh được thực hiện qua điểm cuối verifyReceipt (sản xuất hoặc sandbox), đối với Google — qua Android Publisher API. Cả hai cửa hàng đều trả về xác nhận ở định dạng JSON.

Apple trả về dữ liệu mua hàng trong biên lai: product_id, transaction_id, purchase_date, expiration_date (cho đăng ký). Google trả về các trường tương tự qua API Purchases.products.get hoặc Purchases.subscriptions.get. Máy chủ nên lưu trữ transaction_id của mỗi biên lai và từ chối các yêu cầu trùng lặp có cùng ID để bảo vệ khỏi tấn công phát lại.

Tích hợp IAP vào ứng dụng di động với Swift và Kotlin

Tích hợp In-App Purchase yêu cầu kết nối các thư viện nền tảng: StoreKit 2 trên iOS và Billing Library 7+ trên Android. API cho phép yêu cầu danh sách sản phẩm, bắt đầu giao dịch, xử lý kết quả và khôi phục các mặt hàng đã mua trước đó.

Swift — StoreKit 2 trên iOS 17+

swift
import StoreKit

func purchaseProduct(productID: String) async throws {
    guard let product = try await Product.products(for: [productID]).first else { return }
    let result = try await product.purchase()
    switch result {
    case .success(let verification):
        let transaction = try verification.payloadValue
        await validateReceipt(transaction)
        await transaction.finish()
    default:
        break
    }
}

Kotlin — Billing Library 7

kotlin
import com.android.billingclient.api.BillingClient
import com.android.billingclient.api.BillingFlowParams

val billingClient = BillingClient.newBuilder(context)
    .setListener { billingResult, purchases ->
        if (billingResult.responseCode == BillingClient.BillingResponseCode.OK) {
            purchases?.forEach { purchase ->
                validateReceipt(purchase)
            }
        }
    }
    .build()

val params = BillingFlowParams.newBuilder()
    .setProductDetails(productDetails)
    .build()
billingClient.launchBillingFlow(activity, params)

Xác minh biên lai phía máy chủ (Node.js)

js
const response = await fetch('https://buy.itunes.apple.com/verifyReceipt', {
    method: 'POST',
    body: JSON.stringify({
        'receipt-data': receiptBase64,
        'password': 'SHARED_SECRET'
    })
})

const data = await response.json()
if (data.status === 0) {
    // Biên lai đã xác nhận — đang cấp mặt hàng
    await grantProduct(data.receipt.product_id)
}

Các phương pháp kiếm tiền tốt nhất qua In-App Purchase

Kiếm tiền qua In-App Purchase đòi hỏi chiến lược định giá và UX được suy nghĩ kỹ lưỡng. Người dùng có xu hướng mua hàng đầu tiên hơn nếu được cung cấp gói khởi đầu hấp dẫn với giá thấp. Apple và Google khuyến nghị hiển thị giá sản phẩm trước bước xác nhận mua hàng.

Onboarding đăng ký là giai đoạn chuyển đổi quan trọng. Cho người dùng thấy giá trị của đăng ký trước khi yêu cầu thanh toán: thời gian dùng thử miễn phí, so sánh gói, danh sách lợi ích. Theo nghiên cứu, thời gian dùng thử miễn phí tăng tỷ lệ chuyển đổi thành người dùng trả phí lên 25–40%.

Khôi phục giao dịch là bắt buộc cho sản phẩm không tiêu hao và đăng ký. Nút khôi phục phải có sẵn trong cài đặt ứng dụng hoặc trên màn hình thanh toán. Google và Apple có thể từ chối ứng dụng nếu không triển khai khôi phục giao dịch cho các loại IAP tương ứng.

Thời gian gia hạn (Grace Period) là khoảng thời gian trì hoãn cho đăng ký trong đó người dùng vẫn giữ quyền truy cập sau khi thanh toán thất bại. iOS và Android hỗ trợ thời gian gia hạn lên đến 30 ngày. Bật thời gian gia hạn giúp giảm tỷ lệ rời bỏ (churn rate) xuống 10–15%.

Thử nghiệm A/B giá IAP là phương pháp kiếm tiền quan trọng. App Store Connect hỗ trợ định giá địa phương (Price Tiers) với khả năng thay đổi giá mà không cần kiểm duyệt lại. Google Play Console cho phép cấu hình tới 5 gói cơ sở với giá khác nhau cho một sản phẩm đăng ký. Khuyến nghị thử nghiệm ít nhất hai điểm giá: hiện tại và mới. Thử nghiệm nên được tiến hành trong 2–4 tuần trên mẫu ít nhất 1000 người dùng cho mỗi điểm giá.

Đánh giá cửa hàng và quản lý từ chối là giai đoạn bắt buộc khi xuất bản ứng dụng có IAP. Apple đặc biệt kiểm tra kỹ các ứng dụng có đăng ký tự động gia hạn: bạn phải cung cấp tài khoản thử nghiệm với đăng ký đang hoạt động, hiển thị màn hình hủy đăng ký và triển khai khôi phục giao dịch. Google Play ít nghiêm ngặt hơn nhưng yêu cầu xác nhận quyền đối với nội dung kỹ thuật số. Khuyến nghị thêm ghi chú đánh giá (Review Notes) mô tả logic IAP.

Câu hỏi thường gặp

In-App Purchase là gì và hoạt động như thế nào?

In-App Purchase (IAP) là cơ chế mua hàng hóa kỹ thuật số trong ứng dụng di động. Thanh toán được xử lý qua App Store hoặc Google Play, các nền tảng này giữ lại 30% hoa hồng (15% cho doanh nghiệp nhỏ) và chuyển phần còn lại cho nhà phát triển.

Có những loại In-App Purchase nào?

Có ba loại IAP: tiêu hao (có thể dùng hết — xu, mạng sống), không tiêu hao (vĩnh viễn — xóa quảng cáo, phiên bản đầy đủ) và đăng ký tự động gia hạn (định kỳ — truy cập nội dung trong một khoảng thời gian). Giao dịch không tiêu hao hỗ trợ khôi phục.

Làm thế nào để bảo vệ In-App Purchase khỏi bị hack?

Phương pháp bảo vệ chính là xác minh biên lai phía máy chủ. Máy khách gửi biên lai đến máy chủ của bạn, và máy chủ xác minh qua API của Apple hoặc Google. Nếu không có xác minh phía máy chủ, kẻ tấn công có thể giả mạo phản hồi của cửa hàng và nhận được mặt hàng miễn phí.

Làm thế nào để thiết lập In-App Purchase trong ứng dụng?

Thiết lập IAP bao gồm: tạo sản phẩm trong App Store Connect hoặc Google Play Console, kết nối StoreKit (iOS) hoặc Billing Library (Android), triển khai luồng mua hàng và xác minh biên lai phía máy chủ. Mỗi sản phẩm trải qua kiểm duyệt của cửa hàng.

Hoa hồng cửa hàng cho In-App Purchase là bao nhiêu?

Apple thu 30% (15% cho nhà phát triển có doanh thu dưới 1 triệu đô la). Google Play cũng thu 30% (15% trên 1 triệu đầu tiên). Từ năm 2024, Google đang thử nghiệm các hệ thống thanh toán thay thế qua User Choice Billing. Nhà phát triển có thể chọn nhà cung cấp thanh toán bên thứ ba nhưng phải trả phí dịch vụ 11–12% cho Google.

Tổng kết

  • In-App Purchase — cơ chế bán hàng hóa kỹ thuật số trong ứng dụng di động qua API App Store và Google Play.
  • Ba loại IAP: tiêu hao (có thể dùng hết), không tiêu hao (vĩnh viễn) và đăng ký tự động gia hạn (định kỳ).
  • Hoa hồng cửa hàng là 30% (15% cho doanh nghiệp nhỏ).
  • Xác minh biên lai phía máy chủ — bảo vệ bắt buộc chống giả mạo biên lai phía máy khách.
  • Kiểm duyệt sản phẩm IAP mất 24–48 giờ trên App Store và vài giờ trên Google Play.
  • Onboarding đăng ký với thời gian dùng thử miễn phí tăng tỷ lệ chuyển đổi người dùng trả phí lên 25–40%.
  • Thời gian gia hạn lên đến 30 ngày giảm tỷ lệ rời bỏ người đăng ký xuống 10–15% khi thanh toán thất bại.

Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay

IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.

Thảo luận dự án

Đọc thêm