یادداشت‌های انتشار کتابخانه صورت‌حساب Google Play

این سند حاوی یادداشت‌های انتشار برای کتابخانه پرداخت گوگل پلی است.

کتابخانه پرداخت گوگل پلی نسخه ۹.۱.۰ (۲۰۲۶-۰۶-۱۸)

نسخه ۹.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۹.۰.۰ (۲۰۲۶-۰۵-۱۹)

نسخه ۹.۰.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند. اگر می‌خواهید از نسخه‌های قبلی PBL مهاجرت کنید، به راهنمای مهاجرت PBL 9 مراجعه کنید.

خلاصه تغییرات

  • کدهای خطای به‌روزرسانی‌شده برای فعالیت مسدود شده‌ی فروشگاه پلی : کدهای خطای مربوط به برنامه‌های مسدود شده‌ی فروشگاه پلی به‌روزرسانی شده‌اند. برای مواردی که برنامه‌ی فروشگاه پلی توسط سیستم مسدود شده است (به عنوان مثال، در حالت کودکان سفارشی‌سازی شده توسط تولیدکننده‌ی اصلی)، کد پاسخ از ERROR به BILLING_UNAVAILABLE تغییر کرده است. علاوه بر این، BillingResult برای چنین مواردی اکنون یک پیام اشکال‌زدایی «فروشگاه پلی مسدود شده است» ارائه می‌دهد.

  • به‌روزرسانی قابلیت تهی‌سازی برای صورتحساب‌های ارائه شده توسط توسعه‌دهنده : متد DeveloperProvidedBillingDetails.getLinkUri() به @Nullable به‌روزرسانی شده است. این تغییر از سناریوهایی پشتیبانی می‌کند که در آن‌ها URI لینک مستقیم برای پرداخت‌های خارجی در مرحله انتخاب پرداخت در دسترس نیست.

    برای مدیریت ایمن این تغییر، قبل از تجزیه یا اجرای intentهای مرورگر، مطمئن شوید که کد یکپارچه‌سازی شما، مقادیر رشته‌ای null و خالی ( "" ) را از متد DeveloperProvidedBillingDetails.getLinkUri() مدیریت می‌کند.

  • targetSdkVersion به 35 به‌روزرسانی شد.

  • اکنون می‌توانید از پیام‌های درون‌برنامه‌ای برای اطلاع‌رسانی به کاربران در مورد افزایش قیمت احتمالی استفاده کنید. این به کاربران اجازه می‌دهد بدون ترک برنامه، افزایش قیمت را تأیید کنند. پیام مربوط به افزایش قیمت غیرمنتظره از اولین روزی که کاربر می‌تواند افزایش قیمت را بپذیرد، نمایش داده می‌شود و حداکثر هر ۷ روز یک بار نمایش داده می‌شود.

کتابخانه پرداخت گوگل پلی نسخه ۸.۳.۰ (۲۰۲۵-۱۲-۲۳)

نسخه ۸.۳.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۸.۲.۱ (۲۰۲۵-۱۲-۱۵)

نسخه ۸.۲.۱ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

رفع اشکالات

کتابخانه پرداخت گوگل پلی نسخه ۸.۲.۰ (۲۰۲۵-۱۲-۰۹)

نسخه ۸.۲.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۸.۱.۰ (۲۰۲۵-۱۱-۰۶)

نسخه ۸.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

  • اشتراک‌های معلق

    پارامتر جدیدی به متد BillingClient.queryPurchasesAsync() اضافه شده است تا اشتراک‌های معلق را هنگام جستجوی اشتراک‌ها لحاظ کند. اشتراک‌های معلق همچنان به کاربر نسبت داده می‌شوند، اما فعال نیستند، یا به این دلیل که کاربر اشتراک را متوقف کرده یا روش پرداخت تمدید آنها رد شده است.

    شیء Purchase که در شنونده برگردانده می‌شود، برای هر اشتراک معلق، isSuspended() = true را برمی‌گرداند. در این حالت، شما نباید به اشتراک خریداری شده دسترسی بدهید و در عوض، کاربر را به مرکز اشتراک‌ها هدایت کنید که در آنجا می‌تواند روش‌های پرداخت خود را مدیریت کند یا برای فعال‌سازی مجدد اشتراک خود، حالت مکث ایجاد کند.

  • به‌روزرسانی‌های اشتراک‌ها :

    • شیء BillingFlowParams.ProductDetailsParams اکنون دارای متد setSubscriptionProductReplacementParams() است که در آن می‌توانید اطلاعات جایگزینی سطح محصول را مشخص کنید.

    • شیء SubscriptionProductReplacementParams دو متد setter دارد:

      • setOldProductId : محصول قدیمی که باید با محصول موجود در ProductDetails فعلی جایگزین شود.
      • setReplacementMode : این حالت جایگزینی سطح آیتم است. این حالت‌ها اساساً مشابه SubscriptionUpdateParams هستند، اما نگاشت مقدار به‌روزرسانی شده است. یک حالت جایگزینی جدید KEEP_EXISTING معرفی شده است که به شما امکان می‌دهد برنامه پرداخت موجود را برای یک آیتم بدون تغییر نگه دارید.
    • SubscriptionUpdateParams setSubscriptionReplacementMode منسوخ خواهد شد. به جای آن باید SubscriptionProductReplacementParams.setReplacementMode استفاده کنید.

  • minSdkVersion به ۲۳ به‌روزرسانی شد.

  • فعال‌سازی APIهای پیش‌سفارش برای محصولات یکبار مصرف

    رابط برنامه‌نویسی کاربردی (API) مربوط به ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails() که جزئیات پیش‌سفارش را دریافت می‌کند، اکنون برای استفاده در دسترس است.

  • کتابخانه پرداخت گوگل پلی اکنون از کاتلین نسخه ۲.۲.۰ پشتیبانی می‌کند.

کتابخانه صورتحساب گوگل پلی نسخه ۸.۰.۰ (۲۰۲۵-۰۶-۳۰)

