In-App Purchase (IAP) — este mecanismul de cumpărături integrate în aplicație care permite utilizatorilor să achiziționeze bunuri și servicii digitale direct din aplicația mobilă. Platformele iOS și Android oferă API-uri integrate pentru efectuarea plăților fără transmiterea datelor cardului bancar către dezvoltator. Conform documentației Apple StoreKit, IAP procesează peste 500 de miliarde de dolari în tranzacții anual prin App Store și Google Play.
Principalele puncte
In-App Purchase (IAP) — este o tehnologie care permite vânzarea de bunuri și servicii digitale în cadrul unei aplicații mobile. Plățile sunt procesate prin App Store (pe iOS) sau Google Play (pe Android), care percep un comision pentru efectuarea tranzacției. Dezvoltatorul primește suma după deducerea comisionului magazinului.
Apple percepe un comision de 30% (15% pentru afaceri mici cu venituri de până la 1 milion de dolari). Google Play percepe de asemenea 30% (15% pentru primul 1 milion de dolari din venitul dezvoltatorului). Din 2024, Google testează programul User Choice Billing, care permite dezvoltatorilor să utilizeze sisteme de plată alternative.
IAP este obligatoriu pentru vânzarea bunurilor digitale în aplicații conform politicilor App Store și Google Play. Bunurile fizice, serviciile (comanda taxi, livrarea mâncării) și plățile peer-to-peer pot utiliza sisteme de plată terțe.
App Store și Google Play suportă trei tipuri principale de In-App Purchase. Fiecare tip este destinat diferitelor modele de monetizare. Alegerea tipului de produs influențează logica de restaurare a achizițiilor, gestionarea abonamentelor și comportamentul la reinstalarea aplicației.
Consumable — sunt bunuri care pot fi achiziționate de mai multe ori și se consumă în timpul utilizării. Exemple tipice: valută de joc (monede, diamante), vieți suplimentare, acceleratoare, boostere consumabile. Consumable nu se restaurează la reinstalarea aplicației — dezvoltatorul gestionează singur soldul fiecărui utilizator pe serverul său.
Non-Consumable — sunt bunuri care se cumpără o singură dată și rămân disponibile permanent. Exemple: versiunea completă a aplicației, niveluri premium, deblocarea filtrelor, eliminarea reclamelor. Produsele non-consumabile se restaurează prin API-ul Restore Purchases: după reinstalare, utilizatorul poate recupera bunurile cumpărate anterior fără plată suplimentară.
Auto-Renewable Subscription — sunt plăți regulate pentru acces la conținut sau serviciu pe o perioadă determinată (săptămână, lună, an). Abonamentul se reînnoiește automat până când utilizatorul îl anulează în setările contului. Magazinele oferă notificări server (App Store Server Notifications, Google Play Developer Notifications) privind modificarea stării abonamentului: reînnoire, expirare, rambursare.
Configurarea In-App Purchase începe în panourile dezvoltatorului: App Store Connect pentru iOS și Google Play Console pentru Android. Pentru fiecare produs se specifică un identificator (Product ID), nume, descriere, tip și preț în dolari americani cu conversie automată în valute regionale. După creare, produsul trece prin moderarea magazinului.
În App Store Connect produsele IAP se creează în secțiunea Features → In-App Purchases. Pentru fiecare produs se alege tipul (consumable, non-consumable, auto-renewable subscription, non-renewing subscription) și se completează denumirile localizate. Pentru abonamente se configurează suplimentar grupuri (Subscription Groups) — grupuri de abonamente interschimbabile.
În Google Play Console produsele gestionate (managed products) se configurează în secțiunea Monetise → Products → In-app products. Google utilizează termenii Managed Product (analog non-consumable) și Subscription. Pentru achizițiile consumable pe Android se utilizează un flag separat consume care resetează produsul pentru re-cumpărare.
Moderarea produselor IAP durează în medie 24–48 de ore în App Store și câteva ore în Google Play. Modificările de preț se aplică imediat fără re-moderare. Product ID nu poate fi modificat după creare — poate fi doar șters și recreat.
Receipt validation (verificarea chitanței) — etapa obligatorie a procesării In-App Purchase. Aplicația client trimite chitanța (receipt) pe propriul server, serverul o verifică prin API-ul Apple (https://buy.itunes.apple.com) sau Google (https://androidpublisher.googleapis.com) și abia după validarea reușită atribuie bunul utilizatorului.
Fără validare pe server, un atacator poate falsifica răspunsul magazinului și obține bunul gratuit. Client-side validation este nesigură deoarece se execută într-un mediu controlat de utilizator. Verificarea pe server garantează că chitanța este autentică și plata a fost efectuată cu succes. Pentru Apple verificarea se face prin endpoint-ul verifyReceipt (production sau sandbox), pentru Google — prin Android Publisher API. Ambele magazine returnează confirmarea în format JSON.
Apple returnează în chitanță datele despre achiziție: product_id, transaction_id, purchase_date, expiration_date (pentru abonamente). Google returnează câmpuri similare prin API-ul Purchases.products.get sau Purchases.subscriptions.get. Serverul trebuie să stocheze transaction_id fiecărei chitanțe și să respingă cererile repetate cu același ID pentru protecția împotriva atacurilor de tip replay.
Integrarea In-App Purchase necesită conectarea bibliotecilor de platformă: StoreKit 2 pe iOS și Billing Library 7+ pe Android. API-urile permit solicitarea listei de produse, inițierea achiziției, procesarea rezultatului și restaurarea bunurilor achiziționate anterior.
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) {
// Chitanța confirmată — atribuim bunul
await grantProduct(data.receipt.product_id)
}
Monetizarea prin In-App Purchase necesită o strategie de prețuri și UX bine gândită. Utilizatorii sunt mai predispuși la prima achiziție dacă li se oferă un pachet de pornire atractiv (starter pack) la un preț scăzut. Apple și Google recomandă afișarea prețului produsului înainte de momentul confirmării achiziției.
Subscription onboarding — etapa critică de conversie. Arătați utilizatorului valoarea abonamentului înainte de a solicita plata: perioadă de probă gratuită, compararea planurilor, lista de beneficii. Potrivit cercetărilor, perioada de probă gratuită (free trial) crește conversia utilizatorilor plătitori cu 25–40%.
Restore Purchases este obligatoriu pentru produsele non-consumable și abonamente. Butonul de restaurare trebuie să fie disponibil în setările aplicației sau pe ecranul de plată. Google și Apple pot respinge aplicația dacă restaurarea achizițiilor nu este implementată pentru tipurile corespunzătoare de IAP.
Grace Period — perioadă de grație pentru abonamente în care utilizatorul păstrează accesul după o plată eșuată. iOS și Android suportă grace period de până la 30 de zile. Activarea grace period reduce rata de abandon (churn rate) cu 10–15%.
Testarea A/B a prețurilor IAP — o practică importantă de monetizare. App Store Connect suportă prețuri locale (Price Tiers) cu posibilitatea de a schimba prețul fără re-moderarea produsului. Google Play Console permite configurarea a până la 5 planuri de bază cu prețuri diferite pentru un singur produs de abonament. Se recomandă testarea a cel puțin două puncte de preț: cel curent și cel nou. Testarea se desfășoară timp de 2–4 săptămâni pe un eșantion de cel puțin 1000 de utilizatori pentru fiecare punct de preț.
Revizuirea magazinului și gestionarea respingerii — etapa obligatorie de publicare a aplicației cu IAP. Apple verifică cu deosebită atenție aplicațiile cu abonamente cu reînnoire automată: trebuie să furnizați un cont de test cu abonament activ, să afișați ecranul de anulare a abonamentului și să implementați Restore Purchases. Google Play este mai puțin strict, dar solicită confirmarea drepturilor asupra conținutului digital. Se recomandă adăugarea unei note pentru recenzor (Review Notes) cu descrierea logicii IAP.
Întrebări frecvente
In-App Purchase (IAP) — este mecanismul de achiziție a bunurilor digitale în cadrul unei aplicații mobile. Plata este procesată prin App Store sau Google Play, care rețin un comision de 30% (15% pentru afaceri mici) și transferă restul dezvoltatorului.
Există trei tipuri de IAP: consumable (consumabile — monede, vieți), non-consumable (permanente — eliminarea reclamelor, versiunea completă) și auto-renewable subscription (reînnoire automată — acces la conținut pe o perioadă). Non-consumable suportă restaurarea achizițiilor.
Metoda principală de protecție — server-side receipt validation. Clientul trimite chitanța pe serverul dumneavoastră, serverul o verifică prin API-ul Apple sau Google. Fără validare pe server, un atacator poate falsifica răspunsul magazinului și obține bunul gratuit.
Configurarea IAP include: crearea produselor în App Store Connect sau Google Play Console, conectarea StoreKit (iOS) sau Billing Library (Android), implementarea achiziției și verificarea pe server a chitanței. Fiecare produs trece prin moderarea magazinului.
Apple percepe 30% (15% pentru dezvoltatorii cu venituri de până la 1 milion de dolari). Google Play percepe de asemenea 30% (15% pentru primul 1 milion). Din 2024, Google testează sisteme de plată alternative prin User Choice Billing. Dezvoltatorul poate alege un furnizor de plăți terț, dar trebuie să plătească Google o taxă de serviciu de 11–12%.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și