این سند حاوی یادداشتهای انتشار «کتابخانه خدمات صورتحساب Google Play» است.
مهارتهای Android
مشاهده در GitHubارتقا دادن «کتابخانه خدمات صورتحساب Play»
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.انتشار «کتابخانه صورتحساب Google Play» نسخه ۹.۱.۰ (۲۰۲۶-۰۶-۱۸)
نسخه ۹.۱.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
- میاناهای برنامهسازی کاربردی جدید برای انتخاب صورتحساب:
BillingClient.getBillingChoiceInfoAsync()برای بازیابی اطلاعات درباره انتخابهای صورتحساب دردسترس کاربر اضافه شد.- کلاس
BillingChoiceInfoاضافه شد که حاوی جزئیات پاسخ، ازجمله نشانیهای وب تصویر و اطلاعات وفاداری است. -
GetBillingChoiceInfoParamsبرای پیکربندی درخواست اضافه شد. -
BillingChoiceInfoResponseListenerبرای دریافت تماس برگشتی اضافه شد. - تابع تعلیق افزونه Kotlin
BillingClient.getBillingChoiceInfo()اضافه شد. BillingClient.showBillingProgramInformationDialog()به نمایش کادر گفتگوی اطلاعات برای برنامه صورتحساب اضافه شد.BillingProgramInformationDialogParamsبرای پیکربندی کادر گفتگو اضافه شد.-
BillingProgramInformationDialogListenerبرای دریافت تماس برگشتی اضافه شد. BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsبرای ارائه جزئیات درباره دردسترس بودن انتخاب صورتحساب اضافه شد.ChoiceScreenTypeاضافه شد تا نوع صفحه انتخاب مشخص شود.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۹.۰.۰ (۲۰۲۶-۰۵-۱۹)
نسخه ۹.۰.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است. اگر میخواهید از نسخههای قبلی «کتابخانه خدمات صورتحساب Play» انتقال دهید، راهنمای انتقال PBL 9 را ببینید.
خلاصه تغییرات
کدهای خطای بهروزشده برای فعالیت مسدودشده «فروشگاه Play»: کدهای خطا برای برنامههای مسدودشده «فروشگاه Play» بهروز شده است. برای مواردی که برنامه «فروشگاه Play» توسط سیستم مسدود شده است (برای مثال، در حالت کودک سفارشیسازیشده توسط سازنده تجهیزات اصلی)، کد پاسخ از
ERRORبهBILLING_UNAVAILABLEتغییر کرده است. علاوهبراین،BillingResultبرای چنین مواردی اکنون پیام اشکالزدایی فروشگاه Play مسدود است ارائه میدهد.بهروزرسانی قابلیت تهی بودن برای صورتحساب ارائهشده توسط توسعهدهنده: روش
DeveloperProvidedBillingDetails.getLinkUri()بهروزرسانی شده است تا@Nullableباشد. این تغییر از سناریوهایی پشتیبانی میکند که در آنها نشانی وب پیوند مستقیم برای پرداختهای خارجی در مرحله انتخاب پرداخت دردسترس نیست.برای مدیریت ایمن این تغییر، مطمئن شوید کد یکپارچهسازی شما مقادیر
nullو رشته خالی ("") را از روشDeveloperProvidedBillingDetails.getLinkUri()قبلاز تجزیه یا راهاندازی هدفهای مرورگر مدیریت میکند.
targetSdkVersionبه ۳۵ بهروز شد.اکنون میتوانید از پیامرسانی درونبرنامهای برای اطلاعرسانی به کاربران درباره افزایش قیمت با الزام به توافق با کاربر استفاده کنید. این کار به کاربران امکان میدهد افزایش قیمت را بدون خروج از برنامه تأیید کنند. پیام افزایش قیمت با امکان موافقت کاربر از اولین روزی که کاربر میتواند افزایش قیمت را بپذیرد نشان داده میشود و حداکثر هر ۷ روز یکبار نشان داده میشود.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۸.۳.۰ (۲۰۲۵/۱۲/۲۳)
نسخه ۸.۳.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
میاناهای برنامهسازی کاربردی جدید برای پرداختهای خارجی:
- کلاسهایی برای پشتیبانی از جریان پرداختهای خارجی اضافه شد:
-
enableBillingProgram(EnableBillingProgramParams)برای فعال کردن پرداختهای خارجی اضافه شد. BillingFlowParams.Builder.enableDeveloperBillingOptionبرای راهاندازی جریان پرداختهای خارجی اضافه شد.
دستهبندی بهبودیافته خطا برای افتهای جریان پرداخت خارجی:
- اگر کاربری برای تکمیل پرداخت در برنامه خارجی (مثل کیف پول الکترونیکی) از جریان خرید خارج شود و بدون بازگشت تراکنش را رها کند، کد پاسخی که به مشتری برگردانده میشود اکنون
BillingResponseCode.USER_CANCELED(۱) با پیام اشکالزداییBILLING_ACTIVITY_PAUSED(که قبلاً بهطور پیشفرضBillingResponseCode.ERROR(۶) بود) است.
- اگر کاربری برای تکمیل پرداخت در برنامه خارجی (مثل کیف پول الکترونیکی) از جریان خرید خارج شود و بدون بازگشت تراکنش را رها کند، کد پاسخی که به مشتری برگردانده میشود اکنون
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۸.۲.۱ (۲۰۲۵/۱۲/۱۵)
نسخه ۸.۲.۱ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
رفع اشکالها
- اشکالی را در
isBillingProgramAvailableAsyncوcreateBillingProgramReportingDetailsAsyncبرطرف کردیم. برای استفاده از این «میاناهای برنامه کاربردی» که در نسخه ۸.۲.۰ معرفی شدهاند، به نسخه ۸.۲.۱ بهروز کنید.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۸.۲.۰ (۲۰۲۵/۱۲/۰۹)
نسخه ۸.۲.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
میاناهای برنامهسازی کاربردی جدید برای پیوندهای محتوای خارجی و پیشنهادهای ویژه خارجی:
enableBillingProgramبرای راهاندازیBillingClientبرای این برنامهها اضافه شد.isBillingProgramAvailableAsyncبرای تعیین واجدشرایط بودن کاربر اضافه شد.createBillingProgramReportingDetailsAsyncاضافه شد تا رمز تراکنش خارجی ایجاد شود که باید برای گزارش کردن استفاده شود.launchExternalLinkاضافه شد تا پیوند خارجی به پیشنهاد محتوای دیجیتال یا بارگیری برنامه راهاندازی شود.
تغییرات در برنامه پیشنهادهای خارجی:
- تغییراتی در خطمشی برنامه پیشنهادهای خارجی وجود دارد. برای جزئیات، تغییرات برنامه را ببینید. برای آشنایی با نحوه راهاندازی جریانهای پیشنهاد خارجی با میاناهای برنامهسازی کاربردی جدید، راهنمای یکپارچهسازی را ببینید.
- میانای برنامهسازی کاربردی
BillingClient.Builder.enableExternalOfferرا منسوخ کرد. - میانای برنامهسازی کاربردی
isExternalOfferAvailableAsyncرا منسوخ کرد. - میانای برنامهسازی کاربردی
createExternalOfferReportingDetailsAsyncرا منسوخ کرد. - میانای برنامهسازی کاربردی
showExternalOfferInformationDialogرا منسوخ کرد.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۸.۱.۰ (۲۰۲۵/۱۱/۰۶)
نسخه ۸.۱.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
اشتراکهای تعلیقشده
پارامتر جدیدی به روش
BillingClient.queryPurchasesAsync()اضافه شده است تا اشتراکهای تعلیقشده را هنگام پُرسمان برای اشتراکها بگنجاند. اشتراکهای تعلیقشده همچنان به کاربر نسبت داده میشوند، اما فعال نیستند، یا به این دلیل که کاربر اشتراک را موقتاً متوقف کرده است یا روش پرداخت تمدید او رد شده است.شیء
Purchaseبرگشتی در شنونده،isSuspended() = trueبرای هر اشتراک تعلیقشده برمیگردد. در این مورد، نباید دسترسی به اشتراک خریداریشده را اعطا کنید و درعوض کاربر را به مرکز اشتراکها هدایت کنید تا کاربر بتواند روشهای پرداخت خود را مدیریت کند یا وضعیت توقف موقت را برای فعالسازی مجدد اشتراک خود تغییر دهد.بهروزرسانیهای اشتراکها:
شیء
BillingFlowParams.ProductDetailsParamsاکنون روشsetSubscriptionProductReplacementParams()را دارد که در آن میتوانید اطلاعات جایگزینی سطح محصول را مشخص کنید.شیء
SubscriptionProductReplacementParamsدو روش تنظیمکننده دارد:setOldProductId: محصول قدیمی که باید با محصول درProductDetailsکنونی جایگزین شود.-
setReplacementMode: این حالت جایگزینی سطح مورد است. این حالتها اساساً همان SubscriptionUpdateParams هستند، اما نگاشت مقدار بهروز شده است. حالت جایگزینی جدیدیKEEP_EXISTINGمعرفی شده است که به شما امکان میدهد برنامه پرداخت موجود را برای یک مورد بدون تغییر حفظ کنید.
SubscriptionUpdateParams setSubscriptionReplacementMode منسوخ خواهد شد. درعوض باید از
SubscriptionProductReplacementParams.setReplacementModeاستفاده کنید.
minSdkVersionبه ۲۳ بهروز شد.میاناهای برنامهسازی کاربردی پیشسفارش برای محصولات یکباره فعال شد
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API که جزئیات پیشسفارش را دریافت میکند اکنون برای استفاده دردسترس است.«کتابخانه خدمات صورتحساب Google Play» اکنون از Kotlin نسخه ۲.۲.۰ پشتیبانی میکند.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۸.۰.۰ (۲۰۲۵/۰۶/۳۰)
نسخه ۸.۰.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
از این پس به اقلام درونبرنامه، محصولات یکباره گفته میشود.
چندین گزینه خرید و پیشنهاد ویژه برای محصولات یکباره.
اکنون میتوانید برای محصولات یکباره خود چندین گزینه خرید و پیشنهاد ویژه داشته باشید. این کار انعطافپذیری بیشتری در نحوه فروش محصولات به شما ارائه میدهد و پیچیدگی مدیریت آنها را کاهش میدهد.
روش
queryProductDetailsAsync()بهبود یافت.قبلاز PBL نسخه ۸.۰.۰، روش
queryProductDetailsAsync()محصولاتی را که نمیتوانستند واکشی شوند برنمیگرداند. این امر ممکن است بهدلایلی مانند پیدا نشدن محصول یا دردسترس نبودن پیشنهاد ویژه برای کاربر باشد. با PBL 8.0.0، محصولات واکشینشده با کد وضعیت سطح محصول جدیدی برگردانده میشوند که اطلاعاتی درباره محصولات واکشینشده ارائه میدهد. توجه داشته باشید که در امضایProductDetailsResponseListener.onProductDetailsResponse()تغییراتی ایجاد شده است که برنامه شما باید تغییر کند. برای اطلاعات بیشتر، پردازش نتیجه را ببینید.اتصال مجدد خودکار سرویس.
پارامتر جدید سازنده
BillingClient.Builder.enableAutoServiceReconnection()به توسعهدهندگان امکان میدهد با اتصال مجدد خودکار سرویس موافقت کنند، که با مدیریت اتصال مجدد به «سرویس خدمات صورتحساب Play» بهطور خودکار و حذف نیاز به فراخوانی دستیstartConnection()درصورت قطع اتصال سرویس، مدیریت اتصال را سادهتر میکند. برای اطلاعات بیشتر، برقراری مجدد خودکار اتصال را ببینید.کدهای پاسخ فرعی برای روش
launchBillingFlow().BillingResult برگشتی از
launchBillingFlow()اکنون شامل فیلد کد پاسخ فرعی خواهد بود. این فیلد فقط در برخیاز موارد پر میشود تا دلیل دقیقتری برای عدم موفقیت ارائه دهد. فیلد پاسخ فرعی میتواند مقادیر زیر را داشته باشد:PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- زمانی برگردانده میشود که وجوه کاربر کمتر از قیمت محصولی باشد که قصد خرید آن را دارد.USER_INELIGIBLE- زمانی برگردانده میشود که کاربر شرایط الزامات پیکربندیشده برای پیشنهاد ویژه اشتراک را نداشته باشد.NO_APPLICABLE_SUB_RESPONSE_CODE- مقدار پیشفرض، زمانی برگردانده میشود که هیچ کد پاسخ فرعی دیگری قابل اعمال نباشد.
روش
queryPurchaseHistory()برداشته شد.روش
queryPurchaseHistory()که قبلاً بهعنوان منسوخ علامتگذاری شده بود اکنون برداشته شده است. برای جزئیات مربوط به اینکه بهجای آن از چه میاناهای برنامهسازی کاربردی جایگزینی استفاده کنید، سابقه خرید پُرسمان را ببینید.روش
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» نسخه ۷.۱.۱ (۲۰۲۴-۱۰-۰۳)
نسخه ۷.۱.۱ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
رفع اشکالها
- اشکالی در «کتابخانه خدمات صورتحساب Play» نسخه ۷.۱.۰ مربوط به آزمایش
BillingResultکدهای پاسخ رفع شد.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۷.۱.۰ (۲۰۲۴/۰۹/۱۹)
نسخه ۷.۱.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
- بهبود ایمنی رشته مربوط به وضعیت اتصال و مدیریت.
- تغییرات جزئی برای آزمایش
BillingResultکدهای پاسخ که در «کتابخانه خدمات صورتحساب Play» نسخه ۷.۱.۱ بهطور کامل منتشر شده است معرفی شد. برای آزمایش یکپارچگیتان بااستفاده از این ویژگی، باید به «کتابخانه خدمات صورتحساب Play» نسخه ۷.۱.۱ ارتقا دهید. اشکالی وجود دارد که فقط بر برنامههایی که آزمایش لغو صورتحساب در آنها فعال است تأثیر میگذارد و بر استفاده معمولی تأثیری ندارد. برای اطلاعات بیشتر، به آزمایشBillingResultکدهای پاسخ مراجعه کنید.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۷.۰.۰ (۲۰۲۴/۰۵/۱۴)
نسخه ۷.۰.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
میاناهای برنامهسازی کاربردی برای پشتیبانی از اشتراکهای قسطی اضافه شد.
ProductDetails.InstallmentPlanDetailsبرای طرحهای پایه قسطی که کاربران واجدشرایط خرید آن هستند اضافه شد. این API به برنامه شما کمک میکند طرح قسطی و تنظیم تعهد آن را شناسایی کند تا بتواند اطلاعات مربوطه را به کاربر ارائه دهد. برای کسب اطلاعات بیشتر، راهنمای پرداخت قسطی اشتراک را ببینید.
PendingPurchasesParamsوBillingClient.Builder.enablePendingPurchases(PendingPurchaseParams)برای جایگزینیBillingClient.Builder.enablePendingPurchases()که در این نسخه پخش منسوخ شده است اضافه شد.-
enablePendingPurchases()منسوخشده ازنظر عملکردی معادلenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build())است.
-
«میاناهای برنامهسازی کاربردی» برای پشتیبانی از تراکنشهای معلقه برای طرحهای پیشپرداخت اشتراک اضافه شد:
- از
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#setOldSkuPurchaseToken().- توسعهدهندگان باید درعوض از
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String)استفاده کنند.
- توسعهدهندگان باید درعوض از
BillingClient.queryPurchaseHistoryAsync()منسوخ شده است و در نسخهٔ پخش آتی برداشته خواهد شد. توسعهدهندگان باید از جایگزینهای زیر استفاده کنند:- خریدهای تأییدشده و معلقه: از
BillingClient.queryPurchasesAsync()برای واکشی خریدهای فعال استفاده کنید. - خریدهای مصرفشده: توسعهدهندگان باید خریدهای مصرفشده را در سرورهای خودشان پیگیری کنند.
- خریدهای لغوشده: از voided-purchases میانای برنامهسازی کاربردی توسعهدهنده استفاده کنید.
- برای جزئیات بیشتر، سابقه خرید پُرسمان را ببینید
- خریدهای تأییدشده و معلقه: از
BillingFlowParams.ProductDetailsParams.setOfferToken()اکنون وقتی توسعهدهندگانofferTokenخالی را مشخص میکنند استثنا قائل میشود.
minSdkVersionبه ۲۱ وtargetSdkVersionبه ۳۴ بهروز شد.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۶.۲.۱ (۲۰۲۴-۰۴-۱۶)
نسخه ۶.۲.۱ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
- اشکالی در
BillingClient.showAlternativeBillingOnlyInformationDialog()برطرف شد که در آنAlternativeBillingOnlyInformationDialogListenerممکن بود در موارد خاصی هنگام تکمیل شدن چارگوش گفتگو فراخوانی نشود.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۶.۲.۰ (۲۰۲۴/۰۳/۰۶)
نسخه ۶.۲.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
- میاناهای برنامهسازی کاربردی برای پشتیبانی از پیشنهادهای خارجی اضافه شد
- افزوده شد
BillingClient.Builder.enableExternalOffer()برای فعال کردن امکان ارائه پیشنهادهای ویژه خارجی. - افزوده شد
BillingClient.isExternalOfferAvailableAsync()برای بررسی دردسترس بودن عملکرد ارائه پیشنهادهای ویژه خارجی. - برای نمایش کادر گفتگوی اطلاعات به کاربران قبلاز هدایت کاربران به خارج از
برنامه اضافه شد
BillingClient.showExternalOfferInformationDialog(). - افزود
BillingClient.createExternalOfferReportingDetailsAsync()برای ایجاد محتوای موردنیاز برای گزارش تراکنشهای انجامشده ازطریق پیشنهادهای ویژه خارجی.
- افزوده شد
انتشار «کتابخانه صورتحساب Google Play» نسخه ۶.۱.۰ (۲۰۲۳/۱۱/۱۴)
نسخه ۶.۱.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
- میاناهای برنامهسازی کاربردی برای پشتیبانی از صورتحساب جایگزین فقط (یعنی بدون انتخاب کاربر) اضافه شد
- افزود
BillingClient.Builder.enableAlternativeBillingOnly()برای فعال کردن عملکردی قابلیت ارائه فقط صورتحساب جایگزین. - افزودهشده است
BillingClient.isAlternativeBillingOnlyAvailableAsync()برای بررسی دردسترس بودن ارائه فقط صورتحساب جایگزین. BillingClient.showAlternativeBillingOnlyInformationDialog()اضافه شد تا کادر گفتگوی اطلاعاتی نمایش داده شود و به کاربران اطلاع دهد که فقط از صورتحساب جایگزین استفاده میشود.- افزودهشده است
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()برای ایجاد محتوای موردنیاز برای گزارش تراکنشهای انجامشده فقط ازطریق سیستم صورتحساب جایگزین.
- افزود
- میاناهای برنامهسازی کاربردی صورتحساب بهانتخاب کاربر را بهروزرسانی کردیم
UserChoiceBillingListenerبرای جایگزینی AlternativeBillingListener که بهعنوان منسوخ علامتگذاری شده است اضافه شد.-
UserChoiceDetailsبرای جایگزینیAlternativeChoiceDetailsکه بهعنوان منسوخ علامتگذاری شده است اضافه شد. - برای جایگزینی
BillingClient.Builder.enableAlternativeBilling()که بهعنوان منسوخ علامتگذاری شده استBillingClient.Builder.enableUserChoiceBilling()اضافه شد.
- برای بازیابی کشور Google Play
BillingClient.getBillingConfigAsync()اضافه شد.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۶.۰.۱ (۲۰۲۳/۰۶/۲۲)
نسخه ۶.۰.۱ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
«کتابخانه خدمات صورتحساب Play» را بهروز کنید تا با Android 14 سازگار باشد.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۶.۰ (۲۰۲۳/۰۵/۱۰)
نسخه ۶.۰.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
enum جدید
ReplacementModeبرای جایگزینیProrationModeاضافه شد.توجه داشته باشید که
ProrationModeهمچنان برای سازگاری با نسخههای قدیمی دردسترس است.شناسه سفارش برای
PENDINGخرید برداشته شد.قبلاً، شناسه سفارش همیشه ایجاد میشد حتی اگر خرید در حالت معلقه بود. از نسخه ۶.۰.۰، شناسه سفارش برای خریدهای معلقه ایجاد نخواهد شد و برای این خریدها، شناسه سفارش پساز انتقال خرید به وضعیت
PURCHASEDتکمیل خواهد شد.
queryPurchasesوlaunchPriceConfirmationFlowروش برداشته شد.روشهای
queryPurchasesوlaunchPriceConfirmationFlowکه قبلاً بهعنوان منسوخ علامتگذاری شده بودند اکنون در «کتابخانه خدمات پرداخت Play» نسخه ۶.۰.۰ برداشته شدهاند. توسعهدهندگان باید بهجایqueryPurchasesازqueryPurchasesAsyncاستفاده کنند. برایlaunchPriceConfirmationFlowجایگزین، به تغییرات قیمت مراجعه کنید.کد پاسخ خطای شبکه جدید اضافه شد.
کد پاسخ خطای شبکه جدیدی،
NETWORK_ERROR، از نسخه ۶.۰.۰ «کتابخانه خدمات صورتحساب Play» اضافه شده است. این کد زمانی برگردانده میشود که خطایی بهدلیل مشکل اتصال شبکه رخ دهد. این خطاهای اتصال شبکه قبلاً بهعنوانSERVICE_UNAVAILABLEگزارش شده است.بهروزرسانیشده در
SERVICE_UNAVAILABLEوSERVICE_TIMEOUT.از نسخه ۶.۰.۰ «کتابخانه تبلیغات پلاتفرم» (PBL) شروع میشود، خطاهای ناشی از اتمام زمان پردازش بهصورت
SERVICE_UNAVAILABLEبهجایSERVICE_TIMEOUTفعلی برگردانده میشود.این رفتار در نسخههای قبلی «کتابخانه خدمات صورتحساب Play» تغییر نمیکند.
برداشته شد
SERVICE_TIMEOUT.از نسخه ۶.۰.۰ «کتابخانه خدمات صورتحساب Play»،
SERVICE_TIMEOUTدیگر برگردانده نخواهد شد. نسخههای قبلی «کتابخانه خدمات صورتحساب Play» همچنان این کد را برمیگردانند.گزارشگیری اضافی اضافه شد.
نسخه ۶ «کتابخانه خدمات صورتحساب Play» شامل گزارشگیری اضافی است که اطلاعات آماری درباره استفاده از API (مثل موفقیت و شکست) و مشکلات اتصال سرویس ارائه میدهد. از این اطلاعات برای بهبود عملکرد «کتابخانه خدمات صورتحساب Play» و ارائه پشتیبانی بهتر برای خطاها استفاده خواهد شد.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۵.۲.۱ (۲۰۲۳-۰۶-۲۲)
نسخه ۵.۲.۱ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
«کتابخانه خدمات صورتحساب Play» را بهروز کنید تا با Android 14 سازگار باشد.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۵.۲ (۲۰۲۳/۰۴/۰۶)
نسخه ۵.۲.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
- کلاسهایی برای پشتیبانی از جریانهای صورتحساب جایگزین در تلفن همراه/رایانه لوحی برای کاربران ساکن کره جنوبی اضافه شد:
- روش
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()برای مشخص کردن شناسه تراکنش خارجی اشتراک مبدأ اضافه شد. - روش
BillingClient.Builder.enableAlternativeBilling()برای اینکه کاربران در کره جنوبی بتوانند گزینه صورتحساب جایگزین را انتخاب کنند اضافه شد.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۵.۱ (۲۰۲۲-۱۰-۳۱)
نسخه ۵.۱.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- روش
ProductDetails.SubscriptionOfferDetails.getOfferId()برای بازیابی شناسه پیشنهاد ویژه اضافه شد. - روش
ProductDetails.SubscriptionOfferDetails.getBasePlanId()برای بازیابی شناسه طرح پایه اضافه شد. -
targetSdkVersionبه ۳۱ بهروز شد.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۵.۰ (۲۰۲۲/۰۵/۱۱)
نسخه ۵.۰.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- مدل جدیدی برای اشتراکها معرفی شده است، ازجمله نهادهای جدیدی که به شما امکان میدهد برای یک محصول اشتراک واحد، پیشنهادهای ویژه متعددی ایجاد کنید. برای اطلاعات بیشتر، راهنمای انتقال را ببینید.
-
BillingClient.queryProductDetailsAsync()برای جایگزین کردنBillingClient.querySkuDetailsAsync()اضافه شد. -
setIsOfferPersonalized()روش برای الزامات شفافسازی قیمتگذاری شخصیسازیشده اتحادیه اروپا اضافه شد. برای کسب اطلاعات بیشتر درباره نحوه استفاده از این روش، به نشان دادن قیمت شخصیسازیشده مراجعه کنید. -
queryPurchases()برداشته شد، که قبلاً منسوخ شده بود و با queryPurchasesAsync که در «کتابخانه خدمات صورتحساب Google Play» نسخه ۴.۰.۰ معرفی شده بود جایگزین شده بود. -
launchPriceChangeFlowمنسوخ شده است و در نسخهٔ پخش آتی برداشته خواهد شد. برای کسب اطلاعات بیشتر درباره جایگزینها، راهاندازی جریان تأیید تغییر قیمت را ببینید. - برداشته شد
setVrPurchaseFlow()، که قبلاً هنگام نمونهسازی جریان خرید استفاده میشد. در نسخههای قبلی، این روش کاربر را برای تکمیل خرید به دستگاه Android هدایت میکرد. پساز برداشتن این روش، کاربران خرید را ازطریق جریان خرید استاندارد تکمیل خواهند کرد.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۴.۱ (۲۰۲۲/۰۲/۲۳)
نسخه ۴.۱.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- افزوده شد
BillingClient.showInAppMessages()برای کمک به مدیریت پرداختهای اشتراک ردشده. برای کسب اطلاعات بیشتر درباره نحوه استفاده از پیامرسانی درونبرنامهای برای مدیریت پرداختهای ردشده اشتراکها، به مدیریت پرداختهای ردشده مراجعه کنید.
انتشار «کتابخانه صورتحساب Google Play» نسخه ۴.۰ (۲۰۲۱-۰۵-۱۸)
نسخه ۴.۰.۰ «کتابخانه خدمات صورتحساب Google Play» و افزونههای Kotlin اکنون دردسترس است.
خلاصه تغییرات
برای جایگزینی
BillingClient.queryPurchases()که در نسخهٔ پخش بعدی برداشته خواهد شدBillingClient.queryPurchasesAsync()اضافه شد.حالت جایگزینی اشتراک جدید
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» نسخه ۳.۰.۳ (۲۰۲۱-۰۳-۱۲)
نسخه ۳.۰.۳ «کتابخانه خدمات صورتحساب Google Play»، افزونه Kotlin، و افزایه Unity اکنون دردسترس است.
رفع اشکالات Java و Kotlin
- رفع کردن نشت حافظه هنگام
endConnection()فراخوانی. - رفع مشکل زمانی که «کتابخانه خدمات صورتحساب Google Play» توسط برنامههایی استفاده میشود که از
حالت راهاندازی تکوظیفهای استفاده میکنند. وقتی برنامه از راهانداز Android ازسر گرفته شود و کادر گفتگوی صورتحساب قبلاز تعلیق شدن نمایان بوده باشد،
onPurchasesUpdated()بازخوانی راهاندازی خواهد شد.
رفع اشکالهای Unity
- برای رفع مشکل نشت حافظه و حل مشکل جلوگیری از خرید وقتی برنامه از راهانداز Android ازسر گرفته میشود و کادر گفتگوی صورتحساب قبلاز تعلیق قابل مشاهده بوده است، به نسخه ۳.۰.۳ Java بهروزرسانی کنید.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۳.۰.۲ (۲۰۲۰/۱۱/۲۴)
نسخه ۳.۰.۲ «کتابخانه خدمات صورتحساب Google Play» و افزونه Kotlin اکنون دردسترس است.
رفع اشکالها
- اشکالی در افزونه Kotlin برطرف شد که در آن، روال فرعی با خطای «قبلاً ازسر گرفته شده است» ناموفق میشد.
- وقتی افزونه Kotlin با کتابخانه kotlinx.coroutines نسخه ۱.۴+ استفاده میشود، ارجاعهای حلنشده برطرف شد.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۳.۰.۱ (۲۰۲۰/۰۹/۳۰)
نسخه ۳.۰.۱ «کتابخانه خدمات صورتحساب Google Play» و افزونه Kotlin اکنون دردسترس است.
رفع اشکالها
- رفع اشکالی که در آن اگر برنامه درطول جریان صورتحساب بسته و بازیابی میشد،
PurchasesUpdatedListenerممکن بود با نتیجه خرید فراخوانی نشود.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۳.۰ (۲۰۲۰/۰۶/۰۸)
نسخه ۳.۰.۰ «کتابخانه خدمات صورتحساب Google Play»، افزونه Kotlin، و افزایه Unity اکنون دردسترس است.
خلاصه تغییرات
- پشتیبانی از SKU پاداشدار برداشته شد.
- پارامترهای
ChildDirectedوUnderAgeOfConsentرا برداشت. - روشهای منسوخ بار توسعهدهنده برداشته شد.
- روشهای منسوخشده
BillingFlowParams.setAccountId()وBillingFlowParams.setDeveloperId()برداشته شد. - روشهای منسوخشده
BillingFlowParams.setOldSkus(String oldSku)وBillingFlowParams.addOldSku(String oldSku)برداشته شد. - گزارمانهای قابلیت تهی بودن اضافه شد.
رفع اشکالها
SkuDetails.getIntroductoryPriceCycles()اکنون بهجایString،intبرمیگرداند.- اشکالی برطرف شد که در آن جریان صورتحساب بهعنوان دارای پارامترهای اضافی درنظر گرفته میشد حتی اگر هیچ پارامتر اضافیای تنظیم نشده بود.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۲.۲.۱ (۲۰۲۰-۰۵-۲۰)
نسخه ۲.۲.۱ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است.
رفع اشکالها
- نسخه پیشفرض کتابخانه خدمات صورتحساب Java Play را که افزونه Kotlin به آن وابسته است بهروزرسانی کردیم.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۲.۲.۰ و پشتیبانی از Unity (۲۰۲۰/۰۳/۲۳)
نسخه ۲.۲.۰ «خدمات صورتحساب Google Play» عملکردی ارائه میدهد که به توسعهدهندگان کمک میکند مطمئن شوند خریدها به کاربر صحیح نسبت داده میشوند. این تغییرات نیاز به ساختن راهحلهای سفارشی براساس دادهبار توسعهدهنده را برطرف میکند. بهعنوان بخشی از این بهروزرسانی، عملکرد دادهبار توسعهدهنده منسوخ شده است و در نسخه پخش آتی برداشته خواهد شد. برای اطلاعات بیشتر، ازجمله جایگزینهای توصیهشده، بخش اطلاعات توسعهدهنده را ببینید.
«کتابخانه خدمات صورتحساب Google Play» نسخه ۲ برای Unity
علاوهبر نسخههای فعلی Java و Kotlin از «کتابخانه خدمات صورتحساب Google Play» نسخه ۲، نسخهای از این کتابخانه را برای استفاده با Unity منتشر کردیم. توسعهدهندگان بازی که از API خرید درونبرنامه Unity استفاده میکنند میتوانند اکنون ارتقا دهند تا از همه ویژگیهای «کتابخانه خدمات صورتحساب Google Play 2» بهرهمند شوند و ارتقاهای بعدی به نسخههای آینده «کتابخانه خدمات صورتحساب Google Play» را آسانتر کنند.
برای کسب اطلاعات بیشتر، استفاده از «خدمات صورتحساب Google Play» با Unity را ببینید.
خلاصه تغییرات
- کتابخانه خدمات صورتحساب Google Play جاوا
- در
AcknowledgePurchaseParams، منسوخشدهsetDeveloperPayload()وgetDeveloperPayload()روشها. - در
ConsumeParams، منسوخشدهsetDeveloperPayload()وgetDeveloperPayload()روشها. - در
BillingFlowParams، بهsetAccountId()تغییر نام داد و محدودیت طول ۶۴ نویسه و محدودیت عدم مجاز بودن «اطلاعات شناساننده شخصی» (PII) در این فیلد را مستند کرد.setObfuscatedAccountId()setAccountId()بهعنوان منسوخ علامتگذاری شده است و در نسخه آتی کتابخانه برداشته خواهد شد. - در
BillingFlowParams،setObfuscatedProfileId()اضافه شد که عملکردی مشابهsetObfuscatedAccountId()دارد. برای اطلاعات بیشتر، بهروزرسانیهای دادهبر توسعهدهنده و جایگزینها را ببینید. - در
Purchase، روشgetAccountIdentifiers()برای برگرداندن شناسههای حساب مبهمسازیشده تنظیمشده درBillingFlowParamsاضافه شد. - در
BillingClient، روشloadRewardedSku()بهعنوان بخشی از منسوخ کردن واحدهای نگهداری کالای پاداشدار منسوخ علامتگذاری شده است.
- در
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۲.۱.۰ و انتشار «افزونه Kotlin» نسخه ۲.۱.۰ (۲۰۱۹-۱۲-۱۰)
نسخه ۲.۱.۰ کتابخانه «خدمات صورتحساب Google Play» و افزونه جدید Kotlin اکنون دردسترس است. افزونه Kotlin «کتابخانه خدمات صورتحساب Play» جایگزینهای اصطلاحی API برای مصرف Kotlin ارائه میدهد که ایمنی بهتر دربرابر تهی بودن و روالهای همزمان را ارائه میدهد. برای نمونههای کد، به استفاده از کتابخانه خدمات صورتحساب Google Play مراجعه کنید.
این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- در
BillingFlowParams،setOldSku(String oldSku)منسوخ شده است و باsetOldSku(String oldSku, String purchaseToken)جایگزین شده است تا در مواقعی که چندین حساب در دستگاه مالک یک sku یکسان هستند، ابهامزدایی شود.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۲.۰.۳ (۲۰۱۹-۰۸-۰۵)
نسخه ۲.۰.۳ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است.
رفع اشکالها
- اشکالی برطرف شد که در آن
querySkuDetailsAsync()گاهیاوقات با کدDEVELOPER_ERRORبهجای برگرداندن نتیجه موفقیتآمیز ناموفق میشد.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۲.۰.۲ (۲۰۱۹-۰۷-۰۸)
نسخه ۲.۰.۲ کتابخانه «خدمات صورتحساب Google Play» اکنون دردسترس است. این نسخه شامل بهروزرسانیهایی در اسناد مرجع است و عملکرد کتابخانه را تغییر نمیدهد.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۲.۰.۱ (۲۰۱۹-۰۶-۰۶)
نسخه ۲.۰.۱ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است. این نسخه شامل تغییرات زیر است.
رفع اشکالها
- اشکالی برطرف شد که در آن پیامهای اشکالزدایی در برخیاز موارد بهصورت
nullبرگردانده میشد. - مشکل احتمالی نشت حافظه برطرف شد.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۲.۰ (۲۰۱۹-۰۵-۰۷)
نسخه ۲.۰ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است. این نسخه شامل تغییرات زیر است.
خریدها باید ظرف سه روز تأیید شوند
Google Play از خرید محصولات از داخل برنامه (درونبرنامه) یا خارج از برنامه (خارج از برنامه) پشتیبانی میکند. برای اینکه Google Play بتواند صرفنظر از اینکه کاربر محصول شما را از کجا خریداری میکند، تجربه خریدی یکسان را تضمین کند، باید همه خریدهای دریافتی ازطریق «کتابخانه خدمات صورتحساب Google Play» را بهمحض اعطای حق استفاده به کاربر تأیید کنید. اگر
خرید را ظرف سه روز تأیید نکنید، مبلغ بهطور خودکار به کاربر
مسترد میشود و Google Play خرید را لغو میکند. برای تراکنشهای معلقه (جدید در نسخه ۲.۰)، بازه سهروزه از زمانی شروع میشود که خرید به وضعیت PURCHASED منتقل شده باشد و در مدتی که خرید در وضعیت PENDING است اعمال نمیشود.
برای اشتراکها، باید هر خریدی را که دارای کد خرید جدید است تأیید کنید. این یعنی همه خریدهای اولیه، تغییرات طرح، و ثبتنامهای مجدد باید تأیید شوند، اما نیازی نیست تمدیدهای بعدی را تأیید کنید. برای تعیین اینکه آیا خرید نیاز به تأیید دارد یا نه، میتوانید فیلد تأیید را در خرید بررسی کنید.
شیء Purchase اکنون شامل
isAcknowledged()
روشی است که نشان میدهد خرید تأیید شده است یا نه. علاوهبراین،
«میانای برنامهسازی کاربردی توسعهدهنده Google Play» شامل مقادیر بولی تأیید برای هر دو
Purchases.products
و
Purchases.subscriptions است.
قبلاز تأیید خرید، حتماً از این روشها برای تعیین اینکه آیا خرید قبلاً تأیید شده است یا خیر استفاده کنید.
میتوانید خرید را بااستفاده از یکی از روشهای زیر تأیید کنید:
- برای محصولات مصرفی، از
consumeAsync()که در API کارخواه یافت میشود استفاده کنید. - برای محصولاتی که مصرف نمیشوند، از
acknowledgePurchase()که در میانای برنامهسازی کاربردی مشتری یافت میشود استفاده کنید. - روش جدید
acknowledge()نیز در «میانای برنامهسازی کاربردی سرور» دردسترس است.
BillingFlowParams.setSku() برداشته شده است
روش BillingFlowParams#setSku() که قبلاً منسوخ شده بود در این نسخه پخش برداشته شده است. اکنون قبلاز پرداز کردن محصولات در جریان خرید، باید
BillingClient.querySkuDetailsAsync() را فراخوانی کنید و
SkuDetails شیء حاصل را به
BillingFlowParams.Builder.setSkuDetails() ارسال کنید.
برای نمونههای کد، به استفاده از کتابخانه خدمات صورتحساب Google Play مراجعه کنید.
از محتوای توسعهدهنده پشتیبانی میشود
نسخه ۲.۰ کتابخانه «خدمات صورتحساب Google Play» از بار توسعهدهنده—رشتههای اختیاری که میتوانند به خریدها پیوست شوند—پشتیبانی میکند. میتوانید پارامتر دادهبار توسعهدهنده را به خرید پیوست کنید، اما فقط زمانی که خرید تأیید یا مصرف شود. این مورد برخلاف دادهبار توسعهدهنده در AIDL است که در آن دادهبار میتواند هنگام راهاندازی جریان خرید مشخص شود. ازآنجاییکه اکنون میتوان خریدها را از خارج از برنامه شما شروع کرد، این تغییر تضمین میکند که همیشه فرصت اضافه کردن بار به خریدها را داشته باشید.
برای دسترسی به محتوای مفید در کتابخانه جدید، اشیای Purchase اکنون شامل
getDeveloperPayload()
روش است.
پیشنهادهای ویژه سازگار
وقتی واحد نگهداری کالای تخفیفخوردهای ارائه میکنید، Google Play اکنون قیمت اصلی واحد نگهداری کالا را برمیگرداند تا بتوانید به کاربران نشان دهید که تخفیف دریافت میکنند.
SkuDetails شامل دو روش جدید برای بازیابی قیمت «واحد نگهداری موجودی» اصلی است:
getOriginalPriceAmountMicros()- قیمت اصلی قالببندینشده واحد نگهداری کالا را قبلاز تخفیف برمیگرداند.
getOriginalPrice()- قیمت اصلی را با قالببندی اضافی واحد پول برمیگرداند.
تراکنشهای معلق
با نسخه ۲.۰ کتابخانه «خدمات صورتحساب Google Play»، باید از خریدهایی که قبلاز اعطای حق مالکیت نیاز به اقدام اضافی دارند پشتیبانی کنید. برای مثال، کاربر ممکن است انتخاب کند که محصول درونبرنامهای شما را در فروشگاه فیزیکی با پول نقد خریداری کند. این یعنی تراکنش خارج از برنامه شما تکمیل میشود. در این سناریو، باید حق استفاده را فقط پساز تکمیل تراکنش توسط کاربر اعطا کنید.
برای فعال کردن خریدهای معلقه،
enablePendingPurchases()
را بهعنوان بخشی از مقداردهی اولیه برنامه خود فراخوانی کنید.
از
Purchase.getPurchaseState()
برای تعیین اینکه وضعیت خرید PURCHASED یا PENDING است استفاده کنید. توجه داشته باشید که
فقط زمانی باید حق مالکیت اعطا کنید که وضعیت PURCHASED باشد. باید با انجام مراحل زیر،
بهروزرسانیهای وضعیت Purchase را بررسی کنید:
- هنگام شروع برنامه،
BillingClient.queryPurchases()را فراخوانی کنید تا فهرست محصولات مصرفنشده مرتبط با کاربر را بازیابی کنید. -
Purchase.getPurchaseState()را روی هر شیءPurchaseبرگشتی فراخوانی کنید. - برای پاسخ دادن به تغییرات در
Purchaseشیء، روشonPurchasesUpdated()را پیادهسازی کنید.
علاوهبراین، Google Play Developer API شامل وضعیت PENDING برای
Purchases.products است.
تراکنشهای معلقه برای اشتراکها پشتیبانی نمیشود.
این نسخه پخش همچنین نوع جدیدی از اعلانهای بیدرنگ توسعهدهنده را معرفی میکند،
OneTimeProductNotification. این نوع اعلان حاوی یک پیام است که مقدار آن یا ONE_TIME_PRODUCT_PURCHASED یا ONE_TIME_PRODUCT_CANCELED است. این نوع اعلان فقط برای خریدهای منسوب به روشهای پرداخت تأخیری، مثل پرداخت نقدی، ارسال میشود.
هنگام تأیید خریدهای معلقه، مطمئن شوید که فقط زمانی تأیید کنید که وضعیت خرید PURCHASED باشد و PENDING نباشد.
تغییرات میانای برنامهسازی کاربردی
نسخه ۲.۰ کتابخانه «خدمات صورتحساب Google Play» شامل چندین تغییر در «میانای برنامهسازی کاربردی» برای پشتیبانی از ویژگیهای جدید و شفافسازی عملکرد موجود است.
consumeAsync
consumeAsync()
اکنون بهجای purchaseToken
شیء ConsumeParams
میگیرد. ConsumeParams حاوی purchaseToken و همچنین
بخش اختیاری توسعهدهنده است.
نسخه قبلی consumeAsync() در این نسخهٔ پخش برداشته شده است.
queryPurchaseHistoryAsync
برای به حداقل رساندن سردرگمی،
queryPurchaseHistoryAsync()
اکنون بهجای شیء Purchase،
PurchaseHistoryRecord
شیء برمیگرداند. شیء PurchaseHistoryRecord همانند شیء Purchase است، با این تفاوت که فقط مقادیر برگشتی از queryPurchaseHistoryAsync() را منعکس میکند و شامل فیلدهای autoRenewing،
orderId، و packageName نمیشود. توجه داشته باشید که هیچچیز درباره دادههای برگشتی تغییر نکرده است—queryPurchaseHistoryAsync() همان دادههای قبلی را برمیگرداند.
مقادیر برگشتی BillingResult
میاناهای برنامهسازی کاربردی که قبلاً مقدار عدد صحیح BillingResponse را برمیگرداندند اکنون
BillingResult
شیء را برمیگردانند. BillingResult حاوی عدد صحیح BillingResponse و همچنین رشته اشکالزدایی است که میتوانید از آن برای تشخیص خطاها استفاده کنید. رشته اشکالزدایی از
منطقه en-US استفاده میکند و برای نمایش به کاربران نهایی درنظر گرفته نشده است.
رفع اشکالها
SkuDetails.getIntroductoryPriceAmountMicros()اکنون بهجایString،longبرمیگرداند.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۱.۲.۲ (۲۰۱۹-۰۳-۰۷)
نسخه ۱.۲.۲ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است. این نسخه شامل تغییرات زیر است.
رفع اشکالها
- مشکل رشته پیام که در نسخه ۱.۲.۱ معرفی شده بود برطرف شد. تماسهای پسزمینهای دیگر رشته اصلی را مسدود نمیکنند.
تغییرات دیگر
- اگرچه همچنان توصیه میشود از رشته اصلی استفاده کنید، اکنون میتوانید «کتابخانه خدمات صورتحساب Google Play» را از رشته پسزمینهای نمونهسازی کنید.
- نمونهسازی بهطور کامل به رشته پسزمینه منتقل شده است تا احتمال ایجاد خطاهای ANR کاهش یابد.
انتشار «کتابخانه خدمات صورتحساب Play» نسخه ۱.۲.۱ (۲۰۱۹-۰۳-۰۴)
نسخه ۱.۲.۱ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است. این نسخه شامل تغییرات زیر است.
تغییرات عمده
- پشتیبانی از محصولات پاداشدار اضافه شد. برای اطلاعات بیشتر درباره گزینههای درآمدزایی، افزودن ویژگیهای خاص محصول پاداشدار را ببینید.
تغییرات دیگر
- سازندههای عمومی برای
PurchasesResultوSkuDetailsResultاضافه شد تا آزمایش آسانتر شود. -
SkuDetailsشیء میتواند از روش جدیدی استفاده کند،getOriginalJson(). - اکنون همه فراخوانیهای سرویس AIDL توسط رشتههای پسزمینه مدیریت میشود.
رفع اشکالها
- شنوندگان تماس برگشتی Null دیگر به میاناهای برنامهسازی کاربردی عمومی منتقل نمیشوند.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۱.۲ (۲۰۱۸-۱۰-۱۸)
نسخه ۱.۲ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است. این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- «کتابخانه خدمات صورتحساب Google Play» اکنون تحت قرارداد پروانه «کیت توسعه نرمافزار Android» پروانهدار شده است.
- میانای برنامهسازی کاربردی
launchPriceChangeConfirmationFlowاضافه شد که از کاربران میخواهد تغییر معلقه قیمت اشتراک را بررسی کنند. - پشتیبانی از حالت سرشکن جدیدی،
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 استفاده کنید. این حالت اشتراک کاربر را در زمان تمدید بعدی بهروز میکند.
برای کسب اطلاعات بیشتر درباره نحوه تنظیم این حالت سرشکن کردن، به تنظیم حالت سرشکن کردن مراجعه کنید.
روش جدید برای تنظیم جزئیات واحد نگهداری کالا
در کلاس 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(); }
انتشار «کتابخانه خدمات صورتحساب Play» نسخه ۱.۱ (۲۰۱۸-۰۵-۰۷)
نسخه ۱.۱ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است. این نسخه شامل تغییرات زیر است.
خلاصه تغییرات
- پشتیبانی برای مشخص کردن حالت سرشکن در
BillingFlowParamsهنگام ارتقا/تنزل اشتراک موجود اضافه شد. - پرچم بولی
replaceSkusProrationدرBillingFlowParamsدیگر پشتیبانی نمیشود. درعوض ازreplaceSkusProrationModeاستفاده کنید. launchBillingFlow()اکنون برای پاسخهای ناموفق یک برگشت تماس راهاندازی میکند.
تغییرات رفتار
نسخه ۱.۱ کتابخانه «خدمات صورتحساب Google Play» شامل تغییرات زیر در عملکرد است.
توسعهدهندگان میتوانند replaceSkusProrationMode را در کلاس BillingFlowParams تنظیم کنند
ProrationMode جزئیات بیشتری درباره نوع سرشکن کردن هنگام ارتقا یا تنزل اشتراک کاربر ارائه میدهد.
کاتلین
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
جاوا
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build();
Google Play از حالتهای سرشکن کردن زیر پشتیبانی میکند:
IMMEDIATE_WITH_TIME_PRORATION |
جایگزینی بلافاصله اعمال میشود و زمان انقضای جدید بهصورت سرشکن محاسبه و به کاربر اعتبار داده یا از او کسر میشود. این عملکرد پیشفرض کنونی است. |
IMMEDIATE_AND_CHARGE_PRORATED_PRICE |
جایگزینی بلافاصله اعمال میشود و چرخه صورتحساب بدون تغییر باقی میماند. قیمت برای
دوره باقیمانده کسر خواهد شد.
توجه: این گزینه فقط برای ارتقا اشتراک دردسترس است. |
IMMEDIATE_WITHOUT_PRORATION |
جایگزینی بلافاصله اعمال میشود و قیمت جدید در تکرار بعدی از شما کسر خواهد شد. چرخه صورتحساب بدون تغییر باقی میماند. |
replaceSkusProration دیگر در کلاس BillingFlowParams پشتیبانی نمیشود
توسعهدهندگان قبلاً میتوانستند پرچم بولی را برای کسر مبلغ متناسب با مدت زمان باقیمانده از
درخواست ارتقای اشتراک تنظیم کنند. با توجه به اینکه از ProrationMode پشتیبانی میکنیم،
که حاوی دستورالعملهای دقیقتری درباره سرشکن کردن است، دیگر از این پرچم بولی پشتیبانی نمیشود.
launchBillingFlow() اکنون برای پاسخهای ناموفق یک تماس برگشتی راهاندازی میکند
«کتابخانه خدمات صورتحساب» همیشه
PurhcasesUpdatedListener
فراخوان برگشتی را راهاندازی میکند و
BillingResponse
را بهصورت ناهمزمان برمیگرداند. مقدار برگشتی همزمان
BillingResponse
نیز حفظ میشود.
رفع اشکالها
- وقتی سرویس قطع میشود، در روشهای ناهمزمان بهدرستی زود خارج میشود.
Builderاشیا پارامتر دیگر اشیا ساختهشده را تغییر نمیدهد.- مسئله ۶۸۰۸۷۱۴۱:
launchBillingFlow()اکنون برای پاسخهای ناموفق پاسخگویی راهاندازی میکند.
انتشار «کتابخانه خدمات صورتحساب Google Play» نسخه ۱.۰ (۲۰۱۷-۰۹-۱۹، اعلامیه)
نسخه ۱.۰ کتابخانه خدمات صورتحساب Google Play اکنون دردسترس است. این نسخه شامل تغییرات زیر است.
تغییرات مهم
- اجازه صورتحساب جاسازیشده در مانیفست کتابخانه. دیگر لازم نیست اجازه
com.android.vending.BILLINGرا در مانیفست Android اضافه کنید. - سازنده جدیدی به کلاس
BillingClient.Builderاضافه شد. - الگوی سازنده برای کلاس
SkuDetailsParamsمعرفی شد تا در روشهای پُرسمان واحدهای SKU استفاده شود. - چندین روش «میانای برنامهسازی کاربردی» برای یکپارچگی بهروزرسانی شد (نامها و ترتیب آرگومان برگشتی یکسان).
تغییرات رفتار
نسخه ۱.۰ کتابخانه خدمات صورتحساب Google Play شامل تغییرات زیر در رفتار است.
کلاس BillingClient.Builder
BillingClient.Builder
اکنون ازطریق الگوی newBuilder مقداردهی اولیه شده است:
کاتلین
billingClient = BillingClient.newBuilder(context).setListener(this).build()
جاوا
billingClient = BillingClient.newBuilder(context).setListener(this).build();
اکنون روش launchBillingFlow بااستفاده از کلاس BillingFlowParams فراخوانی میشود
برای شروع جریان صورتحساب برای خرید یا اشتراک، روش
launchBillingFlow() یک نمونه
BillingFlowParams
را که با پارامترهای خاص درخواست مقداردهی اولیه شده است دریافت میکند:
کاتلین
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
جاوا
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
روش جدید برای پُرسمان محصولات دردسترس
متغیرهای مستقل برای روشهای
queryPurchaseHistoryAsync() و
querySkuDetailsAsync() در
الگوی «سازنده» پیچیده شده است:
کاتلین
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
برای یکسان بودن در سراسر میانای برنامهسازی کاربردی ما، ازپیچیده شده است:
کاتلین
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
جاوا
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
رفع اشکالها
- کد پاسخی در بسته PURCHASES_UPDATED وجود ندارد
- برطرف کردن مشکلات ProxyBillingActivity و PurchasesUpdatedListener درطول چرخش دستگاه
انتشار «پیشنمای توسعهدهندگان نرمافزار ۱» (۲۰۱۷-۰۶-۱۲، اعلامیه)
پیشنمای توسعهدهندگان نرمافزار راهاندازی شد، هدف این پیشنما ساده کردن فرایند توسعه در زمینه صورتحساب است، این پیشنما به توسعهدهندگان اجازه میدهد تلاشهایشان را روی پیادهسازی منطق ویژه برنامه Android، مثل معماری برنامه و ساختار پیمایش، متمرکز کنند.
این کتابخانه شامل چندین کلاس و ویژگی مناسب برای استفاده شما هنگام ادغام برنامههای Android با «میانای برنامهسازی کاربردی خدمات صورتحساب Google Play» است. این کتابخانه همچنین لایه انتزاعیای در بالای سرویس «زبان تعریف رابط Android» (AIDL) ارائه میدهد که تعریف رابط بین برنامه و «میانای برنامه کاربردی خدمات صورتحساب Google Play» را برای توسعهدهندگان آسانتر میکند.