نسخه ۸.۰.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

  • از این پس به اقلام درون‌برنامه‌ای، محصولات یکبار مصرف گفته می‌شود.

  • گزینه‌های خرید متعدد و پیشنهادهای ویژه برای محصولات یکبار مصرف.

    اکنون می‌توانید چندین گزینه خرید و پیشنهاد برای محصولات یکبار مصرف خود داشته باشید. این امر به شما انعطاف‌پذیری در نحوه فروش محصولاتتان می‌دهد و پیچیدگی مدیریت آنها را کاهش می‌دهد.

  • متد queryProductDetailsAsync() بهبود یافته است.

    قبل از PBL 8.0.0، متد queryProductDetailsAsync() محصولاتی را که نمی‌توانستند واکشی شوند، برنمی‌گرداند. این می‌تواند به دلایلی مانند پیدا نشدن محصول یا عدم وجود پیشنهاد برای کاربر باشد. با PBL 8.0.0، محصولات واکشی نشده با یک کد وضعیت سطح محصول جدید بازگردانده می‌شوند که اطلاعاتی در مورد محصولات واکشی نشده ارائه می‌دهد. توجه داشته باشید که تغییری در امضای ProductDetailsResponseListener.onProductDetailsResponse() وجود دارد که نیاز به تغییراتی در برنامه شما دارد. برای اطلاعات بیشتر، به process the result مراجعه کنید.

  • اتصال مجدد خودکار سرویس.

    پارامتر سازنده جدید BillingClient.Builder.enableAutoServiceReconnection() به توسعه‌دهندگان اجازه می‌دهد تا اتصال مجدد خودکار سرویس را فعال کنند، که با مدیریت خودکار اتصال‌های مجدد به سرویس صورتحساب Play و حذف نیاز به فراخوانی دستی startConnection() در صورت قطع اتصال سرویس، مدیریت اتصال را ساده می‌کند. برای اطلاعات بیشتر، به بخش «برقراری مجدد خودکار اتصال» مراجعه کنید.

  • کدهای زیرپاسخ برای متد launchBillingFlow() .

    نتیجه‌ی BillingResult که از launchBillingFlow() برگردانده می‌شود، اکنون شامل یک فیلد کد زیرپاسخ خواهد بود. این فیلد فقط در برخی موارد برای ارائه دلیل خاص‌تر برای شکست، پر می‌شود. فیلد زیرپاسخ می‌تواند مقادیر زیر را داشته باشد:

    • PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS - زمانی که موجودی کاربر کمتر از قیمت کالایی باشد که قصد خرید آن را دارد، بازگردانده می‌شود.
    • USER_INELIGIBLE - زمانی برگردانده می‌شود که کاربر شرایط لازم برای واجد شرایط بودن برای پیشنهاد اشتراک را نداشته باشد.
    • NO_APPLICABLE_SUB_RESPONSE_CODE - مقدار پیش‌فرض، زمانی که هیچ کد زیرپاسخ دیگری قابل اجرا نباشد، بازگردانده می‌شود.
  • متد queryPurchaseHistory() حذف شد.

    متد queryPurchaseHistory() که قبلاً به عنوان منسوخ شده علامت گذاری شده بود، اکنون حذف شده است. برای جزئیات بیشتر در مورد اینکه از چه API های جایگزین استفاده کنید، به Query Purchase History مراجعه کنید.

  • متد querySkuDetailsAsync() حذف شد.

    متد querySkuDetailsAsync() که قبلاً به عنوان منسوخ شده علامت گذاری شده بود، اکنون حذف شده است. به جای آن باید از queryProductDetailsAsync استفاده کنید.

  • متد BillingClient.Builder.enablePendingPurchases() حذف شد.

    متد enablePendingPurchases() که هیچ پارامتری نداشت و قبلاً به عنوان منسوخ علامت‌گذاری شده بود، اکنون حذف شده است. به جای آن باید enablePendingPurchases(PendingPurchaseParams params) استفاده کنید. توجه داشته باشید که enablePendingPurchases() منسوخ شده از نظر عملکردی معادل enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) .

  • متد queryPurchasesAsync() که مقدار skuType را دریافت می‌کرد و بیش از حد بارگذاری شده بود، حذف شد.

    متد queryPurchasesAsync(String skuType, PurchasesResponseListener listener) که قبلاً به عنوان منسوخ علامت‌گذاری شده بود، اکنون حذف شده است. به عنوان جایگزین، می‌توانید queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener) استفاده کنید.

کتابخانه پرداخت گوگل پلی نسخه ۷.۱.۱ (۲۰۲۴-۱۰-۰۳)

نسخه ۷.۱.۱ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

رفع اشکالات

کتابخانه پرداخت گوگل پلی نسخه ۷.۱.۰ (۲۰۲۴-۰۹-۱۹)

نسخه ۷.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

  • بهبود ایمنی نخ مربوط به وضعیت اتصال و مدیریت.
  • تغییرات جزئی برای آزمایش کدهای پاسخ BillingResult که به طور کامل در Play Billing Library 7.1.1 منتشر شده است، اعمال شد. برای آزمایش ادغام خود با استفاده از این ویژگی، باید به Play Billing Library 7.1.1 ارتقا دهید. یک اشکال وجود دارد که فقط برنامه‌هایی را که آزمایش لغو صورتحساب در آنها فعال است، تحت تأثیر قرار می‌دهد و بر استفاده منظم تأثیری ندارد. برای اطلاعات بیشتر، به Test BillingResult response codes مراجعه کنید.

کتابخانه پرداخت گوگل پلی نسخه ۷.۰.۰ (۲۰۲۴-۰۵-۱۴)

نسخه ۷.۰.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۶.۲.۱ (۲۰۲۴-۰۴-۱۶)

نسخه ۶.۲.۱ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۶.۲.۰ (۲۰۲۴-۰۳-۰۶)

نسخه ۶.۲.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۶.۱.۰ (۲۰۲۳-۱۱-۱۴)

نسخه ۶.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۶.۰.۱ (۲۰۲۳-۰۶-۲۲)

نسخه ۶.۰.۱ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت Play را برای سازگاری با اندروید ۱۴ به‌روزرسانی کنید.

کتابخانه پرداخت گوگل پلی نسخه ۶.۰ (۲۰۲۳-۰۵-۱۰)

