In-App Purchase (IAP) — adalah mekanisme pembelian dalam aplikasi yang memungkinkan pengguna membeli barang dan layanan digital langsung di dalam aplikasi seluler. Platform iOS dan Android menyediakan API bawaan untuk melakukan pembayaran tanpa mengirimkan data kartu bank ke pengembang. Menurut dokumentasi Apple StoreKit, IAP memproses lebih dari 500 miliar dolar transaksi setiap tahun melalui App Store dan Google Play.
Poin Utama
In-App Purchase (IAP) — adalah teknologi yang memungkinkan penjualan barang dan layanan digital di dalam aplikasi seluler. Pembayaran diproses melalui App Store (di iOS) atau Google Play (di Android), yang mengenakan komisi untuk melakukan transaksi. Pengembang menerima dana setelah dikurangi komisi toko.
Apple mengenakan komisi 30% (15% untuk usaha kecil dengan pendapatan hingga 1 juta dolar). Google Play juga mengenakan 30% (15% untuk 1 juta dolar pertama pendapatan pengembang). Sejak 2024, Google menguji program User Choice Billing yang memungkinkan pengembang menggunakan sistem pembayaran alternatif.
IAP wajib untuk penjualan barang digital di aplikasi menurut kebijakan App Store dan Google Play. Barang fisik, layanan (pesan taksi, antar makanan) dan pembayaran peer-to-peer dapat menggunakan sistem pembayaran pihak ketiga.
App Store dan Google Play mendukung tiga jenis utama In-App Purchase. Setiap jenis ditujukan untuk model monetisasi yang berbeda. Pemilihan jenis produk mempengaruhi logika pemulihan pembelian, manajemen langganan dan perilaku saat instal ulang aplikasi.
Consumable — adalah barang yang dapat dibeli berulang kali dan habis saat digunakan. Contoh tipikal: mata uang game (koin, berlian), nyawa tambahan, akselerator, booster habis pakai. Consumable tidak dipulihkan saat instal ulang aplikasi — pengembang mengelola saldo setiap pengguna di servernya sendiri.
Non-Consumable — adalah barang yang dibeli sekali dan tetap tersedia selamanya. Contoh: versi lengkap aplikasi, level premium, membuka filter, menghapus iklan. Produk non-consumable dipulihkan melalui Restore Purchases API: setelah instal ulang, pengguna dapat mengembalikan barang yang dibeli sebelumnya tanpa pembayaran ulang.
Auto-Renewable Subscription — adalah pembayaran rutin untuk akses ke konten atau layanan untuk periode tertentu (minggu, bulan, tahun). Langganan diperpanjang secara otomatis sampai pengguna membatalkannya di pengaturan akun. Toko menyediakan notifikasi server (App Store Server Notifications, Google Play Developer Notifications) tentang perubahan status langganan: perpanjangan, kedaluwarsa, pengembalian.
Konfigurasi In-App Purchase dimulai di panel pengembang: App Store Connect untuk iOS dan Google Play Console untuk Android. Untuk setiap produk ditentukan pengidentifikasi (Product ID), nama, deskripsi, jenis dan harga dalam dolar AS dengan konversi otomatis ke mata uang regional. Setelah dibuat, produk melalui moderasi toko.
Di App Store Connect produk IAP dibuat di bagian Features → In-App Purchases. Untuk setiap produk dipilih jenis (consumable, non-consumable, auto-renewable subscription, non-renewing subscription) dan diisi nama yang dilokalisasi. Untuk langganan, tambahan dikonfigurasi grup (Subscription Groups) — grup langganan yang saling dipertukarkan.
Di Google Play Console produk terkelola (managed products) dikonfigurasi di bagian Monetise → Products → In-app products. Google menggunakan istilah Managed Product (analog non-consumable) dan Subscription. Untuk pembelian consumable di Android digunakan flag consume terpisah yang mereset produk untuk pembelian ulang.
Moderasi produk IAP rata-rata memakan waktu 24–48 jam di App Store dan beberapa jam di Google Play. Perubahan harga diterapkan segera tanpa moderasi ulang. Product ID tidak dapat diubah setelah dibuat — hanya dapat dihapus dan dibuat ulang.
Receipt validation (verifikasi tanda terima) — tahap wajib pemrosesan In-App Purchase. Aplikasi klien mengirim tanda terima (receipt) ke server sendiri, server memverifikasinya melalui API Apple (https://buy.itunes.apple.com) atau Google (https://androidpublisher.googleapis.com) dan hanya setelah validasi berhasil memberikan barang ke pengguna.
Tanpa validasi server, penyerang dapat memalsukan respons toko dan mendapatkan barang secara gratis. Client-side validation tidak aman karena dijalankan di lingkungan yang dikendalikan pengguna. Verifikasi server menjamin bahwa tanda terima asli dan pembayaran berhasil. Untuk Apple verifikasi dilakukan melalui endpoint verifyReceipt (production atau sandbox), untuk Google — melalui Android Publisher API. Kedua toko mengembalikan konfirmasi dalam format JSON.
Apple mengembalikan dalam tanda terima data pembelian: product_id, transaction_id, purchase_date, expiration_date (untuk langganan). Google mengembalikan bidang serupa melalui API Purchases.products.get atau Purchases.subscriptions.get. Server harus menyimpan transaction_id setiap tanda terima dan menolak permintaan berulang dengan ID yang sama untuk perlindungan dari serangan replay.
Integrasi In-App Purchase memerlukan menghubungkan pustaka platform: StoreKit 2 di iOS dan Billing Library 7+ di Android. API memungkinkan meminta daftar produk, memulai pembelian, memproses hasil dan memulihkan barang yang dibeli sebelumnya.
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
}
}
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)
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) {
// Tanda terima dikonfirmasi — memberikan barang
await grantProduct(data.receipt.product_id)
}
Monetisasi melalui In-App Purchase memerlukan strategi harga dan UX yang matang. Pengguna lebih cenderung melakukan pembelian pertama jika ditawari paket awal yang menarik (starter pack) dengan harga rendah. Apple dan Google merekomendasikan menampilkan harga produk sebelum konfirmasi pembelian.
Subscription onboarding — tahap konversi kritis. Tunjukkan kepada pengguna nilai langganan sebelum meminta pembayaran: masa uji coba gratis, perbandingan paket, daftar keuntungan. Menurut penelitian, masa uji coba gratis (free trial) meningkatkan konversi pengguna berbayar sebesar 25–40%.
Restore Purchases wajib untuk produk non-consumable dan langganan. Tombol pemulihan harus tersedia di pengaturan aplikasi atau di layar pembayaran. Google dan Apple dapat menolak aplikasi jika pemulihan pembelian tidak diimplementasikan untuk jenis IAP yang sesuai.
Grace Period — periode tenggang untuk langganan di mana pengguna tetap memiliki akses setelah pembayaran gagal. iOS dan Android mendukung grace period hingga 30 hari. Mengaktifkan grace period mengurangi tingkat churn sebesar 10–15%.
Pengujian A/B harga IAP — praktik monetisasi penting. App Store Connect mendukung harga lokal (Price Tiers) dengan kemampuan mengubah harga tanpa moderasi ulang produk. Google Play Console memungkinkan mengonfigurasi hingga 5 paket dasar dengan harga berbeda untuk satu produk langganan. Disarankan menguji setidaknya dua titik harga: saat ini dan baru. Pengujian dilakukan selama 2–4 minggu pada sampel setidaknya 1000 pengguna per titik harga.
Peninjauan Toko dan Manajemen Penolakan — tahap wajib publikasi aplikasi dengan IAP. Apple secara khusus memeriksa aplikasi dengan langganan perpanjangan otomatis: perlu menyediakan akun uji dengan langganan aktif, menampilkan layar pembatalan langganan dan mengimplementasikan Restore Purchases. Google Play kurang ketat tetapi meminta konfirmasi hak atas konten digital. Disarankan menambahkan catatan untuk peninjau (Review Notes) dengan deskripsi logika IAP.
Pertanyaan Umum
In-App Purchase (IAP) — adalah mekanisme pembelian barang digital di dalam aplikasi seluler. Pembayaran diproses melalui App Store atau Google Play yang menahan komisi 30% (15% untuk usaha kecil) dan mentransfer sisanya ke pengembang.
Ada tiga jenis IAP: consumable (habis pakai — koin, nyawa), non-consumable (permanen — hapus iklan, versi lengkap) dan auto-renewable subscription (perpanjangan otomatis — akses ke konten untuk periode). Non-consumable mendukung pemulihan pembelian.
Metode perlindungan utama — server-side receipt validation. Klien mengirim tanda terima ke server Anda, server memverifikasinya melalui API Apple atau Google. Tanpa validasi server, penyerang dapat memalsukan respons toko dan mendapatkan barang gratis.
Konfigurasi IAP meliputi: membuat produk di App Store Connect atau Google Play Console, menghubungkan StoreKit (iOS) atau Billing Library (Android), mengimplementasikan pembelian dan verifikasi server tanda terima. Setiap produk melalui moderasi toko.
Apple mengenakan 30% (15% untuk pengembang dengan pendapatan hingga 1 juta dolar). Google Play juga mengenakan 30% (15% untuk 1 juta pertama). Sejak 2024, Google menguji sistem pembayaran alternatif melalui User Choice Billing. Pengembang dapat memilih penyedia pembayaran pihak ketiga tetapi harus membayar biaya layanan Google 11–12%.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga