این سند حاوی یادداشتهای انتشار برای کتابخانه صورتحساب Google Play است.
Google Play Billing Library 8.0.0 انتشار (30-06-2025)
نسخه 8.0.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
موارد درون برنامه اکنون به عنوان محصولات یکبار مصرف نامیده می شوند.
چندین گزینه خرید و پیشنهاد برای محصولات یکبار مصرف.
اکنون می توانید چندین گزینه خرید و پیشنهاد برای محصولات یکبار مصرف خود داشته باشید. این به شما انعطاف پذیری در نحوه فروش محصولات خود می دهد و پیچیدگی مدیریت آنها را کاهش می دهد.
روش
queryProductDetailsAsync()
بهبود بخشید.قبل از PBL 8.0.0، متد
queryProductDetailsAsync()
محصولاتی را که نمیتوان واکشی کرد برنمیگرداند. این ممکن است به دلایلی مانند یافت نشدن محصول یا عدم ارائه پیشنهاد به کاربر باشد. با PBL 8.0.0، محصولات واکشی نشده با یک کد وضعیت جدید در سطح محصول بازگردانده می شوند که اطلاعاتی در مورد محصولات واکشی نشده ارائه می دهد. توجه داشته باشید که تغییری در امضایProductDetailsResponseListener.onProductDetailsResponse()
وجود دارد که به تغییراتی در برنامه شما نیاز دارد. برای اطلاعات بیشتر، روند نتیجه را ببینید.اتصال مجدد سرویس خودکار
پارامتر سازنده
BillingClient.Builder.enableAutoServiceReconnection()
جدید به توسعه دهندگان اجازه می دهد تا اتصال مجدد خودکار سرویس را انتخاب کنند، که مدیریت اتصال را با مدیریت اتصالات مجدد به سرویس صورتحساب Play به صورت خودکار و حذف نیاز به فراخوانی دستیstartConnection()
می کند. برای اطلاعات بیشتر، به برقراری مجدد خودکار یک اتصال مراجعه کنید.کدهای پاسخ فرعی برای متد
launchBillingFlow()
.BillingResult که از
launchBillingFlow()
برگردانده شده است اکنون شامل یک قسمت کد پاسخ فرعی می شود. این فیلد فقط در برخی موارد پر می شود تا دلیل مشخص تری برای شکست ارائه شود. با PBL 8.0.0، یک کد فرعی PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS برای مواردی که وجوه کاربر کمتر از قیمت کالایی است که قصد خرید آن را دارد، بازگردانده میشود.متد
queryPurchaseHistory()
حذف شد.متد
queryPurchaseHistory()
که قبلا به عنوان منسوخ علامت گذاری شده بود اکنون حذف شده است. برای جزئیات بیشتر در مورد اینکه در عوض از چه APIهای جایگزین استفاده کنید، به تاریخچه خرید Query مراجعه کنید.متد
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)
استفاده کنید.
نسخه ۷.۱.۱ کتابخانه صورتحساب Google Play (03-10-2024)
نسخه 7.1.1 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
رفع اشکال
- یک اشکال در Play Billing Library نسخه 7.1.0 مربوط به آزمایش کدهای پاسخ
BillingResult
رفع شد.
کتابخانه صورتحساب Google Play نسخه ۷.۱.۰ (۱۹/۰۹/۲۰۲۴)
نسخه 7.1.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
- بهبود ایمنی رشته مربوط به وضعیت اتصال و مدیریت.
- تغییرات جزئی برای آزمایش کدهای پاسخ [
BillingResult
][billing-Result] ارائه شده است که به طور کامل در Play Billing Library نسخه 7.1.1 منتشر شده است. برای آزمایش ادغام خود با استفاده از این ویژگی، باید به Play Billing Library نسخه 7.1.1 ارتقا دهید. اشکالی وجود دارد که فقط روی برنامهها تأثیر میگذارد که [تست گذراندن صورتحساب فعال است] [enable-billing-overrides-testing] و بر استفاده منظم تأثیری نمیگذارد. برای اطلاعات بیشتر، تست کدهای پاسخBillingResult
را ببینید. [billing-result]: /reference/com/android/billingclient/api/BillingResult [enable-billing-overrides-testing]: /google/play/billing/test-response-codes#enable-billing-overrides-testing
کتابخانه صورتحساب Google Play نسخه ۷.۰.۰ (۱۴-۰۵-۲۰۲۴)
نسخه 7.0.0 کتابخانه صورتحساب Google Play و افزونههای Kotlin اکنون در دسترس هستند.
خلاصه تغییرات
API ها برای پشتیبانی از اشتراک های اقساطی اضافه شده است.
- [
ProductDetails.InstallmentPlanDetails
][installment-details] برای طرح های پایه اقساط که کاربران واجد شرایط خرید هستند اضافه شد. این API به برنامه شما کمک می کند تا طرح اقساط و تنظیم تعهد آن را شناسایی کند تا اطلاعات مرتبط را به کاربر ارائه دهد. برای کسب اطلاعات بیشتر، [راهنمای اقساط اشتراک] [اقساط] ما را ببینید. [قسط-جزئیات]: /reference/com/android/billingclient/api/ProductDetails.InstallmentPlanDetails [اقساط]: /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
در پاسخ به تماس شنونده استفاده کنند.
- توسعهدهندگان باید
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 Billing Library نسخه 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 Billing Library نسخه 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 نسخه 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
را برمی گرداند.
کتابخانه صورتحساب Google Play نسخه 1.2.2 انتشار (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
را اضافه کرد ، که کاربران را وادار می کند تا تغییر در انتظار قیمت اشتراک را بررسی کنند. - پشتیبانی از یک حالت جدید PRORARATION ،
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
را برمی گرداند.
حالت جدید پیش بینی
هنگام به روزرسانی یا پایین آمدن اشتراک کاربر ، می توانید از یک حالت جدید Proration استفاده کنید DEFERRED
. این حالت اشتراک کاربر را هنگام تجدید بعدی به روز می کند. برای کسب اطلاعات بیشتر در مورد نحوه تنظیم این حالت proration ، به Set Set Proration Set مراجعه کنید.
روش جدید برای تنظیم جزئیات SKU
در کلاس BillingFlowParams
، روش setSku()
کاهش یافته است. این تغییر برای بهینه سازی جریان صورتحساب Google Play انجام می شود.
هنگام ساخت نمونه جدیدی از BillingFlowParams
در مشتری صورتحساب در برنامه خود ، توصیه می کنیم در عوض با شیء JSON مستقیماً با استفاده از setSkuDetails()
کار کنید ، همانطور که در قطعه کد زیر نشان داده شده است:
در کلاس 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(); }
پخش کتابخانه صورتحساب 1.1 نسخه (2018-05-07)
نسخه 1.1 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه حاوی تغییرات زیر است.
خلاصه تغییرات
- پشتیبانی اضافه شده برای مشخص کردن یک حالت PRORARATION در
BillingFlowParams
هنگام به روزرسانی/پایین آمدن یک اشتراک موجود. - پرچم Boolean
replaceSkusProration
درBillingFlowParams
دیگر پشتیبانی نمی شود. به جای آن ازreplaceSkusProrationMode
استفاده کنید. -
launchBillingFlow()
اکنون برای پاسخ های ناموفق ، پاسخ به تماس را ایجاد می کند.
تغییر رفتار
نسخه 1.1 کتابخانه صورتحساب Google Play شامل تغییرات رفتار زیر است.
توسعه دهندگان می توانند replaceSkusProrationMode
در کلاس BillingFlowParams
شوند
یک ProrationMode
در هنگام به روزرسانی یا کاهش اشتراک کاربر ، جزئیات بیشتری در مورد نوع Prouration ارائه می دهد.
کاتلین
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
جاوا
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play از شیوه های proration پشتیبانی می کند:
IMMEDIATE_WITH_TIME_PRORATION | جایگزینی بلافاصله عملی می شود و مدت زمان انقضاء جدید به کاربر اعتبار می یابد و به کاربر پرداخت می شود. این رفتار پیش فرض فعلی است. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE | جایگزینی بلافاصله عملی می شود و چرخه صورتحساب یکسان است. قیمت دوره باقی مانده شارژ می شود. توجه : این گزینه فقط برای ارتقاء اشتراک در دسترس است. |
IMMEDIATE_WITHOUT_PRORATION | جایگزینی بلافاصله عملی می شود و قیمت جدید در زمان عود بعدی شارژ می شود. چرخه صورتحساب یکسان است. |
replaceSkusProration
دیگر در کلاس BillingFlowParams
پشتیبانی نمی شود
توسعه دهندگان قبلاً قادر به تنظیم پرچم بولی برای شارژ مبلغ پیش بینی شده برای درخواست ارتقاء اشتراک بودند. با توجه به اینکه ما از ProrationMode
پشتیبانی می کنیم ، که حاوی دستورالعمل تفصیل تر است ، این پرچم بولی دیگر پشتیبانی نمی شود.
launchBillingFlow()
اکنون پاسخ به پاسخ های ناموفق است
کتابخانه صورتحساب همیشه پاسخ به تماس PurhcasesUpdatedListener
را ایجاد می کند و یک BillingResponse
به صورت غیر همزمان باز می گرداند. مقدار بازده همزمان BillingResponse
نیز نگهداری می شود.
رفع اشکال
- هنگام قطع سرویس ، به درستی در روش های ASYNC خارج می شود.
- اشیاء پارامتری
Builder
دیگر جهش نمی دهند اشیاء ساخته شده. - شماره 68087141 :
launchBillingFlow()
اکنون پاسخ به پاسخ های ناموفق را ایجاد می کند.
Google Play Billing Library نسخه 1.0 (2017-09-19 ، اعلامیه )
نسخه 1.0 کتابخانه صورتحساب Google Play اکنون در دسترس است. این نسخه حاوی تغییرات زیر است.
تغییرات مهم
- مجوز صورتحساب در مانیفست کتابخانه تعبیه شده است. لازم نیست که دیگر مجوز
com.android.vending.BILLING
را در مانیفست اندروید اضافه کنید. - سازنده جدید به کلاس
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 را آسان تر کنند.