این سند حاوی یادداشتهای انتشار برای کتابخانه پرداخت گوگل پلی است.
کتابخانه پرداخت گوگل پلی نسخه ۸.۱.۰ (۲۰۲۵-۱۱-۰۶)
نسخه ۸.۱.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
اشتراکهای معلق
پارامتر جدیدی به متد
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()برگردانده میشود، اکنون شامل یک فیلد کد زیرپاسخ خواهد بود. این فیلد فقط در برخی موارد پر میشود تا دلیل دقیقتری برای شکست ارائه دهد. با PBL 8.0.0، یک زیرکد PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS برای حالتی که موجودی کاربر کمتر از قیمت کالایی است که قصد خرید آن را دارد، برگردانده میشود.متد
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][billing-result] که به طور کامل در Play Billing Library 7.1.1 منتشر شده است، اعمال شد. برای آزمایش ادغام خود با استفاده از این ویژگی، باید به Play Billing Library 7.1.1 ارتقا دهید. یک اشکال وجود دارد که فقط برنامههایی را که [billing overrides testing enabled][enable-billing-overrides-testing] دارند، تحت تأثیر قرار میدهد و بر استفاده منظم تأثیری ندارد. برای اطلاعات بیشتر، به TestBillingResultresponse codes مراجعه کنید. [billing-result]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing
کتابخانه پرداخت گوگل پلی نسخه ۷.۰.۰ (۲۰۲۴-۰۵-۱۴)
نسخه ۷.۰.۰ کتابخانه پرداخت گوگل پلی و افزونههای کاتلین اکنون در دسترس هستند.
خلاصه تغییرات
APIهایی برای پشتیبانی از اشتراکهای اقساطی اضافه شد.
- [
ProductDetails.InstallmentPlanDetails][installment-details ] برای طرحهای پایه اقساطی که کاربران واجد شرایط خرید آن هستند، اضافه شده است. این API به برنامه شما کمک میکند تا طرح اقساطی و تنظیمات تعهد آن را شناسایی کند تا اطلاعات مرتبط را به کاربر ارائه دهد. برای کسب اطلاعات بیشتر، به [راهنمای اقساط اشتراک][installments] ما مراجعه کنید. [installment-details]: /reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails [installments]: /google/play/billing/subscriptions#installments
- [
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.setReplaceProrationMode(). -BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode().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 حذف شدهاند. توسعهدهندگان باید به جایqueryPurchasesازqueryPurchasesAsyncاستفاده کنند. برای جایگزینهای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.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()نیز در 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 اختیاری توسعهدهنده است.
The previous version of consumeAsync() has been removed in this release.
queryPurchaseHistoryAsync
To minimize confusion, queryPurchaseHistoryAsync() now returns a PurchaseHistoryRecord object instead of a Purchase object. The PurchaseHistoryRecord object is the same as a Purchase object, except that it reflects only the values returned by queryPurchaseHistoryAsync() and does not contain the autoRenewing , orderId , and packageName fields. Note that nothing has changed with the returned data— queryPurchaseHistoryAsync() returns the same data as before.
BillingResult return values
APIs that previously returned a BillingResponse integer value now return a BillingResult object. BillingResult contains the BillingResponse integer as well as a debug string that you can use to diagnose errors. The debug string uses an en-US locale and is not meant to be shown to end users.
رفع اشکالات
-
SkuDetails.getIntroductoryPriceAmountMicros()now returns alonginstead of aString.
Google Play Billing Library 1.2.2 Release (2019-03-07)
Version 1.2.2 of the Google Play Billing library is now available. This version contains the following changes.
رفع اشکالات
- Fixed a threading issue introduced in v1.2.1. Background calls no longer block the main thread.
تغییرات دیگر
- Although using the main thread is still recommended, you can now instantiate the Google Play Billing Library from a background thread.
- Instantiation has been fully migrated to the background thread to reduce the chance of causing ANRs.
Play Billing Library 1.2.1 Release (2019-03-04)
Version 1.2.1 of the Google Play Billing library is now available. This version contains the following changes.
Major changes
- Added support for rewarded products . For more information on monetization options, see Add rewarded-product-specific features .
تغییرات دیگر
- Added public constructors for
PurchasesResultandSkuDetailsResultto make testing easier. -
SkuDetailsobjects can use a new method,getOriginalJson(). - All AIDL service calls are now handled by background threads.
رفع اشکالات
- Null callback listeners are no longer passed into public APIs.
Google Play Billing Library 1.2 Release (2018-10-18)
Version 1.2 of the Google Play Billing library is now available. This version contains the following changes.
Summary of changes
- The Google Play Billing Library is now licensed under the Android Software Development Kit License Agreement .
- Added the
launchPriceChangeConfirmationFlowAPI, which prompts users to review a pending change to a subscription price. - Added support for a new proration mode,
DEFERRED, when upgrading or downgrading a user's subscription. - In the
BillingFlowParamsclass, replacedsetSku()withsetSkuDetails(). - Minor bug fixes and code optimizations.
Price change confirmation
You can now change the price of a subscription in Google Play Console and prompt users to review and accept the new price when they enter your app.
To use this API, create a PriceChangeFlowParams object by using the skuDetails of the subscription product, and then call launchPriceChangeConfirmationFlow() . Implement the PriceChangeConfirmationListener to handle the result when the price change confirmation flow finishes, as shown in the following code snippet:
کاتلین
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. } });
The price change confirmation flow displays a dialog containing the new pricing information, asking users to accept the new price. This flow returns a response code of type BillingClient.BillingResponse .
New proration mode
When upgrading or downgrading a user's subscription, you can use a new proration mode, DEFERRED . This mode updates the user's subscription when it next renews. To learn more about how to set this proration mode, see Set proration mode .
New method for setting SKU details
In the BillingFlowParams class, the setSku() method has been deprecated. This change serves to optimize the Google Play Billing flow.
When constructing a new instance of BillingFlowParams in your in-app billing client, we recommend that you instead work with the JSON object directly using setSkuDetails() , as shown in the following code snippet:
In the BillingFlowParams Builder class, the setSku() method has been deprecated. Instead, use the setSkuDetails() method, as shown in the following code snippet. The object passed into setSkuDetails() object comes from the querySkuDetailsAsync() method.
کاتلین
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(); }
Play Billing Library 1.1 Release (2018-05-07)
Version 1.1 of the Google Play Billing library is now available. This version contains the following changes.
Summary of changes
- Added support to specify a proration mode in
BillingFlowParamswhen upgrading/downgrading an existing subscription. - The
replaceSkusProrationboolean flag inBillingFlowParamsis no longer supported. UsereplaceSkusProrationModeinstead. -
launchBillingFlow()now triggers a callback for failed responses.
Behavior changes
Version 1.1 of the Google Play Billing library contains the following behavior changes.
Developers can set replaceSkusProrationMode in BillingFlowParams class
A ProrationMode provides further details on the type of proration when upgrading or downgrading a user's subscription.
کاتلین
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
جاوا
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play supports following proration modes:
IMMEDIATE_WITH_TIME_PRORATION | Replacement takes effect immediately, and the new expiration time will be prorated and credited or charged to the user. This is the current default behavior. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE | Replacement takes effect immediately, and the billing cycle remains the same. The price for the remaining period will be charged. Note : This option is only available for subscription upgrade. |
IMMEDIATE_WITHOUT_PRORATION | Replacement takes effect immediately, and the new price will be charged on next recurrence time. The billing cycle stays the same. |
replaceSkusProration is no longer supported in BillingFlowParams class
Developers used to be able to set a boolean flag to charge a prorated amount for a subscription upgrade request. Given that we are supporting ProrationMode , which contains more detailed proration instruction, this boolean flag is no longer supported.
launchBillingFlow() now triggers a callback for failed responses
The Billing Library will always trigger the PurhcasesUpdatedListener callback and return a BillingResponse asynchronously. The synchronous return value of BillingResponse is kept as well.
رفع اشکالات
- Properly exits early in async methods when service is disconnected.
-
Builderparam objects no longer mutates built objects. - Issue 68087141 :
launchBillingFlow()now trigger callback for failed responses.
Google Play Billing Library 1.0 Release (2017-09-19, Announcement )
Version 1.0 of the Google Play Billing library is now available. This version contains the following changes.
Important changes
- Embedded billing permission inside library's manifest. It's not necessary to add the
com.android.vending.BILLINGpermission inside Android manifest anymore. - New builder added to
BillingClient.Builderclass. - Introduced builder pattern for
SkuDetailsParamsclass to be used on methods to query SKUs. - Several API methods were updated for consistency (the same return argument names and order).
Behavior changes
Version 1.0 of the Google Play Billing library contains the following behavior changes.
BillingClient.Builder class
BillingClient.Builder is now initialized via the newBuilder pattern:
کاتلین
billingClient = BillingClient.newBuilder(context).setListener(this).build()
جاوا
billingClient = BillingClient.newBuilder(context).setListener(this).build();
launchBillingFlow method is now called using a BillingFlowParams class
To initiate the billing flow for a purchase or subscription, the launchBillingFlow() method receives a BillingFlowParams instance initialized with parameters specific to the request:
کاتلین
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());
New way to query available products
Arguments for queryPurchaseHistoryAsync() and querySkuDetailsAsync() methods were wrapped into a Builder pattern:
کاتلین
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() {...})
The result is now returned via result code and a list of SkuDetails objects instead of previous wrapper class for your convenience and to be consistent across our API:
کاتلین
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
جاوا
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
Parameters order changed on onConsumeResponse() method
The order of arguments for onConsumeResponse from the ConsumeResponseListener interface has changed to be consistent across our API:
کاتلین
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
جاوا
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
Unwrapped PurchaseResult object
PurchaseResult has been unwraped to be consistent across our API:
کاتلین
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
جاوا
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
رفع اشکالات
- No response code in PURCHASES_UPDATED Bundle
- Fix ProxyBillingActivity and PurchasesUpdatedListener issues during device rotation
Developer Preview 1 Release (2017-06-12, Announcement )
Developer preview launched, aimed to simplify the development process when it comes to billing, allowing developers to focus their efforts on implementing logic specific to the Android app, such as application architecture and navigation structure.
The library includes several convenient classes and features for you to use when integrating your Android apps with the Google Play Billing API. The library also provides an abstraction layer on top of the Android Interface Definition Language (AIDL) service, making it easier for developers to define the interface between the app and the Google Play Billing API.