نسخه ۶.۰.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

  • یک enum جدید ReplacementMode اضافه شد تا جایگزین ProrationMode شود.

    توجه داشته باشید که ProrationMode به دلایل سازگاری با نسخه‌های قبلی هنوز در دسترس است.

  • شناسه سفارش برای خریدهای PENDING حذف شد.

    پیش از این، شناسه سفارش همیشه ایجاد می‌شد، حتی اگر خرید در انتظار خرید بود. از نسخه ۶.۰.۰ به بعد، شناسه سفارش برای خریدهای در انتظار خرید ایجاد نمی‌شود و برای این خریدها، شناسه سفارش پس از انتقال خرید به حالت خریداری PURCHASED ) پر می‌شود.

  • متدهای queryPurchases و launchPriceConfirmationFlow حذف شدند.

    متدهای queryPurchases و launchPriceConfirmationFlow که قبلاً به عنوان منسوخ علامت‌گذاری شده بودند، اکنون در Play Billing Library 6.0.0 حذف شده‌اند. توسعه‌دهندگان باید به جای queryPurchasesAsync از queryPurchases استفاده کنند. برای جایگزین‌های launchPriceConfirmationFlow ، به تغییرات قیمت مراجعه کنید.

  • کد پاسخ خطای شبکه جدید اضافه شد.

    یک کد پاسخ خطای شبکه جدید، NETWORK_ERROR ، از نسخه ۶.۰.۰ به PBL اضافه شده است. این کد زمانی برگردانده می‌شود که خطایی به دلیل مشکل اتصال شبکه رخ دهد. این خطاهای اتصال شبکه قبلاً به عنوان SERVICE_UNAVAILABLE گزارش می‌شدند.

  • SERVICE_UNAVAILABLE و SERVICE_TIMEOUT به‌روزرسانی شدند.

    با شروع از نسخه ۶.۰.۰ PBL، خطاهای ناشی از timeout در پردازش به جای SERVICE_TIMEOUT فعلی، به صورت SERVICE_UNAVAILABLE برگردانده می‌شوند.

    این رفتار در نسخه‌های قبلی PBL تغییر نمی‌کند.

  • SERVICE_TIMEOUT حذف شد.

    با شروع از نسخه ۶.۰.۰ PBL، دیگر SERVICE_TIMEOUT برگردانده نخواهد شد. نسخه‌های قبلی PBL همچنان این کد را برمی‌گردانند.

  • ثبت وقایع اضافی اضافه شد.

    نسخه ۶ کتابخانه پرداخت Play شامل گزارش‌گیری‌های اضافی است که بینشی در مورد استفاده از API (مانند موفقیت و شکست) و مشکلات اتصال سرویس ارائه می‌دهد. این اطلاعات برای بهبود عملکرد کتابخانه پرداخت Play و ارائه پشتیبانی بهتر برای خطاها استفاده خواهد شد.

کتابخانه پرداخت گوگل پلی نسخه ۵.۲.۱ (۲۰۲۳-۰۶-۲۲)

نسخه ۵.۲.۱ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت Play را برای سازگاری با اندروید ۱۴ به‌روزرسانی کنید.

کتابخانه پرداخت گوگل پلی نسخه ۵.۲ (۲۰۲۳-۰۴-۰۶)

نسخه ۵.۲.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

کتابخانه پرداخت گوگل پلی نسخه ۵.۱ (۲۰۲۲-۱۰-۳۱)

نسخه ۵.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

این نسخه شامل تغییرات زیر است.

خلاصه تغییرات

نسخه ۵.۰ کتابخانه پرداخت گوگل پلی (۲۰۲۲-۰۵-۱۱)

نسخه ۵.۰.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

این نسخه شامل تغییرات زیر است.

خلاصه تغییرات

  • مدل جدیدی برای اشتراک‌ها معرفی شد، از جمله موجودیت‌های جدیدی که به شما امکان می‌دهند چندین پیشنهاد برای یک محصول اشتراکی ایجاد کنید. برای اطلاعات بیشتر، به راهنمای مهاجرت مراجعه کنید.
  • تابع BillingClient.queryProductDetailsAsync() به جای تابع BillingClient.querySkuDetailsAsync() اضافه شد.
  • متد setIsOfferPersonalized() برای الزامات افشای قیمت‌گذاری شخصی‌سازی‌شده اتحادیه اروپا اضافه شد. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از این متد، به بخش «اعلام قیمت شخصی‌سازی‌شده» مراجعه کنید.
  • queryPurchases() که قبلاً منسوخ شده بود و با queryPurchasesAsync که در کتابخانه صورتحساب Google Play نسخه ۴.۰.۰ معرفی شده بود، جایگزین شده بود، حذف شد.
  • launchPriceChangeFlow منسوخ شده است و در نسخه‌های آینده حذف خواهد شد. برای کسب اطلاعات بیشتر در مورد جایگزین‌ها، به Launch a price change confirmation flow مراجعه کنید.
  • setVrPurchaseFlow() که قبلاً هنگام نمونه‌سازی جریان خرید استفاده می‌شد، حذف شد. در نسخه‌های قبلی، این متد کاربر را به تکمیل خرید در دستگاه اندروید خود هدایت می‌کرد. پس از حذف این متد، کاربران خرید را از طریق جریان خرید استاندارد تکمیل خواهند کرد.

نسخه ۴.۱ کتابخانه پرداخت گوگل پلی (۲۰۲۲-۰۲-۲۳)

نسخه ۴.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

این نسخه شامل تغییرات زیر است.

خلاصه تغییرات

  • برای کمک به مدیریت کاهش پرداخت‌های اشتراک، BillingClient.showInAppMessages() اضافه شد. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از پیام‌رسانی درون‌برنامه‌ای برای مدیریت کاهش پرداخت‌های اشتراک، به مدیریت کاهش پرداخت‌ها مراجعه کنید.

نسخه ۴.۰ کتابخانه پرداخت گوگل پلی (۲۰۲۱-۰۵-۱۸)

نسخه ۴.۰.۰ کتابخانه پرداخت گوگل پلی و افزونه‌های کاتلین اکنون در دسترس هستند.

