معنای اصطلاحات پر کاربرد در پرداخت درون برنامه‌ای

شناسه‌ی کالا

نام‌های دیگر: 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 می‌توان از وجود یا عدم یک محصول در لیست محصولات تحت مالکیت کاربر مطلع شد.

info محصولات مصرف شدنی و غیرمصرفی

محصولاتی که خریداری شده اند تا زمانی که consume (مصرف) نشده باشند در لیست محصولات تحت مالکیت کاربر باقی می‌مانند. بنابراین ممکن است تابع onProductPurchased و onPurchaseHistoryRestored برای یک محصول بیش از یک بار صدا زده شوند. این خبر خوبی برای محصولات غیر مصرف شدنی است اما درباره‌ی محصولات مصرف شدنی باید توجه داشته باشید که در این مواقع اثر خرید را در برنامه‌تان اعمال نکنید و آن را به پس از صدا زدن متد consumePurchase موکول کنید. در غیر این صورت ممکن است اثر یک خرید بیش از یک بار در برنامه اعمال شود. (مثلا کاربر یک بار ۱۰۰ سکه بخرد ولی ۴ بار ۱۰۰ سکه به پولش در بازی اضافه شود)

info حفظ محصول پس از حذف و نصب دوبارهٔ اپلیکیشن

اگر کاربر محصولی را بخرد و آن را مصرف نکنید، پس از پاک کردن برنامه هم آن محصول تحت مالکیت کاربر باقی می‌ماند. اگر کاربر دوباره اپلیکیشن یا بازی شما را نصب کند و اقدام به خرید این محصولات بکند بدون اینکه مجدداً پولی از حساب کاربر کسر شود تابع onProductPurchased صدا زده می‌شود.