معنای اصطلاحات پر کاربرد در پرداخت درون برنامهای
شناسهی کالا
نامهای دیگر: sku و product id
عبارتی است حداکثر ۱۰۰ حرفی و غیر تکراری که محصولات مختلف را از هم متمایز میکند. این عبارت را کاربر نمیبیند و فقط در برنامه نویسی کاربرد دارد. معمولا عباراتی مانند my.game.100.coins
و awesome_app_remove_ads
یا eshterake_mahane_app
را به عنوان شناسهی محصول به کار میبرند.
محصول خریدنی مصرف شدنی
نامهای دیگر:consumable product
محصولات مصرف شدنی محصولاتی هستند که کاربران میتوانند چندبار آنها را بخرند. مثلا سکه در بازیها محصول مصرف شدنی محسوب میشود. برای این محصولات در تابع onProductPurchased
و تابع onPurchaseHistoryRestored
متد consumePurchase
را صدا بزنید. در صورتی که مقدار بازگشتی این تابعtrueبود محصول را به کاربر بدهید. به عنوان مثال کد زیر وقتی که کاربر محصولی با شناسهی my.game.100.coins
را خریداری کند به مقدار متغیر coins
عدد ۱۰۰ را اضافه میکند.
private void processCoinPurchase() {
if (mNivadBilling.isPurchased("my.game.100.coins")) {
boolean success = mNivadBilling.consumePurchase("my.game.100.coins");
if (success) {
coins += 100;
}
}
}
@Override
public void onProductPurchased(String productId, TransactionDetails details) {
if ("my.game.100.coins".equals(productId)) {
processCoinPurchase();
}
}
@Override
public void onPurchaseHistoryRestored() {
processCoinPurchase();
}
مصرف یک محصول باعث میشود کاربر بتواند دوباره آن محصول را خریداری کند.
محصول خریدنی غیر مصرف شدنی
نامهای دیگر:unconsumable product و محصول خریدنی مصرف نشدنی!
محصولات مصرف نشدنی در پنل بازار تفاوتی با محصولات مصرف شدنی ندارند و هردو در دستهی «خریدنی» قرار میگیرند. تفاوت محصولات مصرف شدنی و غیر مصرف شدنی در این است که برای این محصولات متد consumePurchase
را صدا نمیکنیم. صدا کردن این تابع باعث ایجاد خطا نمیشود بلکه مفهوم «مصرف شدنی» و «غیر مصرف شدنی» بودن مربوط به ماهیت محصول است. محصولاتی مانند ارتقای برنامه به نسخهی کامل یا حذف تبلیغات که کاربر فقط باید یک بار آنها را خریداری کند غیر مصرف شدنی محسوب میشوند.
پس از هر بار باز شدن برنامه و صدا شدن تابع onPurchaseHistoryRestored
این محصولات در لیست محصولات تحت مالکیت کاربر باقی میمانند. با تابع isPurchased
میتوان از وجود یا عدم یک محصول در لیست محصولات تحت مالکیت کاربر مطلع شد.
محصولاتی که خریداری شده اند تا زمانی که محصولات مصرف شدنی و غیرمصرفی
consume
(مصرف) نشده باشند در لیست محصولات تحت مالکیت کاربر باقی میمانند. بنابراین ممکن است تابع onProductPurchased
و onPurchaseHistoryRestored
برای یک محصول بیش از یک بار صدا زده شوند. این خبر خوبی برای محصولات غیر مصرف شدنی است اما دربارهی محصولات مصرف شدنی باید توجه داشته باشید که در این مواقع اثر خرید را در برنامهتان اعمال نکنید و آن را به پس از صدا زدن متد consumePurchase
موکول کنید. در غیر این صورت ممکن است اثر یک خرید بیش از یک بار در برنامه اعمال شود. (مثلا کاربر یک بار ۱۰۰ سکه بخرد ولی ۴ بار ۱۰۰ سکه به پولش در بازی اضافه شود)اگر کاربر محصولی را بخرد و آن را مصرف نکنید، پس از پاک کردن برنامه هم آن محصول تحت مالکیت کاربر باقی میماند. اگر کاربر دوباره اپلیکیشن یا بازی شما را نصب کند و اقدام به خرید این محصولات بکند بدون اینکه مجدداً پولی از حساب کاربر کسر شود تابع حفظ محصول پس از حذف و نصب دوبارهٔ اپلیکیشن
onProductPurchased
صدا زده میشود.