خلاصه تغییرات

  • تابع BillingClient.queryPurchasesAsync() به جای تابع BillingClient.queryPurchases() اضافه شد که در نسخه‌های بعدی حذف خواهد شد.

  • حالت جایگزینی اشتراک جدید IMMEDIATE_AND_CHARGE_FULL_PRICE اضافه شد.

  • متد BillingClient.getConnectionState() برای بازیابی وضعیت اتصال کتابخانه‌ی پرداخت Play اضافه شد.

  • Javadoc و پیاده‌سازی آن به‌روزرسانی شد تا مشخص شود که یک متد در کدام thread می‌تواند فراخوانی شود و نتایج کدام thread ارسال شود.

  • تابع BillingFlowParams.Builder.setSubscriptionUpdateParams() به عنوان روشی جدید برای شروع به‌روزرسانی‌های اشتراک اضافه شد. این تابع جایگزین BillingFlowParams#getReplaceSkusProrationMode ، BillingFlowParams#getOldSkuPurchaseToken ، BillingFlowParams#getOldSku ، BillingFlowParams#getOldSku، BillingFlowParams.Builder#setReplaceSkusProrationMode ، BillingFlowParams.Builder#setOldSku که حذف شده‌اند.

  • Purchase.getQuantity() و PurchaseHistoryRecord.getQuantity() اضافه شدند.

  • Purchase#getSkus() و PurchaseHistoryRecord#getSkus() اضافه شدند. این توابع جایگزین Purchase#getSku و PurchaseHistoryRecord#getSku که حذف شده‌اند.

  • BillingFlowParams#getSku ‎، BillingFlowParams#getSkuDetails ‎ و BillingFlowParams#getSkuType ‎ حذف شدند.

کتابخانه پرداخت گوگل پلی نسخه ۳.۰.۳ (۲۰۲۱-۰۳-۱۲)

نسخه ۳.۰.۳ کتابخانه پرداخت گوگل پلی، افزونه کاتلین و افزونه یونیتی اکنون در دسترس هستند.

رفع اشکالات جاوا و کاتلین

  • رفع نشت حافظه هنگام فراخوانی endConnection() .
  • رفع مشکل استفاده از کتابخانه پرداخت گوگل پلی توسط برنامه‌هایی که از حالت اجرای تک وظیفه‌ای استفاده می‌کنند. یک فراخوانی onPurchasesUpdated() زمانی اجرا می‌شود که یک برنامه از لانچر اندروید از سر گرفته شود و پنجره پرداخت قبل از تعلیق قابل مشاهده بوده باشد.

رفع اشکالات یونیتی

  • به‌روزرسانی به نسخه ۳.۰.۳ جاوا برای رفع مشکل نشت حافظه و حل مشکل جلوگیری از خریدها هنگام از سرگیری برنامه از لانچر اندروید و قابل مشاهده بودن کادر پرداخت قبل از تعلیق.

کتابخانه پرداخت گوگل پلی نسخه ۳.۰.۲ (۲۰۲۰-۱۱-۲۴)

نسخه ۳.۰.۲ کتابخانه پرداخت گوگل پلی و افزونه کاتلین اکنون در دسترس هستند.

رفع اشکالات

  • اشکالی در افزونه کاتلین که در آن کوروتین با خطای "قبلاً از سر گرفته شده" از کار می‌افتاد، برطرف شد.
  • رفع مشکل ارجاعات حل نشده هنگام استفاده از افزونه Kotlin با کتابخانه kotlinx.coroutines نسخه ۱.۴+.

کتابخانه پرداخت گوگل پلی نسخه ۳.۰.۱ (۲۰۲۰-۰۹-۳۰)

نسخه ۳.۰.۱ کتابخانه پرداخت گوگل پلی و افزونه کاتلین اکنون در دسترس هستند.

رفع اشکالات

  • اشکالی که باعث می‌شد اگر برنامه در حین جریان صدور صورتحساب از کار بیفتد و بازیابی شود، PurchasesUpdatedListener ممکن است با نتیجه خرید فراخوانی نشود، برطرف شد.

نسخه ۳.۰ کتابخانه پرداخت گوگل پلی (۲۰۲۰-۰۶-۰۸)

نسخه ۳.۰.۰ کتابخانه پرداخت گوگل پلی، افزونه کاتلین و افزونه یونیتی اکنون در دسترس هستند.

خلاصه تغییرات

  • پشتیبانی از SKU پاداشی حذف شد.
  • پارامترهای ChildDirected و UnderAgeOfConsent حذف شدند.
  • متدهای منسوخ‌شده‌ی payload توسعه‌دهنده حذف شدند.
  • متدهای منسوخ‌شده‌ی BillingFlowParams.setAccountId() و BillingFlowParams.setDeveloperId() حذف شدند.
  • متدهای منسوخ‌شده‌ی BillingFlowParams.setOldSkus(String oldSku) و BillingFlowParams.addOldSku(String oldSku) حذف شدند.
  • حاشیه‌نویسی‌های مربوط به قابلیت تهی‌سازی اضافه شد.

رفع اشکالات

  • SkuDetails.getIntroductoryPriceCycles() اکنون به جای String int را برمی‌گرداند.
  • اشکالی که باعث می‌شد جریان صورتحساب، حتی اگر هیچ پارامتر اضافی تنظیم نشده بود، به عنوان دارای پارامترهای اضافی در نظر گرفته شود، برطرف شد.

کتابخانه پرداخت گوگل پلی نسخه ۲.۲.۱ (۲۰۲۰-۰۵-۲۰)

نسخه ۲.۲.۱ کتابخانه پرداخت گوگل پلی اکنون در دسترس است.

رفع اشکالات

  • نسخه پیش‌فرض کتابخانه پرداخت Java Play که افزونه Kotlin به آن وابسته است، به‌روزرسانی شد.

انتشار نسخه ۲.۲.۰ کتابخانه پرداخت گوگل پلی و پشتیبانی از یونیتی (۲۰۲۰-۰۳-۲۳)

نسخه ۲.۲.۰ از سیستم پرداخت گوگل پلی، قابلیت‌هایی را ارائه می‌دهد که به توسعه‌دهندگان کمک می‌کند تا اطمینان حاصل کنند که خریدها به کاربر صحیح نسبت داده می‌شوند. این تغییرات جایگزین نیاز به ساخت راه‌حل‌های سفارشی بر اساس بار مفید توسعه‌دهنده می‌شود. به عنوان بخشی از این به‌روزرسانی، قابلیت بار مفید توسعه‌دهنده منسوخ شده و در نسخه‌های آینده حذف خواهد شد. برای اطلاعات بیشتر، از جمله گزینه‌های پیشنهادی، به بخش بار مفید توسعه‌دهنده مراجعه کنید.

کتابخانه پرداخت صورتحساب گوگل پلی ۲ برای یونیتی

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

برای کسب اطلاعات بیشتر، به استفاده از پرداخت گوگل پلی با یونیتی مراجعه کنید.

خلاصه تغییرات

انتشار نسخه ۲.۱.۰ کتابخانه پرداخت گوگل پلی و نسخه ۲.۱.۰ افزونه کاتلین (۲۰۱۹-۱۲-۱۰)

