In-App Purchase (IAP) হল একটি ইন-অ্যাপ ক্রয় প্রক্রিয়া যা ব্যবহারকারীদের মোবাইল অ্যাপের ভিতরে সরাসরি ডিজিটাল পণ্য এবং পরিষেবা কেনার অনুমতি দেয়। iOS এবং Android প্ল্যাটফর্ম ডেভেলপারের কাছে ব্যাংক কার্ডের তথ্য না পাঠিয়েই পেমেন্ট প্রক্রিয়াকরণের জন্য বিল্ট-ইন API সরবরাহ করে। Apple StoreKit ডকুমেন্টেশন অনুসারে, IAP App Store এবং Google Play-এর মাধ্যমে বার্ষিক 500 বিলিয়ন ডলারের বেশি লেনদেন প্রক্রিয়া করে।
মূল পয়েন্ট
In-App Purchase (IAP) একটি প্রযুক্তি যা মোবাইল অ্যাপের ভিতরে ডিজিটাল পণ্য এবং পরিষেবা বিক্রির অনুমতি দেয়। পেমেন্ট App Store (iOS-এ) বা Google Play (Android-এ)-এর মাধ্যমে প্রক্রিয়াজাত করা হয়, যা লেনদেন প্রক্রিয়াকরণের জন্য কমিশন নেয়। ডেভেলপার স্টোরের কমিশন বাদ দিয়ে তহবিল পায়।
Apple 30% কমিশন নেয় (ছোট ব্যবসার জন্য 15% যাদের আয় 1 মিলিয়ন ডলার পর্যন্ত)। Google Play-ও 30% নেয় (ডেভেলপার আয়ের প্রথম 1 মিলিয়ন ডলারে 15%)। 2024 সাল থেকে, Google User Choice Billing প্রোগ্রাম পরীক্ষা করছে, যা ডেভেলপারদের বিকল্প পেমেন্ট সিস্টেম ব্যবহার করতে দেয়।
App Store এবং Google Play-এর নীতি অনুসারে অ্যাপে ডিজিটাল পণ্য বিক্রির জন্য IAP বাধ্যতামূলক। ভৌত পণ্য, পরিষেবা (ক্যাব বুকিং, খাবার ডেলিভারি) এবং পিয়ার-টু-পিয়ার পেমেন্ট তৃতীয়-পক্ষের পেমেন্ট সিস্টেম ব্যবহার করতে পারে।
App Store এবং Google Play তিনটি প্রধান ধরনের In-App Purchase সমর্থন করে। প্রতিটি প্রকার বিভিন্ন মনিটাইজেশন মডেলের জন্য ডিজাইন করা হয়েছে। পণ্যের ধরন নির্বাচন ক্রয় পুনরুদ্ধার লজিক, সাবস্ক্রিপশন ব্যবস্থাপনা এবং অ্যাপ পুনঃস্থাপনের সময় আচরণকে প্রভাবিত করে।
ভোগ্য ক্রয় হল সেই আইটেম যা একাধিকবার কেনা যায় এবং ব্যবহারের সময় খরচ হয়। সাধারণ উদাহরণ: গেমের মুদ্রা (কয়েন, রত্ন), অতিরিক্ত জীবন, বুস্টার, ভোগ্য পাওয়ার-আপ। অ্যাপ পুনরায় ইনস্টল করলে ভোগ্য পণ্য পুনরুদ্ধার হয় না — ডেভেলপার নিজের সার্ভারে প্রতিটি ব্যবহারকারীর ব্যালেন্স পরিচালনা করে।
অ-ভোগ্য ক্রয় হল সেই আইটেম যা একবার কেনা হয় এবং চিরকাল উপলব্ধ থাকে। উদাহরণ: অ্যাপের সম্পূর্ণ সংস্করণ, প্রিমিয়াম লেভেল, ফিল্টার আনলক, বিজ্ঞাপন অপসারণ। Restore Purchases API-এর মাধ্যমে অ-ভোগ্য পণ্য পুনরুদ্ধার করা যায়: পুনরায় ইনস্টলের পরে, ব্যবহারকারী পূর্বে কেনা আইটেমগুলি পুনরায় অর্থ প্রদান ছাড়াই ফিরে পেতে পারে।
স্বয়ং-নবায়নযোগ্য সাবস্ক্রিপশন একটি নির্দিষ্ট সময়ের (সপ্তাহ, মাস, বছর) জন্য কন্টেন্ট বা পরিষেবাতে অ্যাক্সেসের জন্য পুনরাবৃত্ত পেমেন্ট। ব্যবহারকারী তার অ্যাকাউন্ট সেটিংসে বাতিল না করা পর্যন্ত সাবস্ক্রিপশন স্বয়ংক্রিয়ভাবে নবায়ন হয়। স্টোরগুলি সাবস্ক্রিপশন অবস্থা পরিবর্তন সম্পর্কে সার্ভার বিজ্ঞপ্তি (App Store Server Notifications, Google Play Developer Notifications) সরবরাহ করে: নবায়ন, মেয়াদ শেষ, ফেরত।
সেটআপ In-App Purchase ডেভেলপার প্যানেলে শুরু হয়: iOS-এর জন্য App Store Connect এবং Android-এর জন্য Google Play Console। প্রতিটি পণ্যের জন্য, একটি পণ্য আইডি (Product ID), নাম, বিবরণ, ধরন এবং মার্কিন ডলারে মূল্য আঞ্চলিক মুদ্রায় স্বয়ংক্রিয় রূপান্তর সহ নির্দিষ্ট করা হয়। তৈরি করার পরে, পণ্যটি স্টোর মডারেশনের মধ্য দিয়ে যায়।
App Store Connect-এ, IAP পণ্য Features → In-App Purchases বিভাগে তৈরি করা হয়। প্রতিটি পণ্যের জন্য, একটি ধরন (consumable, non-consumable, auto-renewable subscription, non-renewing subscription) নির্বাচন করা হয় এবং স্থানীয়কৃত নাম পূরণ করা হয়। সাবস্ক্রিপশনের জন্য, সাবস্ক্রিপশন গ্রুপ (Subscription Groups) অতিরিক্তভাবে কনফিগার করা হয় — বিনিময়যোগ্য সাবস্ক্রিপশনের গ্রুপ।
Google Play Console-এ, পরিচালিত পণ্য Monetise → Products → In-app products বিভাগে কনফিগার করা হয়। Google Managed Product (অ-ভোগ্যের অনুরূপ) এবং Subscription শব্দ ব্যবহার করে। Android-এ ভোগ্য ক্রয়ের জন্য, একটি আলাদা consume ফ্ল্যাগ ব্যবহার করা হয় যা পুনরায় কেনার জন্য পণ্য রিসেট করে।
IAP পণ্যের মডারেশন সাধারণত App Store-এ 24–48 ঘন্টা এবং Google Play-তে কয়েক ঘন্টা সময় নেয়। মূল্য পরিবর্তন পুনরায় মডারেশন ছাড়াই অবিলম্বে প্রয়োগ করা হয়। পণ্য আইডি তৈরি করার পরে পরিবর্তন করা যায় না — শুধুমাত্র মুছে ফেলে পুনরায় তৈরি করা যায়।
রসিদ যাচাইকরণ In-App Purchase প্রক্রিয়াকরণের একটি বাধ্যতামূলক পদক্ষেপ। ক্লায়েন্ট অ্যাপ আপনার নিজের সার্ভারে একটি রসিদ পাঠায়, সার্ভার Apple API (https://buy.itunes.apple.com) বা Google API (https://androidpublisher.googleapis.com)-এর মাধ্যমে এটি যাচাই করে এবং সফল যাচাইকরণের পরেই ব্যবহারকারীকে আইটেম প্রদান করে।
সার্ভার-সাইড যাচাইকরণ ছাড়া, একজন আক্রমণকারী স্টোরের প্রতিক্রিয়া জাল করতে পারে এবং বিনামূল্যে আইটেম পেতে পারে। ক্লায়েন্ট-সাইড যাচাইকরণ নিরাপদ নয় কারণ এটি ব্যবহারকারীর নিয়ন্ত্রিত পরিবেশে চলে। সার্ভার-সাইড যাচাইকরণ নিশ্চিত করে যে রসিদটি প্রামাণিক এবং পেমেন্ট সফল হয়েছে। Apple-এর জন্য, verifyReceipt এন্ডপয়েন্ট (production বা sandbox) এর মাধ্যমে যাচাই করা হয়, Google-এর জন্য — Android Publisher API-এর মাধ্যমে। উভয় স্টোর JSON ফরম্যাটে নিশ্চিতকরণ ফেরত দেয়।
Apple রসিদে ক্রয় ডেটা ফেরত দেয়: product_id, transaction_id, purchase_date, expiration_date (সাবস্ক্রিপশনের জন্য)। Google Purchases.products.get বা Purchases.subscriptions.get API-এর মাধ্যমে অনুরূপ ফিল্ড ফেরত দেয়। সার্ভারের প্রতিটি রসিদের transaction_id সংরক্ষণ করা উচিত এবং রিপ্লে আক্রমণ থেকে রক্ষার জন্য একই আইডি সহ ডুপ্লিকেট অনুরোধ প্রত্যাখ্যান করা উচিত।
ইন্টিগ্রেশন In-App Purchase-এর জন্য প্ল্যাটফর্ম লাইব্রেরি সংযুক্ত করা প্রয়োজন: iOS-এ StoreKit 2 এবং Android-এ Billing Library 7+। API পণ্যের তালিকা অনুরোধ করা, ক্রয় শুরু করা, ফলাফল পরিচালনা করা এবং পূর্বে কেনা আইটেম পুনরুদ্ধার করার অনুমতি দেয়।
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) {
// রসিদ নিশ্চিত করা হয়েছে — আইটেম প্রদান করা হচ্ছে
await grantProduct(data.receipt.product_id)
}
মনিটাইজেশন In-App Purchase-এর মাধ্যমে একটি সুচিন্তিত মূল্য নির্ধারণ কৌশল এবং UX প্রয়োজন। ব্যবহারকারীরা তাদের প্রথম ক্রয়ে আরও আগ্রহী হন যদি তাদের কম মূল্যে একটি আকর্ষণীয় স্টার্টার প্যাক দেওয়া হয়। Apple এবং Google ক্রয় নিশ্চিতকরণ ধাপের আগে পণ্যের মূল্য দেখানোর পরামর্শ দেয়।
সাবস্ক্রিপশন অনবোর্ডিং একটি গুরুত্বপূর্ণ রূপান্তর ধাপ। পেমেন্ট অনুরোধ করার আগে ব্যবহারকারীকে সাবস্ক্রিপশনের মান দেখান: একটি বিনামূল্যের ট্রায়াল সময়কাল, প্ল্যান তুলনা, সুবিধার তালিকা। গবেষণা অনুসারে, বিনামূল্যের ট্রায়াল সময়কাল প্রদানকারী ব্যবহারকারীতে রূপান্তর 25–40% বৃদ্ধি করে।
ক্রয় পুনরুদ্ধার অ-ভোগ্য পণ্য এবং সাবস্ক্রিপশনের জন্য বাধ্যতামূলক। পুনরুদ্ধার বোতাম অ্যাপ সেটিংস বা পেমেন্ট স্ক্রিনে অ্যাক্সেসযোগ্য হওয়া উচিত। Google এবং Apple অ্যাপ প্রত্যাখ্যান করতে পারে যদি সংশ্লিষ্ট IAP প্রকারের জন্য ক্রয় পুনরুদ্ধার বাস্তবায়িত না হয়।
অনুগ্রহ সময়কাল (Grace Period) সাবস্ক্রিপশনের জন্য একটি স্থগিত সময়কাল যার সময় ব্যবহারকারী পেমেন্ট ব্যর্থতার পরেও অ্যাক্সেস ধরে রাখে। iOS এবং Android 30 দিন পর্যন্ত অনুগ্রহ সময়কাল সমর্থন করে। অনুগ্রহ সময়কাল সক্ষম করলে গ্রাহক হার (churn rate) 10–15% হ্রাস পায়।
A/B পরীক্ষণ IAP মূল্যের একটি গুরুত্বপূর্ণ মনিটাইজেশন অনুশীলন। App Store Connect পুনরায় মডারেশন ছাড়াই মূল্য পরিবর্তনের ক্ষমতা সহ স্থানীয় মূল্য নির্ধারণ (Price Tiers) সমর্থন করে। Google Play Console একটি সাবস্ক্রিপশন পণ্যের জন্য বিভিন্ন মূল্য সহ 5টি বেস প্ল্যান কনফিগার করার অনুমতি দেয়। কমপক্ষে দুটি মূল্য পয়েন্ট পরীক্ষা করার পরামর্শ দেওয়া হয়: বর্তমান এবং নতুন। পরীক্ষা প্রতি মূল্য পয়েন্টে কমপক্ষে 1000 ব্যবহারকারীর নমুনায় 2–4 সপ্তাহ ধরে পরিচালনা করা উচিত।
স্টোর রিভিউ এবং প্রত্যাখ্যান ব্যবস্থাপনা IAP সহ অ্যাপ প্রকাশের একটি বাধ্যতামূলক পর্যায়। Apple বিশেষ করে স্বয়ং-নবায়নযোগ্য সাবস্ক্রিপশন সহ অ্যাপ যাচাই করে: আপনাকে সক্রিয় সাবস্ক্রিপশন সহ একটি পরীক্ষা অ্যাকাউন্ট সরবরাহ করতে হবে, সাবস্ক্রিপশন বাতিলকরণ স্ক্রিন দেখাতে হবে এবং ক্রয় পুনরুদ্ধার বাস্তবায়ন করতে হবে। Google Play কম কঠোর কিন্তু ডিজিটাল কন্টেন্ট অধিকারের নিশ্চিতকরণ প্রয়োজন। IAP লজিক বর্ণনা করে একটি পর্যালোচনা নোট (Review Notes) যুক্ত করার পরামর্শ দেওয়া হয়।
সচরাচর জিজ্ঞাসা
In-App Purchase (IAP) মোবাইল অ্যাপের ভিতরে ডিজিটাল পণ্য কেনার একটি প্রক্রিয়া। পেমেন্ট App Store বা Google Play-এর মাধ্যমে প্রক্রিয়াজাত করা হয়, যা 30% কমিশন (ছোট ব্যবসার জন্য 15%) রাখে এবং বাকি ডেভেলপারকে স্থানান্তর করে।
IAP-এর তিনটি প্রকার আছে: ভোগ্য (ক্ষয়যোগ্য — কয়েন, জীবন), অ-ভোগ্য (স্থায়ী — বিজ্ঞাপন অপসারণ, সম্পূর্ণ সংস্করণ) এবং স্বয়ং-নবায়নযোগ্য সাবস্ক্রিপশন (পুনরাবৃত্ত — একটি সময়ের জন্য কন্টেন্টে অ্যাক্সেস)। অ-ভোগ্য ক্রয় পুনরুদ্ধার সমর্থন করে।
প্রাথমিক সুরক্ষা পদ্ধতি হল সার্ভার-সাইড রসিদ যাচাইকরণ। ক্লায়েন্ট আপনার সার্ভারে রসিদ পাঠায় এবং সার্ভার Apple বা Google API-এর মাধ্যমে এটি যাচাই করে। সার্ভার-সাইড যাচাইকরণ ছাড়া, একজন আক্রমণকারী স্টোরের প্রতিক্রিয়া জাল করতে পারে এবং বিনামূল্যে আইটেম পেতে পারে।
সেটআপ IAP অন্তর্ভুক্ত: App Store Connect বা Google Play Console-এ পণ্য তৈরি, StoreKit (iOS) বা Billing Library (Android) সংযুক্ত করা, ক্রয় ফ্লো বাস্তবায়ন এবং সার্ভার-সাইড রসিদ যাচাইকরণ। প্রতিটি পণ্য স্টোর মডারেশনের মধ্য দিয়ে যায়।
Apple 30% নেয় (1 মিলিয়ন ডলার পর্যন্ত আয়ের ডেভেলপারের জন্য 15%)। Google Play-ও 30% নেয় (প্রথম 1 মিলিয়নে 15%)। 2024 সাল থেকে, Google User Choice Billing-এর মাধ্যমে বিকল্প পেমেন্ট সিস্টেম পরীক্ষা করছে। ডেভেলপার তৃতীয়-পক্ষের পেমেন্ট প্রদানকারী বেছে নিতে পারে কিন্তু Google-কে 11–12% সার্ভিস ফি দিতে হবে।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন