این سند حاوی یادداشتهای انتشار برای کتابخانه پرداخت گوگل پلی است.
کتابخانه پرداخت گوگل پلی نسخه ۹.۱.۰ (۲۰۲۶-۰۶-۱۸)
نسخه ۹.۱.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
- API های جدید برای Billing Choice :
- تابع
BillingClient.getBillingChoiceInfoAsync()برای بازیابی اطلاعات مربوط به گزینههای صورتحساب موجود برای کاربر اضافه شد. - کلاس
BillingChoiceInfoاضافه شد که شامل جزئیات پاسخ، از جمله آدرسهای اینترنتی تصاویر و اطلاعات وفاداری است. -
GetBillingChoiceInfoParamsبرای پیکربندی درخواست اضافه شد. -
BillingChoiceInfoResponseListenerبرای دریافت پاسخ فراخوانی اضافه شد. - تابع suspend در افزونهی کاتلینِ
BillingClient.getBillingChoiceInfo()اضافه شد. - اضافه شدن
BillingClient.showBillingProgramInformationDialog()برای نمایش یک پنجره اطلاعات برای یک برنامه صدور صورتحساب. - برای پیکربندی کادر محاورهای
BillingProgramInformationDialogParamsاضافه شد. -
BillingProgramInformationDialogListenerبرای دریافت callback اضافه شد. -
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsبرای ارائه جزئیات مربوط به در دسترس بودن گزینه صورتحساب اضافه شد. -
ChoiceScreenTypeبرای مشخص کردن نوع صفحه انتخاب اضافه شد.
- تابع
کتابخانه پرداخت گوگل پلی نسخه ۹.۰.۰ (۲۰۲۶-۰۵-۱۹)
نسخه ۹.۰.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند. اگر میخواهید از نسخههای قبلی PBL مهاجرت کنید، به راهنمای مهاجرت PBL 9 مراجعه کنید.
خلاصه تغییرات
کدهای خطای بهروزرسانیشده برای فعالیت مسدود شدهی فروشگاه پلی : کدهای خطای مربوط به برنامههای مسدود شدهی فروشگاه پلی بهروزرسانی شدهاند. برای مواردی که برنامهی فروشگاه پلی توسط سیستم مسدود شده است (به عنوان مثال، در حالت کودکان سفارشیسازی شده توسط تولیدکنندهی اصلی)، کد پاسخ از
ERRORبهBILLING_UNAVAILABLEتغییر کرده است. علاوه بر این،BillingResultبرای چنین مواردی اکنون یک پیام اشکالزدایی «فروشگاه پلی مسدود شده است» ارائه میدهد.بهروزرسانی قابلیت تهیسازی برای صورتحسابهای ارائه شده توسط توسعهدهنده : متد
DeveloperProvidedBillingDetails.getLinkUri()به@Nullableبهروزرسانی شده است. این تغییر از سناریوهایی پشتیبانی میکند که در آنها URI لینک مستقیم برای پرداختهای خارجی در مرحله انتخاب پرداخت در دسترس نیست.برای مدیریت ایمن این تغییر، قبل از تجزیه یا اجرای intentهای مرورگر، مطمئن شوید که کد یکپارچهسازی شما، مقادیر رشتهای
nullو خالی ("") را از متدDeveloperProvidedBillingDetails.getLinkUri()مدیریت میکند.targetSdkVersionبه 35 بهروزرسانی شد.اکنون میتوانید از پیامهای درونبرنامهای برای اطلاعرسانی به کاربران در مورد افزایش قیمت احتمالی استفاده کنید. این به کاربران اجازه میدهد بدون ترک برنامه، افزایش قیمت را تأیید کنند. پیام مربوط به افزایش قیمت غیرمنتظره از اولین روزی که کاربر میتواند افزایش قیمت را بپذیرد، نمایش داده میشود و حداکثر هر ۷ روز یک بار نمایش داده میشود.
کتابخانه پرداخت گوگل پلی نسخه ۸.۳.۰ (۲۰۲۵-۱۲-۲۳)
نسخه ۸.۳.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
API های جدید برای پرداخت های خارجی :
- کلاسهای اضافه شده برای پشتیبانی از جریان پرداختهای خارجی:
- برای فعال کردن پرداختهای خارجی،
enableBillingProgram(EnableBillingProgramParams)اضافه شد. - برای راهاندازی جریان پرداختهای خارجی، گزینهی
BillingFlowParams.Builder.enableDeveloperBillingOptionاضافه شد.
کتابخانه پرداخت گوگل پلی نسخه ۸.۲.۱ (۲۰۲۵-۱۲-۱۵)
نسخه ۸.۲.۱ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
رفع اشکالات
- اشکالی در
isBillingProgramAvailableAsyncوcreateBillingProgramReportingDetailsAsyncبرطرف شد. برای استفاده از این APIهای معرفی شده در 8.2.0، به نسخه 8.2.1 بهروزرسانی کنید.
کتابخانه پرداخت گوگل پلی نسخه ۸.۲.۰ (۲۰۲۵-۱۲-۰۹)
نسخه ۸.۲.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
API های جدید برای لینکهای محتوای خارجی و پیشنهادات خارجی :
-
enableBillingProgramبرای تنظیمBillingClientبرای این برنامهها اضافه شد. - برای تعیین واجد شرایط بودن کاربر
isBillingProgramAvailableAsyncاضافه شد. - برای ایجاد توکن تراکنش خارجی که باید برای گزارشگیری استفاده شود،
createBillingProgramReportingDetailsAsyncاضافه شد. - برای شروع لینک خارجی به یک پیشنهاد محتوای دیجیتال یا دانلود برنامه،
launchExternalLinkاضافه شد.
-
تغییرات در برنامه پیشنهادات خارجی :
- تغییراتی در سیاست برنامهی پیشنهادهای خارجی ایجاد شده است. برای جزئیات بیشتر به تغییرات برنامه مراجعه کنید. برای درک نحوهی راهاندازی جریانهای پیشنهاد خارجی با APIهای جدید، به راهنمای ادغام مراجعه کنید.
- API مربوط به
BillingClient.Builder.enableExternalOfferمنسوخ شد. - API مربوط به
isExternalOfferAvailableAsyncمنسوخ شد. - API
createExternalOfferReportingDetailsAsyncمنسوخ شد. - API مربوط به
showExternalOfferInformationDialogمنسوخ شد.
کتابخانه پرداخت گوگل پلی نسخه ۸.۱.۰ (۲۰۲۵-۱۱-۰۶)
نسخه ۸.۱.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
اشتراکهای معلق
پارامتر جدیدی به متد
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)استفاده کنید.
کتابخانه پرداخت گوگل پلی نسخه ۷.۱.۱ (۲۰۲۴-۱۰-۰۳)
نسخه ۷.۱.۱ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
رفع اشکالات
- اشکالی در کتابخانه صورتحساب Play نسخه ۷.۱.۰ مربوط به آزمایش کدهای پاسخ
BillingResultبرطرف شد.
کتابخانه پرداخت گوگل پلی نسخه ۷.۱.۰ (۲۰۲۴-۰۹-۱۹)
نسخه ۷.۱.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
- بهبود ایمنی نخ مربوط به وضعیت اتصال و مدیریت.
- تغییرات جزئی برای آزمایش کدهای پاسخ
BillingResultکه به طور کامل در Play Billing Library 7.1.1 منتشر شده است، اعمال شد. برای آزمایش ادغام خود با استفاده از این ویژگی، باید به Play Billing Library 7.1.1 ارتقا دهید. یک اشکال وجود دارد که فقط برنامههایی را که آزمایش لغو صورتحساب در آنها فعال است، تحت تأثیر قرار میدهد و بر استفاده منظم تأثیری ندارد. برای اطلاعات بیشتر، به TestBillingResultresponse codes مراجعه کنید.
کتابخانه پرداخت گوگل پلی نسخه ۷.۰.۰ (۲۰۲۴-۰۵-۱۴)
نسخه ۷.۰.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
APIهایی برای پشتیبانی از اشتراکهای اقساطی اضافه شد.
-
ProductDetails.InstallmentPlanDetailsطرح اقساطی برای طرحهای پایه اقساطی که کاربران واجد شرایط خرید آن هستند، اضافه شد. این API به برنامه شما کمک میکند تا طرح اقساطی و تنظیمات تعهد آن را شناسایی کند تا اطلاعات مرتبط را در اختیار کاربر قرار دهد. برای کسب اطلاعات بیشتر، به راهنمای اقساط اشتراک ما مراجعه کنید.
-
PendingPurchasesParamsوBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)اضافه شدند تا جایگزینBillingClient.Builder.enablePendingPurchases()شوند که در این نسخه منسوخ شده است.- تابع منسوخشدهی
enablePendingPurchases()از نظر عملکردی معادلenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).
- تابع منسوخشدهی
API های اضافه شده برای پشتیبانی از تراکنش های در حال انتظار برای طرح های پیش پرداخت اشتراک:
- از
PendingPurchasesParams.Builder.enablePrepaidPlans()به همراهBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)برای فعال کردن تراکنشهای در حال انتظار برای طرحهای پیشپرداخت اشتراک استفاده کنید. هنگام افزودن پشتیبانی، مطمئن شوید که برنامه شما چرخه عمر اشتراک را نیز به درستی مدیریت میکند. برای کسب اطلاعات بیشتر به راهنمای خریدهای در حال انتظار ما مراجعه کنید. - توابع
Purchase.PendingPurchaseUpdateوPurchase.getPendingPurchaseUpdate()برای بازیابی موجودی در حال افزایش یا ارتقاء یا تنزل به اشتراک موجود اضافه شدند.
- از
BillingClient.Builder.enableAlternativeBilling()،AlternativeBillingListenerوAlternativeChoiceDetailsحذف شدند.- توسعهدهندگان باید به جای آن
BillingClient.Builder.enableUserChoiceBilling()به همراهUserChoiceBillingListenerوUserChoiceDetailsدر تابع فراخوانی listener استفاده کنند.
- توسعهدهندگان باید به جای آن
BillingFlowParams.ProrationMode،BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode() وBillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode() حذف شدند.- توسعهدهندگان باید به جای آن
BillingFlowParams.SubscriptionUpdateParams.ReplacementModeبه همراهBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int)استفاده کنند.
- توسعهدهندگان باید به جای آن
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken()حذف شد.- توسعهدهندگان باید به جای آن از
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)استفاده کنند.
- توسعهدهندگان باید به جای آن از
BillingClient.queryPurchaseHistoryAsync()منسوخ شده و در نسخههای آینده حذف خواهد شد. توسعهدهندگان باید از جایگزینهای زیر استفاده کنند:- خریدهای تأیید شده و در انتظار: از
BillingClient.queryPurchasesAsync()برای دریافت خریدهای فعال استفاده کنید. - خریدهای مصرفشده: توسعهدهندگان باید خریدهای مصرفشده را در سرورهای خود پیگیری کنند.
- خریدهای لغو شده: از رابط برنامهنویسی کاربردی توسعهدهندهی voided-purchases استفاده کنید.
- برای جزئیات بیشتر، به تاریخچه خرید پرس و جو مراجعه کنید
- خریدهای تأیید شده و در انتظار: از
BillingFlowParams.ProductDetailsParams.setOfferToken()اکنون وقتی توسعهدهندگان یکofferTokenخالی مشخص میکنند، یک استثنا ایجاد میکند.minSdkVersionبه ۲۱ وtargetSdkVersionبه ۳۴ بهروزرسانی شد.
کتابخانه پرداخت گوگل پلی نسخه ۶.۲.۱ (۲۰۲۴-۰۴-۱۶)
نسخه ۶.۲.۱ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
- اشکالی در
BillingClient.showAlternativeBillingOnlyInformationDialog()برطرف شد که در آن ممکن استAlternativeBillingOnlyInformationDialogListenerدر موارد خاصی پس از اتمام کادر محاورهای فراخوانی نشود.
کتابخانه پرداخت گوگل پلی نسخه ۶.۲.۰ (۲۰۲۴-۰۳-۰۶)
نسخه ۶.۲.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
- API های اضافه شده برای پشتیبانی از پیشنهادات خارجی
- برای فعال کردن امکان ارائه پیشنهادات خارجی،
BillingClient.Builder.enableExternalOffer()اضافه شد. - برای بررسی در دسترس بودن قابلیت ارائه پیشنهادات خارجی
BillingClient.isExternalOfferAvailableAsync()اضافه شد. - اضافه شدن
BillingClient.showExternalOfferInformationDialog()برای نمایش یک پنجره اطلاعات به کاربران قبل از هدایت آنها به خارج از برنامه. -
BillingClient.createExternalOfferReportingDetailsAsync()برای ایجاد یک payload مورد نیاز برای گزارش تراکنشهای انجام شده از طریق پیشنهادهای خارجی اضافه شد.
- برای فعال کردن امکان ارائه پیشنهادات خارجی،
کتابخانه پرداخت گوگل پلی نسخه ۶.۱.۰ (۲۰۲۳-۱۱-۱۴)
نسخه ۶.۱.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
- APIهای اضافه شده فقط برای پشتیبانی از پرداختهای جایگزین (یعنی بدون انتخاب کاربر)
- تابع
BillingClient.Builder.enableAlternativeBillingOnly()اضافه شد تا قابلیت ارائه فقط صورتحساب جایگزین را به صورت کاربردی فعال کند. - برای بررسی در دسترس بودن ارائه فقط صورتحساب جایگزین،
BillingClient.isAlternativeBillingOnlyAvailableAsync()اضافه شد. - اضافه شدن
BillingClient.showAlternativeBillingOnlyInformationDialog()برای نمایش یک پنجرهی اطلاعاتی جهت اطلاعرسانی به کاربران در صورت استفاده از Alternative billing only. - اضافه شدن
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()برای ایجاد یک payload مورد نیاز برای گزارش تراکنشهای انجام شده فقط از طریق صورتحساب جایگزین.
- تابع
- بهروزرسانی رابطهای برنامهنویسی کاربردی (API) پرداخت به انتخاب کاربر
-
UserChoiceBillingListenerاضافه شد تا جایگزین AlternativeBillingListener شود که به عنوان منسوخ شده علامتگذاری شده است. -
UserChoiceDetailsاضافه شد تا جایگزینAlternativeChoiceDetailsشود که به عنوان منسوخ شده علامتگذاری شده است. -
BillingClient.Builder.enableUserChoiceBilling()اضافه شد تا جایگزینBillingClient.Builder.enableAlternativeBilling()شود که به عنوان منسوخ شده علامت گذاری شده است.
-
- برای بازیابی کشور گوگل پلی،
BillingClient.getBillingConfigAsync()اضافه شد.
کتابخانه پرداخت گوگل پلی نسخه ۶.۰.۱ (۲۰۲۳-۰۶-۲۲)
نسخه ۶.۰.۱ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
کتابخانه پرداخت 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 را برای سازگاری با اندروید ۱۴ بهروزرسانی کنید.
کتابخانه پرداخت گوگل پلی نسخه ۵.۲ (۲۰۲۳-۰۴-۰۶)
نسخه ۵.۲.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
- کلاسهایی برای پشتیبانی از جریانهای پرداخت جایگزین در موبایل/تبلت برای کاربران کره جنوبی اضافه شد:
- متد
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()برای تعیین شناسه تراکنش خارجی اشتراک مبدا اضافه شد. - متد
BillingClient.Builder.enableAlternativeBilling()اضافه شد تا به کاربران در کره جنوبی اجازه دهد گزینه صورتحساب جایگزین را انتخاب کنند.
کتابخانه پرداخت گوگل پلی نسخه ۵.۱ (۲۰۲۲-۱۰-۳۱)
نسخه ۵.۱.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- متد
ProductDetails.SubscriptionOfferDetails.getOfferId()برای بازیابی شناسه پیشنهاد اضافه شد. - متد
ProductDetails.SubscriptionOfferDetails.getBasePlanId()برای بازیابی شناسه طرح پایه اضافه شد. -
targetSdkVersionبه ۳۱ بهروزرسانی شد.
نسخه ۵.۰ کتابخانه پرداخت گوگل پلی (۲۰۲۲-۰۵-۱۱)
نسخه ۵.۰.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- مدل جدیدی برای اشتراکها معرفی شد، از جمله موجودیتهای جدیدی که به شما امکان میدهند چندین پیشنهاد برای یک محصول اشتراکی ایجاد کنید. برای اطلاعات بیشتر، به راهنمای مهاجرت مراجعه کنید.
- تابع
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()اکنون به جایStringintرا برمیگرداند. - اشکالی که باعث میشد جریان صورتحساب، حتی اگر هیچ پارامتر اضافی تنظیم نشده بود، به عنوان دارای پارامترهای اضافی در نظر گرفته شود، برطرف شد.
کتابخانه پرداخت گوگل پلی نسخه ۲.۲.۱ (۲۰۲۰-۰۵-۲۰)
نسخه ۲.۲.۱ کتابخانه پرداخت گوگل پلی اکنون در دسترس است.
رفع اشکالات
- نسخه پیشفرض کتابخانه پرداخت Java Play که افزونه Kotlin به آن وابسته است، بهروزرسانی شد.
انتشار نسخه ۲.۲.۰ کتابخانه پرداخت گوگل پلی و پشتیبانی از یونیتی (۲۰۲۰-۰۳-۲۳)
نسخه ۲.۲.۰ از سیستم پرداخت گوگل پلی، قابلیتهایی را ارائه میدهد که به توسعهدهندگان کمک میکند تا اطمینان حاصل کنند که خریدها به کاربر صحیح نسبت داده میشوند. این تغییرات جایگزین نیاز به ساخت راهحلهای سفارشی بر اساس بار مفید توسعهدهنده میشود. به عنوان بخشی از این بهروزرسانی، قابلیت بار مفید توسعهدهنده منسوخ شده و در نسخههای آینده حذف خواهد شد. برای اطلاعات بیشتر، از جمله گزینههای پیشنهادی، به بخش بار مفید توسعهدهنده مراجعه کنید.
کتابخانه پرداخت صورتحساب گوگل پلی ۲ برای یونیتی
علاوه بر نسخههای فعلی جاوا و کاتلین از کتابخانه صورتحساب گوگل پلی ۲، ما نسخهای از این کتابخانه را برای استفاده با یونیتی منتشر کردیم. توسعهدهندگان بازی که از API خرید درونبرنامهای یونیتی استفاده میکنند، میتوانند اکنون آن را ارتقا دهند تا از تمام ویژگیهای کتابخانه صورتحساب گوگل پلی ۲ بهرهمند شوند و ارتقاءهای بعدی به نسخههای آینده کتابخانه صورتحساب گوگل پلی آسانتر شود.
برای کسب اطلاعات بیشتر، به استفاده از پرداخت گوگل پلی با یونیتی مراجعه کنید.
خلاصه تغییرات
- کتابخانه پرداخت گوگل پلی جاوا
- در
AcknowledgePurchaseParams، متدهایsetDeveloperPayload()وgetDeveloperPayload()منسوخ شدهاند. - در
ConsumeParams، متدهایsetDeveloperPayload()وgetDeveloperPayload()منسوخ شدهاند. - در
BillingFlowParams، تابعsetAccountId()بهsetObfuscatedAccountId()تغییر نام داده شده و محدودیت طول ۶۴ کاراکتر و محدودیت عدم اجازه به اطلاعات شخصی قابل شناسایی (PII) در این فیلد مستند شده است.setAccountId()به عنوان منسوخ علامتگذاری شده و در نسخه بعدی کتابخانه حذف خواهد شد. - در
BillingFlowParams، تابعsetObfuscatedProfileId()اضافه شده است که مشابهsetObfuscatedAccountId()عمل میکند. برای اطلاعات بیشتر، به بهروزرسانیها و جایگزینهای بار داده توسعهدهنده مراجعه کنید. - در
Purchase، متدgetAccountIdentifiers()برای برگرداندن شناسههای حساب مبهمسازیشدهی تنظیمشده درBillingFlowParamsاضافه شده است. - در
BillingClient، متدloadRewardedSku()به عنوان بخشی از منسوخ شدن SKU های پاداش داده شده، منسوخ شده علامت گذاری شده است. میتوانید اطلاعات بیشتر در مورد منسوخ شدن را در مرکز راهنمای کنسول Play بیابید.
- در
انتشار نسخه ۲.۱.۰ کتابخانه پرداخت گوگل پلی و نسخه ۲.۱.۰ افزونه کاتلین (۲۰۱۹-۱۲-۱۰)
نسخه ۲.۱.۰ کتابخانه پرداخت گوگل پلی و افزونه جدید کاتلین اکنون در دسترس هستند. افزونه کاتلین کتابخانه پرداخت گوگل پلی، جایگزینهای 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 را بررسی کنید:
- هنگام شروع برنامه، برای بازیابی لیست محصولات مصرف نشده مرتبط با کاربر، تابع
BillingClient.queryPurchases()را فراخوانی کنید. - تابع
Purchase.getPurchaseState()را روی هر شیءPurchaseکه برگردانده میشود، فراخوانی کنید. - متد
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 استفاده میکند و برای نمایش به کاربران نهایی در نظر گرفته نشده است.
رفع اشکالات
-
SkuDetails.getIntroductoryPriceAmountMicros()اکنون به جای یکStringیک نوع دادهlongبرمیگرداند.
کتابخانه پرداخت گوگل پلی نسخه ۱.۲.۲ (۲۰۱۹-۰۳-۰۷)
نسخه ۱.۲.۲ کتابخانه پرداخت گوگل پلی اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
رفع اشکالات
- مشکل 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)
رفع اشکالات
- کد پاسخی در بسته PURCHASES_UPDATED وجود ندارد
- رفع مشکلات ProxyBillingActivity و PurchasesUpdatedListener در حین چرخش دستگاه
پیشنمایش توسعهدهندگان ۱ نسخه (۲۰۱۷-۰۶-۱۲، اطلاعیه )
پیشنمایش توسعهدهندگان منتشر شد که هدف آن سادهسازی فرآیند توسعه در حوزه صورتحساب است و به توسعهدهندگان اجازه میدهد تلاشهای خود را بر پیادهسازی منطق خاص برنامه اندروید، مانند معماری برنامه و ساختار ناوبری، متمرکز کنند.
این کتابخانه شامل چندین کلاس و ویژگی مناسب برای استفاده شما هنگام ادغام برنامههای اندروید خود با API پرداخت گوگل پلی است. این کتابخانه همچنین یک لایه انتزاعی بر روی سرویس زبان تعریف رابط اندروید (AIDL) ارائه میدهد که تعریف رابط بین برنامه و API پرداخت گوگل پلی را برای توسعهدهندگان آسانتر میکند.