نسخه ۲.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه جدید کاتلین اکنون در دسترس هستند. افزونه کاتلین کتابخانه پرداخت گوگل پلی، جایگزین‌های API اصطلاحی برای استفاده از کاتلین ارائه می‌دهد که شامل null-safety و coroutineهای بهتری است. برای مثال‌های کد، به Use the Google Play Billing Library مراجعه کنید.

این نسخه شامل تغییرات زیر است.

خلاصه تغییرات

  • در BillingFlowParams ، setOldSku(String oldSku) منسوخ شده و با setOldSku(String oldSku, String purchaseToken) جایگزین شده است تا ابهام‌زدایی شود، زمانی که چندین حساب کاربری روی دستگاه، sku یکسانی دارند.

کتابخانه پرداخت گوگل پلی نسخه ۲.۰.۳ (۲۰۱۹-۰۸-۰۵)

نسخه ۲.۰.۳ کتابخانه پرداخت گوگل پلی اکنون در دسترس است.

رفع اشکالات

  • اشکالی که باعث می‌شد querySkuDetailsAsync() گهگاه با کد DEVELOPER_ERROR به جای بازگرداندن نتیجه‌ی موفقیت‌آمیز، با شکست مواجه شود، برطرف شد.

کتابخانه پرداخت گوگل پلی نسخه ۲.۰.۲ (۲۰۱۹-۰۷-۰۸)

نسخه ۲.۰.۲ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل به‌روزرسانی‌هایی در مستندات مرجع است و عملکرد کتابخانه را تغییر نمی‌دهد.

کتابخانه پرداخت گوگل پلی نسخه ۲.۰.۱ (۲۰۱۹-۰۶-۰۶)

نسخه ۲.۰.۱ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.

رفع اشکالات

  • اشکالی که باعث می‌شد پیام‌های اشکال‌زدایی در برخی موارد به صورت null برگردانده شوند، برطرف شد.
  • مشکل نشت حافظه احتمالی برطرف شد.

نسخه ۲.۰ کتابخانه پرداخت گوگل پلی (۲۰۱۹-۰۵-۰۷)

نسخه ۲.۰ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.

خریدها باید ظرف سه روز تأیید شوند

گوگل پلی از خرید محصولات از داخل برنامه شما (درون برنامه) یا خارج از برنامه شما (خارج از برنامه) پشتیبانی می‌کند. برای اینکه گوگل پلی صرف نظر از محل خرید محصول توسط کاربر، یک تجربه خرید پایدار را تضمین کند، باید تمام خریدهای دریافتی را از طریق کتابخانه صورتحساب گوگل پلی در اسرع وقت پس از اعطای حق به کاربر، تأیید کنید. اگر خریدی را ظرف سه روز تأیید نکنید، کاربر به طور خودکار وجه را دریافت می‌کند و گوگل پلی خرید را لغو می‌کند. برای تراکنش‌های در حال انتظار (جدید در نسخه ۲.۰)، بازه سه روزه از زمانی شروع می‌شود که خرید به حالت خریداری PURCHASED رسیده باشد و تا زمانی که خرید در حالت PENDING باشد، اعمال نمی‌شود.

برای اشتراک‌ها، باید هر خریدی را که دارای توکن خرید جدید است، تأیید کنید. این بدان معناست که تمام خریدهای اولیه، تغییرات طرح و ثبت نام‌های مجدد باید تأیید شوند، اما نیازی به تأیید تمدیدهای بعدی نیست. برای تعیین اینکه آیا خریدی نیاز به تأیید دارد یا خیر، می‌توانید فیلد تأیید را در خرید بررسی کنید.

شیء Purchase اکنون شامل یک متد isAcknowledged() است که نشان می‌دهد آیا خرید تأیید شده است یا خیر. علاوه بر این، API توسعه‌دهنده Google Play شامل مقادیر بولی تأیید برای هر دو Purchases.products و Purchases.subscriptions است. قبل از تأیید خرید، حتماً از این متدها برای تعیین اینکه آیا خرید قبلاً تأیید شده است یا خیر، استفاده کنید.

شما می‌توانید با استفاده از یکی از روش‌های زیر، خرید خود را تأیید کنید:

  • برای محصولات مصرفی، consumeAsync() که در API کلاینت موجود است، استفاده کنید.
  • برای محصولاتی که مصرف نمی‌شوند، acknowledgePurchase() که در API کلاینت موجود است، استفاده کنید.
  • یک acknowledge() appliance نیز در API سرور موجود است.

تابع ()BillingFlowParams.setSku حذف شده است.

متد BillingFlowParams#setSku() که قبلاً منسوخ شده بود، در این نسخه حذف شده است. قبل از رندر کردن محصولات در یک جریان خرید، اکنون باید BillingClient.querySkuDetailsAsync() را فراخوانی کنید و شیء SkuDetails حاصل را به BillingFlowParams.Builder.setSkuDetails() ارسال کنید.

برای مثال‌های کد، به «استفاده از کتابخانه پرداخت گوگل پلی» مراجعه کنید.

بار توسعه‌دهنده پشتیبانی می‌شود

نسخه ۲.۰ کتابخانه پرداخت گوگل پلی پشتیبانی از payload توسعه‌دهنده را اضافه می‌کند - رشته‌های دلخواهی که می‌توانند به خریدها پیوست شوند. می‌توانید یک پارامتر payload توسعه‌دهنده را به یک خرید پیوست کنید، اما فقط زمانی که خرید تأیید یا مصرف شود. این برخلاف payload توسعه‌دهنده در AIDL است که در آن payload می‌توانست هنگام راه‌اندازی جریان خرید مشخص شود. از آنجا که اکنون خریدها می‌توانند از خارج از برنامه شما آغاز شوند، این تغییر تضمین می‌کند که شما همیشه فرصتی برای اضافه کردن payload به خریدها دارید.

برای دسترسی به payload در کتابخانه جدید، اشیاء Purchase اکنون شامل یک متد getDeveloperPayload() هستند.

پیشنهادات مداوم

وقتی یک SKU تخفیف‌دار ارائه می‌دهید، گوگل پلی اکنون قیمت اصلی SKU را برمی‌گرداند تا بتوانید به کاربران نشان دهید که تخفیف دریافت می‌کنند.

SkuDetails شامل دو متد جدید برای بازیابی قیمت اصلی SKU است:

  • getOriginalPriceAmountMicros()
    • قیمت اصلی و بدون قالب‌بندی SKU قبل از تخفیف را برمی‌گرداند.
  • getOriginalPrice()
    • قیمت اصلی را با قالب‌بندی ارز اضافی برمی‌گرداند.

