این مبحث حاوی یادداشتهای انتشار برای کتابخانه صورتحساب Google Play است.
کتابخانه صورتحساب Google Play نسخه ۷.۰.۰ (۱۴-۰۵-۲۰۲۴)
نسخه 7.0.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
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
در پاسخ به تماس شنونده استفاده کنند.
- توسعهدهندگان باید از
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()
برای واکشی خریدهای فعال استفاده کنید. - خریدهای مصرف شده: توسعه دهندگان باید خریدهای مصرف شده را در سرورهای خود پیگیری کنند.
- خریدهای لغو شده: از API توسعه دهنده خریدهای باطل استفاده کنید.
- برای جزئیات بیشتر، به سابقه خرید پرس و جو مراجعه کنید
- خریدهای تایید شده و در انتظار: از
BillingFlowParams.ProductDetailsParams.setOfferToken()
اکنون یک استثنا ایجاد می کند زمانی که توسعه دهندگان یکofferToken
خالی را مشخص می کنند.minSdkVersion
به 21 وtargetSdkVersion
به 34 به روز شد.
کتابخانه صورتحساب Google Play نسخه 6.2.1 انتشار (16-04-2024)
نسخه 6.2.1 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
- یک اشکال در
BillingClient.showAlternativeBillingOnlyInformationDialog()
که در آنAlternativeBillingOnlyInformationDialogListener
ممکن است در موارد خاصی که کادر گفتگو کامل می شود فراخوانی نشود، رفع شد.
کتابخانه صورتحساب Google Play نسخه 6.2.0 (06-03-2024)
نسخه 6.2.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
- API ها برای پشتیبانی از پیشنهادات خارجی اضافه شده است
-
BillingClient.Builder.enableExternalOffer()
اضافه شد تا توانایی ارائه پیشنهادات خارجی را فعال کند. -
BillingClient.isExternalOfferAvailableAsync()
اضافه شد تا در دسترس بودن ارائه عملکرد پیشنهادات خارجی را بررسی کند. -
BillingClient.showExternalOfferInformationDialog()
اضافه شد تا یک گفتگوی اطلاعاتی را قبل از کاربران اصلی خارج از برنامه به کاربران نشان دهد. -
BillingClient.createExternalOfferReportingDetailsAsync()
اضافه شد تا باری را ایجاد کند که برای گزارش تراکنش های انجام شده از طریق پیشنهادات خارجی لازم است.
-
کتابخانه صورتحساب Google Play نسخه 6.1.0 انتشار (14-11-2023)
نسخه 6.1.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
- API های اضافه شده برای پشتیبانی از صورتحساب جایگزین (یعنی بدون انتخاب کاربر)
-
BillingClient.Builder.enableAlternativeBillingOnly()
اضافه شد تا قابلیت ارائه فقط صورتحساب جایگزین را به صورت کاربردی فعال کند. -
BillingClient.isAlternativeBillingOnlyAvailableAsync()
اضافه شد تا در دسترس بودن ارائه فقط صورتحساب جایگزین را بررسی کند. -
BillingClient.showAlternativeBillingOnlyInformationDialog()
اضافه شد تا یک گفتگوی اطلاعاتی را برای اطلاع کاربران در زمانی که فقط صورتحساب جایگزین استفاده می شود نشان دهد. -
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()
اضافه شد تا محموله مورد نیاز برای گزارش تراکنش های انجام شده از طریق صورتحساب جایگزین ایجاد کند.
-
- API های صورتحساب انتخابی کاربر را به روز کرد
-
UserChoiceBillingListener
برای جایگزینی AlternativeBillingListener که بهعنوان منسوخ علامتگذاری شده است اضافه شد. -
UserChoiceDetails
اضافه شد تا جایگزینAlternativeChoiceDetails
شود که بهعنوان منسوخ علامتگذاری شده است. -
BillingClient.Builder.enableUserChoiceBilling()
به جایBillingClient.Builder.enableAlternativeBilling()
اضافه شد که به عنوان منسوخ علامت گذاری شده است.
-
-
BillingClient.getBillingConfigAsync()
برای بازیابی کشور Google Play اضافه شد.
Google Play Billing Library نسخه 6.0.1 انتشار (22/06/2023)
نسخه 6.0.1 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
کتابخانه صورتحساب Play را بهروزرسانی کنید تا با Android 14 سازگار باشد.
کتابخانه صورتحساب Google Play نسخه 6.0 (10-05-2023)
نسخه 6.0.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
Enum جدید
ReplacementMode
برای جایگزینیProrationMode
اضافه شد.لطفاً توجه داشته باشید که
ProrationMode
به دلایل سازگاری با گذشته همچنان در دسترس است.شناسه سفارش برای خریدهای
PENDING
حذف شد.قبلاً، شناسه سفارش همیشه ایجاد میشد، حتی اگر خرید معلق بود. با شروع نسخه 6.0.0، شناسه سفارشی برای خریدهای معلق ایجاد نمی شود و برای این خریدها، پس از انتقال خرید به حالت
PURCHASED
، شناسه سفارش تکمیل می شود.روشهای
queryPurchases
وlaunchPriceConfirmationFlow
حذف شدند.روشهای
queryPurchases
وlaunchPriceConfirmationFlow
که قبلاً بهعنوان منسوخ علامتگذاری شده بودند، اکنون در Play Billing Library نسخه 6.0.0 حذف شدهاند. توسعه دهندگان باید به جایqueryPurchases
ازqueryPurchasesAsync
استفاده کنند. برای گزینه هایlaunchPriceConfirmationFlow
، تغییرات قیمت را ببینید.کد پاسخ خطای شبکه جدید اضافه شد.
کد پاسخ به خطای شبکه جدید،
NETWORK_ERROR
، با شروع نسخه 6.0.0 PBL اضافه شده است. این کد زمانی که خطایی به دلیل مشکل اتصال شبکه رخ می دهد، برگردانده می شود. این خطاهای اتصال شبکه قبلاً به عنوانSERVICE_UNAVAILABLE
گزارش شده بود.SERVICE_UNAVAILABLE
وSERVICE_TIMEOUT
به روز شد.با شروع نسخه 6.0.0 PBL، خطاهای ناشی از مهلت زمانی در پردازش به جای
SERVICE_TIMEOUT
فعلی به عنوانSERVICE_UNAVAILABLE
برگردانده می شود.رفتار در نسخه های قبلی PBL تغییر نمی کند.
SERVICE_TIMEOUT
حذف شد.با شروع نسخه 6.0.0 PBL،
SERVICE_TIMEOUT
دیگر برگردانده نخواهد شد. نسخه های قبلی PBL همچنان این کد را برمی گرداند.اضافه شدن ورود به سیستم اضافی.
نسخه Play Billing Library 6 شامل گزارشهای اضافی است که بینشی در مورد استفاده از API (مانند موفقیت و شکست) و مشکلات اتصال سرویس ارائه میکند. این اطلاعات برای بهبود عملکرد کتابخانه صورتحساب Play و ارائه پشتیبانی بهتر برای خطاها استفاده میشود.
کتابخانه صورتحساب Google Play نسخه 5.2.1 انتشار (22/06/2023)
نسخه 5.2.1 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
کتابخانه صورتحساب Play را بهروزرسانی کنید تا با Android 14 سازگار باشد.
نسخه 5.2 کتابخانه صورتحساب Google Play (06-04-2023)
نسخه 5.2.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
- کلاسهای اضافه شده برای پشتیبانی از جریانهای صورتحساب جایگزین در تلفن همراه/تبلت برای کاربران در کره جنوبی:
- متد
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()
اضافه شد تا شناسه تراکنش خارجی اشتراک مبدأ را مشخص کند. - روش
BillingClient.Builder.enableAlternativeBilling()
اضافه شد تا به کاربران در کره جنوبی امکان انتخاب گزینه صورتحساب جایگزین را بدهد.
نسخه 5.1 کتابخانه صورتحساب Google Play (31-10-2022)
نسخه 5.1.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- روش
ProductDetails.SubscriptionOfferDetails.getOfferId()
برای بازیابی شناسه پیشنهاد اضافه شد. - روش
ProductDetails.SubscriptionOfferDetails.getBasePlanId()
برای بازیابی شناسه طرح پایه اضافه شد. -
targetSdkVersion
را به 31 به روز کرد.
نسخه 5.0 کتابخانه صورتحساب Google Play (11-05-2022)
نسخه 5.0.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- یک مدل جدید برای اشتراکها معرفی کرد، از جمله موجودیتهای جدیدی که به شما امکان میدهد چندین پیشنهاد برای یک محصول اشتراک ایجاد کنید. برای اطلاعات بیشتر، راهنمای مهاجرت را ببینید.
-
BillingClient.queryProductDetailsAsync()
اضافه شد تا جایگزینBillingClient.querySkuDetailsAsync()
شود. - روش
setIsOfferPersonalized()
برای الزامات افشای قیمت شخصی اتحادیه اروپا اضافه شد. برای کسب اطلاعات بیشتر در مورد نحوه استفاده از این روش، به نشان دادن قیمت شخصی مراجعه کنید. -
queryPurchases()
حذف کرد که قبلاً منسوخ شده بود و با queryPurchasesAsync که در کتابخانه صورتحساب Google Play نسخه 4.0.0 معرفی شده بود جایگزین شد. -
launchPriceChangeFlow
منسوخ شده است و در نسخه بعدی حذف خواهد شد. برای کسب اطلاعات بیشتر درباره گزینههای جایگزین، به راهاندازی جریان تأیید تغییر قیمت مراجعه کنید. -
setVrPurchaseFlow()
حذف کرد، که قبلاً برای نمونه سازی جریان خرید استفاده می شد. در نسخه های قبلی، این روش کاربر را برای تکمیل خرید در دستگاه اندرویدی خود هدایت می کرد. پس از حذف این روش، کاربران خرید را از طریق جریان خرید استاندارد تکمیل می کنند.
نسخه 4.1 کتابخانه صورتحساب Google Play (23/02/2022)
نسخه 4.1.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
-
BillingClient.showInAppMessages()
اضافه شد تا به مدیریت رد پرداخت اشتراک کمک کند. برای آشنایی بیشتر با نحوه استفاده از پیامرسانی درونبرنامه برای رسیدگی به رد پرداخت اشتراکها، به مدیریت رد پرداخت مراجعه کنید.
نسخه 4.0 کتابخانه صورتحساب Google Play (18-05-2021)
نسخه 4.0.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
BillingClient.queryPurchasesAsync()
اضافه شد تا جایگزینBillingClient.queryPurchases()
شود که در نسخه بعدی حذف خواهد شد.حالت جدید جایگزینی اشتراک اضافه شد
IMMEDIATE_AND_CHARGE_FULL_PRICE
.روش
BillingClient.getConnectionState()
برای بازیابی وضعیت اتصال کتابخانه صورتحساب Play اضافه شد.Javadoc و پیاده سازی به روز شد تا نشان دهد که یک روش می تواند در کدام رشته فراخوانی شود و نتایج کدام رشته ارسال شده است.
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
حذف شد.
Google Play Billing Library نسخه 3.0.3 انتشار (12-03-2021)
نسخه 3.0.3 کتابخانه صورتحساب Google Play، افزونه Kotlin و افزونه Unity اکنون در دسترس هستند.
رفع اشکال جاوا و کاتلین
- هنگام فراخوانی
endConnection()
نشت حافظه را برطرف کنید. - رفع مشکل زمانی که کتابخانه صورتحساب Google Play توسط برنامههایی که از حالت راهاندازی تک کار استفاده میکنند استفاده میشود. هنگامی که یک برنامه از راهانداز Android از سر گرفته شود و گفتگوی صورتحساب قبل از تعلیق قابل مشاهده باشد، یک تماس پاسخ
onPurchasesUpdated()
فعال میشود.
رفع اشکال Unity
- بهروزرسانی به جاوا نسخه 3.0.3 برای رفع نشت حافظه و رفع مشکل جلوگیری از خرید زمانی که برنامه از راهانداز Android از سر گرفته میشود و گفتگوی صورتحساب قبل از تعلیق قابل مشاهده بود.
کتابخانه صورتحساب Google Play نسخه 3.0.2 (24-11-2020)
نسخه 3.0.2 کتابخانه صورتحساب Google Play و افزونه Kotlin اکنون در دسترس هستند.
رفع اشکال
- رفع یک اشکال در برنامه افزودنی Kotlin که در آن Coroutine با خطای "Already Resumed" خراب می شود.
- هنگامی که پسوند Kotlin با کتابخانه kotlinx.coroutines نسخه 1.4+ استفاده می شود، مراجع حل نشده رفع شد.
Google Play Billing Library نسخه 3.0.1 انتشار (30-09-2020)
نسخه 3.0.1 کتابخانه صورتحساب Google Play و افزونه Kotlin اکنون در دسترس هستند.
رفع اشکال
- اشکالی برطرف شد که در آن اگر برنامه در طول جریان صورتحساب حذف و بازیابی شود، ممکن است
PurchasesUpdatedListener
با نتیجه خرید فراخوانی نشود.
Google Play Billing Library نسخه 3.0 (08-06-2020)
نسخه 3.0.0 کتابخانه صورتحساب Google Play، افزونه Kotlin و افزونه Unity اکنون در دسترس هستند.
خلاصه تغییرات
- پشتیبانی SKU با پاداش حذف شد.
- پارامترهای
ChildDirected
وUnderAgeOfConsent
حذف شدند. - روشهای بارگذاری منسوخ برنامهنویس حذف شد.
- روشهای منسوخ
BillingFlowParams.setAccountId()
وBillingFlowParams.setDeveloperId()
حذف شد. - روشهای منسوخ
BillingFlowParams.setOldSkus(String oldSku)
وBillingFlowParams.addOldSku(String oldSku)
حذف شد. - حاشیه نویسی پوچ پذیری اضافه شده است.
رفع اشکال
- اکنون
SkuDetails.getIntroductoryPriceCycles()
int
به جایString
برمی گرداند. - رفع اشکالی که در آن جریان صورتحساب دارای پارامترهای اضافی تلقی میشود، حتی اگر هیچ پارامتر اضافی تنظیم نشده باشد.
Google Play Billing Library نسخه 2.2.1 انتشار (2020-05-20)
نسخه 2.2.1 کتابخانه صورتحساب Google Play اکنون در دسترس است.
رفع اشکال
- نسخه پیشفرض کتابخانه Java Play Billing را که افزونه Kotlin به آن وابسته است، بهروزرسانی کرد.
انتشار نسخه 2.2.0 کتابخانه صورتحساب Google Play و پشتیبانی Unity (23-03-2020)
نسخه 2.2.0 صورتحساب Google Play عملکردی را ارائه می دهد که به توسعه دهندگان کمک می کند مطمئن شوند که خریدها به کاربر صحیح نسبت داده می شود. این تغییرات جایگزین نیاز به ساخت راه حل های سفارشی بر اساس بار توسعه دهنده می شود. به عنوان بخشی از این بهروزرسانی، قابلیت بارگذاری برنامهنویس منسوخ شده است و در نسخههای بعدی حذف خواهد شد. برای اطلاعات بیشتر، از جمله جایگزینهای پیشنهادی، به بار برنامهنویس مراجعه کنید.
Google Play Billing Billing Library 2 for Unity
علاوه بر نسخههای جاوا و کوتلین فعلی Google Play Billing Library 2، نسخهای از کتابخانه را برای استفاده با Unity منتشر کردیم. توسعهدهندگان بازی که از API خرید درونبرنامهای Unity استفاده میکنند، میتوانند برای استفاده از همه ویژگیهای Google Play Billing Library 2 و ارتقای بعدی به نسخههای بعدی کتابخانه صورتحساب Google Play، آن را ارتقا دهند.
برای کسب اطلاعات بیشتر، به استفاده از صورتحساب Google Play با Unity مراجعه کنید.
خلاصه تغییرات
- کتابخانه صورتحساب Google Play Java
- در
AcknowledgePurchaseParams
، متدهایsetDeveloperPayload()
وgetDeveloperPayload()
منسوخ شد. - در
ConsumeParams
، متدهایsetDeveloperPayload()
وgetDeveloperPayload()
منسوخ شد. - در
BillingFlowParams
، بهsetAccountId()
بهsetObfuscatedAccountId()
تغییر نام داد و محدودیت طول 64 کاراکتر و محدودیت اطلاعات شناسایی شخصی (PII) را در این فیلد غیرمجاز کرد.setAccountId()
به عنوان منسوخ علامت گذاری شده است و در نسخه کتابخانه بعدی حذف خواهد شد. - در
BillingFlowParams
،setObfuscatedProfileId()
را اضافه کرد که مشابهsetObfuscatedAccountId()
کار می کند. برای اطلاعات بیشتر، بهروزرسانیها و گزینههای بارگیری برنامهنویس را ببینید. - در
Purchase
، متدgetAccountIdentifiers()
را اضافه کرد تا شناسه های حساب مبهم تنظیم شده درBillingFlowParams
را برگرداند. - در
BillingClient
، متدloadRewardedSku()
منسوخ شده به عنوان بخشی از منسوخ شدن SKUهای پاداش دار علامت گذاری شده است. میتوانید اطلاعات بیشتر درباره منسوخ شدن را در مرکز راهنمای کنسول Play بیابید.
- در
Google Play Billing Library 2.1.0 Release و Kotlin Extension 2.1.0 Release (2019-12-10)
نسخه 2.1.0 کتابخانه صورتحساب Google Play و افزونه جدید Kotlin اکنون در دسترس هستند. برنامه افزودنی Play Billing Library Kotlin جایگزینهای API اصطلاحی را برای مصرف Kotlin ارائه میکند که دارای ایمنی تهی و برنامههای مشترک بهتری است. برای نمونه کد، استفاده از کتابخانه صورتحساب Google Play را ببینید.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- در
BillingFlowParams
،setOldSku(String oldSku)
را منسوخ کرد و باsetOldSku(String oldSku, String purchaseToken)
جایگزین شد تا زمانی که چندین حساب در دستگاه دارای یک sku هستند، ابهامزدایی شود.
Google Play Billing Library نسخه 2.0.3 انتشار (05-08-2019)
نسخه 2.0.3 کتابخانه صورتحساب Google Play اکنون در دسترس است.
رفع اشکال
- رفع اشکالی که در آن
querySkuDetailsAsync()
گهگاه با کدDEVELOPER_ERROR
به جای بازگرداندن یک نتیجه موفق، شکست می خورد.
Google Play Billing Library نسخه 2.0.2 انتشار (08-07-2019)
نسخه 2.0.2 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه حاوی بهروزرسانیهایی برای اسناد مرجع است و عملکرد کتابخانه را تغییر نمیدهد.
Google Play Billing Library نسخه 2.0.1 انتشار (06-06-2019)
نسخه 2.0.1 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
رفع اشکال
- رفع اشکالی که در آن پیامهای اشکالزدایی در برخی موارد به عنوان
null
برگردانده میشدند. - مشکل احتمالی نشت حافظه برطرف شد.
Google Play Billing Library نسخه 2.0 (07-05-2019)
نسخه 2.0 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
خرید باید ظرف سه روز تایید شود
Google Play از خرید محصولات از داخل برنامه شما (داخل برنامه) یا خارج از برنامه شما (خارج از برنامه) پشتیبانی می کند. برای اینکه Google Play بدون توجه به اینکه کاربر محصول شما را از کجا خریداری میکند، از تجربه خرید ثابتی مطمئن شود، باید پس از اعطای حق به کاربر، در اسرع وقت تمام خریدهای دریافت شده از طریق کتابخانه صورتحساب Google Play را تأیید کنید. اگر ظرف سه روز خریدی را تأیید نکنید، کاربر بهطور خودکار بازپرداخت دریافت میکند و Google Play خرید را لغو میکند. برای تراکنشهای معلق (جدید در نسخه 2.0)، پنجره سه روزه زمانی شروع میشود که خرید به حالت PURCHASED
منتقل شده باشد و در زمانی که خرید در حالت PENDING
است اعمال نمیشود.
برای اشتراکها، باید هر خریدی را که دارای نشانه خرید جدید است، تأیید کنید. این بدان معنی است که همه خریدهای اولیه، تغییرات طرح و ثبت نام مجدد باید تایید شوند، اما نیازی به تایید تمدیدهای بعدی ندارید. برای تعیین اینکه آیا خرید نیاز به تایید دارد یا خیر، می توانید قسمت تایید را در خرید بررسی کنید.
شی Purchase
اکنون شامل یک متد isAcknowledged()
است که نشان می دهد آیا خرید تایید شده است یا خیر. علاوه بر این، Google Play Developer API شامل مقادیر بولی تایید برای Purchases.products
و Purchases.subscriptions
است. قبل از تأیید خرید، حتماً از این روشها استفاده کنید تا مشخص کنید آیا خرید قبلاً تأیید شده است یا خیر.
با استفاده از یکی از روش های زیر می توانید خرید خود را تایید کنید:
- برای محصولات مصرفی، از
consumeAsync()
موجود در API مشتری استفاده کنید. - برای محصولاتی که مصرف نمیشوند، از
acknowledgePurchase()
موجود در API مشتری استفاده کنید. - یک متد
acknowledge()
جدید نیز در API سرور موجود است.
BillingFlowParams.setSku() حذف شده است
متد BillingFlowParams#setSku()
قبلاً منسوخ شده بود در این نسخه حذف شده است. قبل از رندر کردن محصولات در یک جریان خرید، اکنون باید BillingClient.querySkuDetailsAsync()
را فراخوانی کنید و شیء SkuDetails
حاصل را به BillingFlowParams.Builder.setSkuDetails()
ارسال کنید.
برای مثال کد، استفاده از کتابخانه صورتحساب Google Play را ببینید.
بار برنامهنویس پشتیبانی میشود
نسخه 2.0 کتابخانه صورتحساب Google Play پشتیبانی از بار برنامهنویس را اضافه میکند — رشتههای دلخواه که میتوانند به خریدها متصل شوند. میتوانید پارامتر بارگذاری برنامهنویس را به خرید متصل کنید، اما فقط زمانی که خرید تأیید یا مصرف شود. این برخلاف بار توسعهدهنده در AIDL است، جایی که میتوان در هنگام راهاندازی جریان خرید، بار را مشخص کرد. از آنجایی که اکنون خریدها را می توان از خارج از برنامه شما آغاز کرد، این تغییر تضمین می کند که همیشه فرصتی برای اضافه کردن یک بار به خریدها دارید.
برای دسترسی به payload در کتابخانه جدید، اشیاء Purchase
اکنون شامل یک متد getDeveloperPayload()
است.
پیشنهادات ثابت
وقتی یک SKU با تخفیف ارائه میکنید، Google Play اکنون قیمت اصلی SKU را برمیگرداند تا بتوانید به کاربران نشان دهید که تخفیف دریافت میکنند.
SkuDetails
شامل دو روش جدید برای بازیابی قیمت اصلی SKU است:
-
getOriginalPriceAmountMicros()
- قیمت اصلی فرمت نشده SKU را قبل از تخفیف برمی گرداند. -
getOriginalPrice()
- قیمت اصلی را با قالب بندی ارز اضافی برمی گرداند.
معاملات معلق
با نسخه 2.0 کتابخانه صورتحساب Google Play، باید قبل از اعطای حق، از خریدهایی پشتیبانی کنید که در آن اقدامات بیشتری لازم است. به عنوان مثال، یک کاربر ممکن است انتخاب کند که محصول درون برنامه ای شما را با استفاده از پول نقد در یک فروشگاه فیزیکی خریداری کند. این بدان معنی است که تراکنش خارج از برنامه شما انجام می شود. در این سناریو، شما باید فقط پس از تکمیل تراکنش توسط کاربر، این حق را اعطا کنید.
برای فعال کردن خریدهای معلق، enablePendingPurchases()
را به عنوان بخشی از مقداردهی اولیه برنامه خود فراخوانی کنید.
از Purchase.getPurchaseState()
برای تعیین اینکه آیا وضعیت خرید PURCHASED
یا PENDING
است استفاده کنید. توجه داشته باشید که شما باید فقط زمانی که ایالت PURCHASED
است، این حق را اعطا کنید. با انجام موارد زیر باید بهروزرسانیهای وضعیت Purchase
را بررسی کنید:
- هنگام راهاندازی برنامه، با
BillingClient.queryPurchases()
تماس بگیرید تا لیست محصولات مصرفنشده مرتبط با کاربر را بازیابی کنید. - روی هر شیء
Purchase
برگشتیPurchase.getPurchaseState()
را فراخوانی کنید. - روش
onPurchasesUpdated()
را برای پاسخ به تغییرات اشیاءPurchase
پیاده سازی کنید.
علاوه بر این، Google Play Developer API شامل وضعیت PENDING
برای Purchases.products
است. تراکنش های معلق برای اشتراک ها پشتیبانی نمی شوند.
این نسخه همچنین یک نوع اعلان برنامهنویس بلادرنگ، OneTimeProductNotification
را معرفی میکند. این نوع اعلان حاوی یک پیام واحد است که مقدار آن ONE_TIME_PRODUCT_PURCHASED
یا ONE_TIME_PRODUCT_CANCELED
است. این نوع اعلان فقط برای خریدهای مرتبط با اشکال پرداخت تاخیری، مانند پول نقد ارسال میشود.
هنگام تأیید خریدهای معلق، مطمئن شوید که فقط زمانی که وضعیت خرید PURCHASED
است و نه PENDING
تأیید کنید.
API تغییر می کند
نسخه 2.0 کتابخانه صورتحساب Google Play شامل چندین تغییر API برای پشتیبانی از ویژگیهای جدید و شفافسازی عملکرد موجود است.
ConsumeAsync
consumeAsync()
اکنون یک شی ConsumeParams
را به جای purchaseToken
می گیرد. ConsumeParams
شامل purchaseToken
و همچنین یک بار توسعه دهنده اختیاری است.
نسخه قبلی consumeAsync()
در این نسخه حذف شده است.
queryPurchaseHistoryAsync
برای به حداقل رساندن سردرگمی، queryPurchaseHistoryAsync()
اکنون یک شی PurchaseHistoryRecord
را به جای شیء Purchase
برمی گرداند. شیء PurchaseHistoryRecord
همان شیء Purchase
است، با این تفاوت که فقط مقادیر بازگردانده شده توسط queryPurchaseHistoryAsync()
نشان می دهد و حاوی فیلدهای autoRenewing
، orderId
و packageName
نیست. توجه داشته باشید که هیچ چیز با داده های برگشتی تغییر نکرده است queryPurchaseHistoryAsync()
همان داده های قبلی را برمی گرداند.
BillingResult مقادیر را برمی گرداند
APIهایی که قبلاً یک مقدار صحیح BillingResponse
را برمیگرداندند، اکنون یک شی BillingResult
را برمیگردانند. BillingResult
شامل عدد صحیح BillingResponse
و همچنین یک رشته اشکال زدایی است که می توانید از آن برای تشخیص خطاها استفاده کنید. رشته اشکالزدایی از محلی en-US استفاده میکند و قرار نیست به کاربران نهایی نشان داده شود.
رفع اشکال
-
SkuDetails.getIntroductoryPriceAmountMicros()
اکنون به جای یکString
،long
را برمی گرداند.
نسخه 1.2.2 کتابخانه صورتحساب Google Play (07-03-2019)
نسخه 1.2.2 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
رفع اشکال
- رفع مشکل threading معرفی شده در نسخه 1.2.1. تماسهای پسزمینه دیگر رشته اصلی را مسدود نمیکنند.
تغییرات دیگر
- اگرچه استفاده از رشته اصلی همچنان توصیه میشود، اکنون میتوانید کتابخانه صورتحساب Google Play را از یک رشته پسزمینه نمونهسازی کنید.
- نمونه سازی به طور کامل به رشته پس زمینه منتقل شده است تا احتمال ایجاد ANR کاهش یابد.
Play Billing Library 1.2.1 انتشار (04-03-2019)
نسخه 1.2.1 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
تغییرات عمده
- پشتیبانی برای محصولات پاداش اضافه شده است. برای اطلاعات بیشتر در مورد گزینههای کسب درآمد، به افزودن ویژگیهای خاص محصول با پاداش مراجعه کنید.
تغییرات دیگر
- سازندههای عمومی برای
PurchasesResult
وSkuDetailsResult
اضافه شد تا آزمایش را آسانتر کند. - اشیاء
SkuDetails
می توانند از یک متد جدید،getOriginalJson()
استفاده کنند. - همه تماسهای خدمات AIDL اکنون توسط رشتههای پسزمینه انجام میشود.
رفع اشکال
- شنوندگان پاسخ به تماس تهی دیگر به APIهای عمومی منتقل نمی شوند.
نسخه 1.2 کتابخانه صورتحساب Google Play (18-10-2018)
نسخه 1.2 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- کتابخانه صورتحساب Google Play اکنون تحت موافقتنامه مجوز کیت توسعه نرمافزار Android مجوز دارد.
- API
launchPriceChangeConfirmationFlow
اضافه شد که از کاربران میخواهد تغییرات معلق در قیمت اشتراک را بررسی کنند. - هنگامی که اشتراک کاربر را ارتقا یا کاهش میدهید، پشتیبانی از حالت proration جدید،
DEFERRED
اضافه شد. - در کلاس
BillingFlowParams
،setSku()
باsetSkuDetails()
جایگزین کرد. - رفع اشکال جزئی و بهینه سازی کد.
تایید تغییر قیمت
اکنون میتوانید قیمت اشتراک را در کنسول Google Play تغییر دهید و از کاربران بخواهید هنگام ورود به برنامه شما، قیمت جدید را بررسی کرده و بپذیرند.
برای استفاده از این 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
استفاده کنید. این حالت اشتراک کاربر را در زمان تمدید بعدی به روز می کند. برای کسب اطلاعات بیشتر در مورد نحوه تنظیم این حالت proration، به تنظیم حالت proration مراجعه کنید.
روش جدید برای تنظیم جزئیات SKU
در کلاس BillingFlowParams
، متد setSku()
منسوخ شده است. این تغییر برای بهینهسازی جریان صورتحساب Google Play است.
هنگام ساختن یک نمونه جدید از 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(); }
Play Billing Library نسخه 1.1 (07-05-2018)
نسخه 1.1 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- پشتیبانی اضافه شده برای مشخص کردن حالت proration در
BillingFlowParams
هنگام ارتقا/کاهش اشتراک موجود. - پرچم بولین
replaceSkusProration
درBillingFlowParams
دیگر پشتیبانی نمی شود. به جای آن ازreplaceSkusProrationMode
استفاده کنید. -
launchBillingFlow()
اکنون برای پاسخهای ناموفق یک تماس برگشتی ایجاد میکند.
تغییر رفتار
نسخه 1.1 کتابخانه صورتحساب Google Play شامل تغییرات رفتاری زیر است.
توسعه دهندگان می توانند replaceSkusProrationMode
در کلاس BillingFlowParams
تنظیم کنند
یک ProrationMode
جزئیات بیشتری در مورد نوع proration هنگام ارتقا یا کاهش اشتراک کاربر ارائه می دهد.
کاتلین
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
جاوا
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
در حال حاضر، Google Play از حالت های تقسیم بندی زیر پشتیبانی می کند:
IMMEDIATE_WITH_TIME_PRORATION | جایگزینی فورا اعمال می شود و زمان انقضای جدید به نسبت محاسبه می شود و به کاربر اعتبار یا شارژ می شود. این رفتار پیش فرض فعلی است. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE | جایگزینی بلافاصله اعمال می شود و چرخه صورتحساب ثابت می ماند. قیمت برای مدت باقیمانده محاسبه می شود. توجه : این گزینه فقط برای ارتقاء اشتراک موجود است. |
IMMEDIATE_WITHOUT_PRORATION | تعویض بلافاصله اعمال می شود و قیمت جدید در زمان تکرار بعدی محاسبه می شود. چرخه صورتحساب ثابت می ماند. |
replaceSkusProration
دیگر در کلاس BillingFlowParams
پشتیبانی نمی شود
توسعهدهندگان قبلاً میتوانستند یک پرچم منطقی تنظیم کنند تا مبلغی متناسب برای درخواست ارتقاء اشتراک دریافت کنند. با توجه به اینکه ما از ProrationMode
پشتیبانی می کنیم که حاوی دستورالعمل های proration دقیق تری است، این پرچم بولی دیگر پشتیبانی نمی شود.
launchBillingFlow()
اکنون برای پاسخهای ناموفق یک تماس برگشتی ایجاد میکند
کتابخانه صورتحساب همیشه پاسخ تماس PurhcasesUpdatedListener
را راه اندازی می کند و BillingResponse
به صورت ناهمزمان برمی گرداند. مقدار بازگشتی همزمان BillingResponse
نیز حفظ می شود.
رفع اشکال
- هنگامی که سرویس قطع می شود، به درستی در روش های ناهمگام خارج می شود.
-
Builder
param objects دیگر اشیاء ساخته شده را تغییر نمی دهد. - شماره 68087141 :
launchBillingFlow()
اکنون برای پاسخ های ناموفق پاسخ تماس را راه اندازی می کند.
انتشار نسخه 1.0 کتابخانه صورتحساب Google Play (19-09-2017، اطلاعیه )
نسخه 1.0 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه شامل تغییرات زیر است.
تغییرات مهم
- مجوز صورتحساب تعبیهشده در مانیفست کتابخانه. دیگر لازم نیست مجوز
com.android.vending.BILLING
را در مانیفست Android اضافه کنید. - سازنده جدید به کلاس
BillingClient.Builder
اضافه شد. - الگوی سازنده معرفی شده برای کلاس
SkuDetailsParams
در روش هایی برای پرس و جو SKU استفاده می شود. - چندین روش API برای قوام به روز شد (همان نام و ترتیب آرگومان برگشتی).
تغییر رفتار
نسخه 1.0 کتابخانه صورتحساب Google Play شامل تغییرات رفتار زیر است.
BillingClient.Builder Class
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()
در یک الگوی سازنده پیچیده شد:
کاتلین
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
به جای کلاس بسته بندی قبلی برای راحتی شما بازگردانده می شود و در 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
در سراسر API ما باز نشده است:
کاتلین
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
جاوا
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
رفع اشکال
- بدون کد پاسخ در بسته نرم افزاری خریداری شده
- در هنگام چرخش دستگاه ، مشکلات Proxybillingactivity و BuyUpdatedListener را برطرف کنید
نسخه پیش نمایش توسعه دهنده 1 (2017-06-12 ، اعلامیه )
پیش نمایش توسعه دهنده با هدف ساده سازی روند توسعه در هنگام صورتحساب ، به توسعه دهندگان این امکان را می دهد تا تلاش های خود را برای اجرای منطق خاص برای برنامه Android ، مانند معماری کاربرد و ساختار ناوبری متمرکز کنند.
این کتابخانه شامل چندین کلاس و ویژگی های مناسب برای استفاده شما در هنگام ادغام برنامه های Android خود با Google Play Billing API است. این کتابخانه همچنین یک لایه انتزاع در بالای سرویس زبان تعریف رابط Android (AIDL) ارائه می دهد ، و این باعث می شود تا توسعه دهندگان رابط بین برنامه و API صورتحساب Google Play را آسان تر کنند.