تراکنش‌های در انتظار

با نسخه ۲.۰ کتابخانه پرداخت گوگل پلی، شما باید از خریدهایی که قبل از اعطای حق، نیاز به اقدامات اضافی دارند، پشتیبانی کنید. به عنوان مثال، ممکن است کاربر تصمیم بگیرد محصول درون برنامه‌ای شما را با استفاده از پول نقد در یک فروشگاه فیزیکی خریداری کند. این بدان معناست که تراکنش خارج از برنامه شما انجام می‌شود. در این سناریو، شما باید حق را فقط پس از تکمیل تراکنش توسط کاربر اعطا کنید.

برای فعال کردن خریدهای در حال انتظار، تابع enablePendingPurchases() را به عنوان بخشی از مقداردهی اولیه برنامه خود فراخوانی کنید.

Purchase.getPurchaseState() برای تعیین اینکه آیا وضعیت خرید PURCHASED است یا PENDING استفاده کنید. توجه داشته باشید که فقط زمانی که وضعیت خرید PURCHASED ) است، باید مجوز خرید (entitle) را اعطا کنید. شما باید با انجام موارد زیر، به‌روزرسانی‌های وضعیت Purchase را بررسی کنید:

  1. هنگام شروع برنامه، برای بازیابی لیست محصولات مصرف نشده مرتبط با کاربر، تابع BillingClient.queryPurchases() را فراخوانی کنید.
  2. تابع Purchase.getPurchaseState() را روی هر شیء Purchase که برگردانده می‌شود، فراخوانی کنید.
  3. متد onPurchasesUpdated() را برای پاسخ به تغییرات در اشیاء Purchase پیاده‌سازی کنید.

علاوه بر این، API توسعه‌دهندگان گوگل پلی شامل یک حالت PENDING برای Purchases.products است. تراکنش‌های در حال انتظار برای اشتراک‌ها پشتیبانی نمی‌شوند.

این نسخه همچنین یک نوع اعلان توسعه‌دهنده‌ی بلادرنگ جدید به نام OneTimeProductNotification معرفی می‌کند. این نوع اعلان شامل یک پیام واحد است که مقدار آن یا ONE_TIME_PRODUCT_PURCHASED یا ONE_TIME_PRODUCT_CANCELED است. این نوع اعلان فقط برای خریدهای مرتبط با اشکال پرداخت با تأخیر، مانند پول نقد، ارسال می‌شود.

هنگام تأیید خریدهای در حال انتظار، حتماً فقط زمانی که وضعیت خرید PURCHASED خریداری شده) است و نه PENDING در انتظار) را تأیید کنید.

تغییرات API

نسخه ۲.۰ کتابخانه پرداخت گوگل پلی شامل چندین تغییر در API برای پشتیبانی از ویژگی‌های جدید و شفاف‌سازی قابلیت‌های موجود است.

مصرفAsync

consumeAsync() اکنون به جای purchaseToken یک شیء ConsumeParams می‌گیرد. ConsumeParams شامل purchaseToken و همچنین یک payload اختیاری توسعه‌دهنده است.

نسخه قبلی تابع consumeAsync() در این نسخه حذف شده است.

queryPurchaseHistoryAsync

برای به حداقل رساندن سردرگمی، queryPurchaseHistoryAsync() اکنون به جای یک شیء Purchase ، یک شیء PurchaseHistoryRecord برمی‌گرداند. شیء PurchaseHistoryRecord مشابه شیء Purchase است، با این تفاوت که فقط مقادیر برگردانده شده توسط queryPurchaseHistoryAsync() را منعکس می‌کند و شامل فیلدهای autoRenewing ، orderId و packageName نیست. توجه داشته باشید که هیچ تغییری در داده‌های برگردانده شده ایجاد نشده است queryPurchaseHistoryAsync() همان داده‌های قبلی را برمی‌گرداند.

مقادیر بازگشتی BillingResult

APIهایی که قبلاً یک مقدار صحیح BillingResponse برمی‌گرداندند، اکنون یک شیء BillingResult برمی‌گردانند. BillingResult شامل عدد صحیح BillingResponse و همچنین یک رشته اشکال‌زدایی است که می‌توانید برای تشخیص خطاها از آن استفاده کنید. رشته اشکال‌زدایی از زبان en-US استفاده می‌کند و برای نمایش به کاربران نهایی در نظر گرفته نشده است.

رفع اشکالات

کتابخانه پرداخت گوگل پلی نسخه ۱.۲.۲ (۲۰۱۹-۰۳-۰۷)

نسخه ۱.۲.۲ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.

رفع اشکالات

  • مشکل threading که در نسخه ۱.۲.۱ معرفی شده بود، برطرف شد. فراخوانی‌های پس‌زمینه دیگر thread اصلی را مسدود نمی‌کنند.

تغییرات دیگر

  • اگرچه استفاده از نخ اصلی هنوز توصیه می‌شود، اکنون می‌توانید کتابخانه پرداخت گوگل پلی را از یک نخ پس‌زمینه نمونه‌سازی کنید.
  • نمونه‌سازی به طور کامل به نخ پس‌زمینه منتقل شده است تا احتمال ایجاد ANR کاهش یابد.

نسخه ۱.۲.۱ کتابخانه پرداخت بازی (۲۰۱۹-۰۳-۰۴)

نسخه ۱.۲.۱ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.

تغییرات عمده

تغییرات دیگر

  • برای آسان‌تر شدن تست، سازنده‌های عمومی برای PurchasesResult و SkuDetailsResult اضافه شد.
  • اشیاء SkuDetails می‌توانند از یک متد جدید به نام getOriginalJson() استفاده کنند.
  • اکنون تمام فراخوانی‌های سرویس AIDL توسط نخ‌های پس‌زمینه مدیریت می‌شوند.

رفع اشکالات

  • شنونده‌های null callback دیگر به APIهای عمومی ارسال نمی‌شوند.

کتابخانه پرداخت گوگل پلی نسخه ۱.۲ (۲۰۱۸-۱۰-۱۸)

نسخه ۱.۲ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.

خلاصه تغییرات

  • کتابخانه پرداخت گوگل پلی اکنون تحت توافقنامه مجوز کیت توسعه نرم‌افزار اندروید مجوز دارد.
  • رابط برنامه‌نویسی کاربردی launchPriceChangeConfirmationFlow اضافه شد که کاربران را ترغیب می‌کند تا تغییر در حال بررسی قیمت اشتراک را بررسی کنند.
  • پشتیبانی از حالت جدید تقسیم‌بندی، DEFERRED ، هنگام ارتقا یا کاهش سطح اشتراک کاربر اضافه شد.
  • در کلاس BillingFlowParams ، setSku() با setSkuDetails() جایگزین کنید.
  • رفع اشکالات جزئی و بهینه‌سازی کدها.

تایید تغییر قیمت

اکنون می‌توانید قیمت اشتراک را در کنسول گوگل پلی تغییر دهید و از کاربران بخواهید هنگام ورود به برنامه شما، قیمت جدید را بررسی و بپذیرند.

برای استفاده از این API، با استفاده از skuDetails محصول اشتراک، یک شیء PriceChangeFlowParams ایجاد کنید و سپس launchPriceChangeConfirmationFlow() را فراخوانی کنید. PriceChangeConfirmationListener برای مدیریت نتیجه پس از اتمام جریان تأیید تغییر قیمت، همانطور که در قطعه کد زیر نشان داده شده است، پیاده‌سازی کنید:

کاتلین

val priceChangeFlowParams = PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build()

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        object : PriceChangeConfirmationListener() {
            override fun onPriceChangeConfirmationResult(responseCode: Int) {
                // Handle the result.
            }
        })

جاوا

PriceChangeFlowParams priceChangeFlowParams =
        PriceChangeFlowParams.newBuilder()
    .setSkuDetails(skuDetailsOfThePriceChangedSubscription)
    .build();

billingClient.launchPriceChangeConfirmationFlow(activity,
        priceChangeFlowParams,
        new PriceChangeConfirmationListener() {
            @Override
            public void onPriceChangeConfirmationResult(int responseCode) {
                // Handle the result.
            }
        });

جریان تأیید تغییر قیمت، یک کادر محاوره‌ای حاوی اطلاعات قیمت‌گذاری جدید را نمایش می‌دهد و از کاربران می‌خواهد که قیمت جدید را بپذیرند. این جریان، یک کد پاسخ از نوع BillingClient.BillingResponse را برمی‌گرداند.

حالت جدید تناسب اندام

هنگام ارتقا یا کاهش اشتراک یک کاربر، می‌توانید از یک حالت سهمیه‌بندی جدید، DEFERRED ، استفاده کنید. این حالت، اشتراک کاربر را در تمدید بعدی به‌روزرسانی می‌کند. برای کسب اطلاعات بیشتر در مورد نحوه تنظیم این حالت سهمیه‌بندی، به تنظیم حالت سهمیه‌بندی مراجعه کنید.

روش جدید برای تنظیم جزئیات SKU

در کلاس BillingFlowParams ، متد setSku() منسوخ شده است. این تغییر برای بهینه‌سازی جریان پرداخت گوگل پلی انجام می‌شود.

هنگام ساخت یک نمونه جدید از BillingFlowParams در کلاینت پرداخت درون‌برنامه‌ای خود، توصیه می‌کنیم که به جای آن، مستقیماً با استفاده از setSkuDetails() با شیء JSON کار کنید، همانطور که در قطعه کد زیر نشان داده شده است:

در کلاس BillingFlowParams Builder، متد setSku() منسوخ شده است. در عوض، همانطور که در قطعه کد زیر نشان داده شده است، از متد setSkuDetails() استفاده کنید. شیء ارسالی به شیء setSkuDetails() از متد querySkuDetailsAsync() می‌آید.

کاتلین

private lateinit var mBillingClient: BillingClient
private val mSkuDetailsMap = HashMap<String, SkuDetails>()

private fun querySkuDetails() {
    val skuDetailsParamsBuilder = SkuDetailsParams.newBuilder()
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build()
    ) { responseCode, skuDetailsList ->
        if (responseCode == 0) {
            for (skuDetails in skuDetailsList) {
                mSkuDetailsMap[skuDetails.sku] = skuDetails
            }
        }
    }
}

private fun startPurchase(skuId: String) {
    val billingFlowParams = BillingFlowParams.newBuilder()
    .setSkuDetails(mSkuDetailsMap[skuId])
    .build()
}

جاوا

private BillingClient mBillingClient;
private Map<String, SkuDetails> mSkuDetailsMap = new HashMap<>();

private void querySkuDetails() {
    SkuDetailsParams.Builder skuDetailsParamsBuilder
            = SkuDetailsParams.newBuilder();
    mBillingClient.querySkuDetailsAsync(skuDetailsParamsBuilder.build(),
            new SkuDetailsResponseListener() {
                @Override
                public void onSkuDetailsResponse(int responseCode,
                        List<SkuDetails> skuDetailsList) {
                    if (responseCode == 0) {
                        for (SkuDetails skuDetails : skuDetailsList) {
                            mSkuDetailsMap.put(skuDetails.getSku(), skuDetails);
                        }
                    }
                }
            });
}

private void startPurchase(String skuId) {
    BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder()
            .setSkuDetails(mSkuDetailsMap.get(skuId))
            .build();
}

انتشار نسخه ۱.۱ کتابخانه پرداخت بازی (۲۰۱۸-۰۵-۰۷)

نسخه ۱.۱ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.

خلاصه تغییرات

  • پشتیبانی برای تعیین حالت تقسیم‌بندی در BillingFlowParams هنگام ارتقا/تنزل رتبه اشتراک موجود اضافه شد.
  • پرچم بولی replaceSkusProration در BillingFlowParams دیگر پشتیبانی نمی‌شود. به جای آن replaceSkusProrationMode استفاده کنید.
  • launchBillingFlow() اکنون برای پاسخ‌های ناموفق، فراخوانی مجدد (callback) انجام می‌دهد.

تغییرات رفتاری

نسخه ۱.۱ کتابخانه پرداخت گوگل پلی شامل تغییرات رفتاری زیر است.

توسعه‌دهندگان می‌توانند replaceSkusProrationMode در کلاس BillingFlowParams تنظیم کنند.

ProrationMode جزئیات بیشتری در مورد نوع تناسب هنگام ارتقا یا کاهش اشتراک کاربر ارائه می‌دهد.

کاتلین

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build()

جاوا

BillingFlowParams.newBuilder()
    .setSku(skuId)
    .setType(billingType)
    .setOldSku(oldSku)
    .setReplaceSkusProrationMode(replaceSkusProrationMode)
    .build();

گوگل پلی از حالت‌های تناسب اندام زیر پشتیبانی می‌کند:

IMMEDIATE_WITH_TIME_PRORATION جایگزینی بلافاصله اعمال می‌شود و زمان انقضای جدید به تناسب تغییر کرده و از کاربر کسر یا به او اعتبار داده می‌شود. این رفتار پیش‌فرض فعلی است.
IMMEDIATE_AND_CHARGE_PRORATED_PRICE تعویض بلافاصله اعمال می‌شود و دوره صورتحساب ثابت می‌ماند. قیمت دوره باقیمانده دریافت خواهد شد.

توجه : این گزینه فقط برای ارتقاء اشتراک در دسترس است.

IMMEDIATE_WITHOUT_PRORATION تعویض بلافاصله اعمال می‌شود و قیمت جدید در دفعات بعدی اعمال خواهد شد. چرخه صورتحساب به همان شکل باقی می‌ماند.

replaceSkusProration دیگر در کلاس BillingFlowParams پشتیبانی نمی‌شود.

توسعه‌دهندگان قبلاً می‌توانستند یک پرچم بولی برای دریافت مبلغ متناسب با درخواست ارتقاء اشتراک تنظیم کنند. با توجه به اینکه ما از ProrationMode پشتیبانی می‌کنیم که شامل دستورالعمل‌های دقیق‌تر برای تناسب است، این پرچم بولی دیگر پشتیبانی نمی‌شود.

launchBillingFlow() اکنون برای پاسخ‌های ناموفق فراخوانی مجدد انجام می‌دهد.

کتابخانه‌ی صورتحساب (Billing Library) همیشه تابع فراخوانی PurhcasesUpdatedListener فعال کرده و یک BillingResponse به صورت غیرهمزمان برمی‌گرداند. مقدار برگشتی همزمان BillingResponse نیز حفظ می‌شود.

رفع اشکالات

  • هنگام قطع شدن سرویس، در متدهای ناهمگام به درستی زودتر از موعد خارج می‌شود.
  • اشیاء پارامتر Builder دیگر اشیاء ساخته شده را تغییر نمی‌دهند.
  • مشکل ۶۸۰۸۷۱۴۱ : تابع launchBillingFlow() اکنون برای پاسخ‌های ناموفق فراخوانی مجدد انجام می‌دهد.

انتشار نسخه ۱.۰ کتابخانه پرداخت گوگل پلی (۲۰۱۷-۰۹-۱۹، اطلاعیه )

نسخه ۱.۰ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.

تغییرات مهم

  • مجوز صورتحساب در مانیفست کتابخانه تعبیه شده است. دیگر نیازی به اضافه کردن مجوز com.android.vending.BILLING در مانیفست اندروید نیست.
  • سازنده‌ی جدید به کلاس BillingClient.Builder اضافه شد.
  • الگوی سازنده برای کلاس SkuDetailsParams معرفی شد تا در متدهای مربوط به پرس‌وجوی SKUها استفاده شود.
  • چندین متد API برای سازگاری به‌روزرسانی شدند (نام و ترتیب آرگومان‌های برگشتی یکسان).

تغییرات رفتاری

نسخه ۱.۰ کتابخانه پرداخت گوگل پلی شامل تغییرات رفتاری زیر است.

کلاس BillingClient.Builder

BillingClient.Builder اکنون از طریق الگوی newBuilder مقداردهی اولیه شده است:

کاتلین

billingClient = BillingClient.newBuilder(context).setListener(this).build()

جاوا

billingClient = BillingClient.newBuilder(context).setListener(this).build();

متد launchBillingFlow اکنون با استفاده از کلاس BillingFlowParams فراخوانی می‌شود.

برای شروع جریان پرداخت صورتحساب برای خرید یا اشتراک، متد launchBillingFlow() یک نمونه BillingFlowParams را که با پارامترهای خاص درخواست مقداردهی اولیه شده است، دریافت می‌کند:

کاتلین

BillingFlowParams.newBuilder().setSku(skuId)
        .setType(billingType)
        .setOldSku(oldSku)
        .build()

// Then, use the BillingFlowParams to start the purchase flow
val responseCode = billingClient.launchBillingFlow(builder.build())

جاوا

BillingFlowParams.newBuilder().setSku(skuId)
                              .setType(billingType)
                              .setOldSku(oldSku)
                              .build();

// Then, use the BillingFlowParams to start the purchase flow
int responseCode = billingClient.launchBillingFlow(builder.build());

روش جدید برای استعلام محصولات موجود

آرگومان‌های مربوط به متدهای queryPurchaseHistoryAsync() و querySkuDetailsAsync() در یک الگوی Builder قرار داده شده‌اند:

کاتلین

val params = SkuDetailsParams.newBuilder()
params.setSkusList(skuList)
        .setType(itemType)
billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() {
    ...
})

جاوا

SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder();
params.setSkusList(skuList)
        .setType(itemType);
billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})

اکنون نتیجه از طریق کد نتیجه و لیستی از اشیاء SkuDetails به جای کلاس wrapper قبلی، برای راحتی شما و برای سازگاری در API ما، بازگردانده می‌شود:

کاتلین

fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)

جاوا

public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)

ترتیب پارامترها در متد onConsumeResponse() تغییر کرد.

ترتیب آرگومان‌های onConsumeResponse از رابط ConsumeResponseListener تغییر کرده است تا در سراسر API ما ثابت باشد:

کاتلین

fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)

جاوا

public void onConsumeResponse(@BillingResponse int responseCode, String outToken)

شیء PurchaseResult بدون پوشش

PurchaseResult برای سازگاری در سراسر API ما، از حالت فشرده خارج شده است:

کاتلین

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

جاوا

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

رفع اشکالات

پیش‌نمایش توسعه‌دهندگان ۱ نسخه (۲۰۱۷-۰۶-۱۲، اطلاعیه )

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

این کتابخانه شامل چندین کلاس و ویژگی مناسب برای استفاده شما هنگام ادغام برنامه‌های اندروید خود با API پرداخت گوگل پلی است. این کتابخانه همچنین یک لایه انتزاعی بر روی سرویس زبان تعریف رابط اندروید (AIDL) ارائه می‌دهد که تعریف رابط بین برنامه و API پرداخت گوگل پلی را برای توسعه‌دهندگان آسان‌تر می‌کند.