במסמך הזה מפורטים נתוני הגרסה של ספריית החיובים ב-Google Play.
כישורים ב-Android
הצגה ב-GitHubשדרוג ספריית החיובים ב-Play
android skills add play-billing-library-version-upgradeHelp me upgrade my Play Billing Library implementation.ספריית החיובים ב-Google Play: גרסה 9.1.0 (18.06.2026)
גרסה 9.1.0 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינות עכשיו.
סיכום השינויים
- ממשקי API חדשים לבחירת אמצעי תשלום:
- נוסף
BillingClient.getBillingChoiceInfoAsync()כדי לאחזר מידע על אפשרויות החיוב שזמינות למשתמש. - נוסף המחלקה
BillingChoiceInfoשמכילה את פרטי התגובה, כולל כתובות URL של תמונות ופרטי מועדון לקוחות. - נוסף
GetBillingChoiceInfoParamsכדי להגדיר את הבקשה. - הוספנו את
BillingChoiceInfoResponseListenerכדי לקבל את השיחה החוזרת. - נוספה פונקציית ההרחבה
BillingClient.getBillingChoiceInfo()suspend של Kotlin. - נוספה האפשרות
BillingClient.showBillingProgramInformationDialog()להצגת תיבת דו-שיח עם מידע על תוכנית חיוב. - נוסף
BillingProgramInformationDialogParamsכדי להגדיר את תיבת הדו-שיח. - הוספנו את
BillingProgramInformationDialogListenerכדי לקבל את השיחה החוזרת. - הוספנו את
BillingProgramAvailabilityDetails.BillingChoiceAvailabilityDetailsכדי לספק פרטים על הזמינות של אפשרות החיוב. - נוסף
ChoiceScreenTypeכדי לציין את סוג מסך הבחירה.
- נוסף
ספריית החיובים ב-Google Play: גרסה 9.0.0 (19.05.2026)
גרסה 9.0.0 של ספריית החיובים ב-Google Play והרחבות Kotlin זמינות עכשיו. אם רוצים לבצע מיגרציה מגרסאות קודמות של PBL, אפשר לעיין במדריך למיגרציה של PBL 9.
סיכום השינויים
קודי שגיאה מעודכנים לפעילות חסומה בחנות Play: קודי השגיאה של אפליקציות חסומות בחנות Play עודכנו. במקרים שבהם אפליקציית חנות Play חסומה על ידי המערכת (לדוגמה, במצב ילדים בהתאמה אישית של יצרן ציוד מקורי), קוד התגובה השתנה מ-
ERRORל-BILLING_UNAVAILABLE. בנוסף, במקרים כאלה,BillingResultמספק עכשיו הודעת ניפוי באגים חנות Play חסומה.עדכון בנושא מאפיין המציין אם ערך יכול להיות ריק (nullability) בחיובים שמסופקים על ידי מפתחים: השיטה
DeveloperProvidedBillingDetails.getLinkUri()עודכנה כך שתהיה@Nullable. השינוי הזה תומך בתרחישים שבהם ה-URI של הקישור הישיר לתשלומים חיצוניים לא זמין בשלב בחירת התשלום.כדי לטפל בשינוי הזה בצורה בטוחה, צריך לוודא שקוד השילוב מטפל בערכים
nullובמחרוזת ריקה ("") מה-methodDeveloperProvidedBillingDetails.getLinkUri()לפני ניתוח או הפעלה של כוונות בדפדפן.העדכון של
targetSdkVersionל-35.עכשיו אפשר להשתמש בהודעות בתוך האפליקציה כדי להודיע למשתמשים על העלאת מחיר בכפוף להסכמה שתחול בקרוב. כך המשתמשים יכולים לאשר את העלייה במחיר בלי לצאת מהאפליקציה. ההודעה על העלאת מחיר בכפוף להסכמה שעדיין לא אושרה מוצגת החל מהיום הראשון שבו המשתמש יכול לאשר את העלייה במחיר, והיא מוצגת פעם אחת בכל 7 ימים לכל היותר.
ספריית החיובים ב-Google Play: גרסה 8.3.0 (23.12.2025)
גרסה 8.3.0 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
סיכום השינויים
ממשקי API חדשים לתשלומים חיצוניים:
- הוספנו מחלקות לתמיכה בתהליך של תשלומים חיצוניים:
- הוספנו את
enableBillingProgram(EnableBillingProgramParams)כדי לאפשר תשלומים חיצוניים. - נוספה הפונקציה
BillingFlowParams.Builder.enableDeveloperBillingOptionלהפעלת תהליך התשלומים החיצוניים.
שיפור בסיווג השגיאות בנטישת תהליך התשלום החיצוני:
- אם משתמש עובר מתהליך הרכישה לאפליקציה חיצונית (כמו ארנק אלקטרוני) כדי להשלים את התשלום, ונוטש את העסקה בלי לחזור, קוד התגובה שמוחזר ללקוח הוא עכשיו
BillingResponseCode.USER_CANCELED(1) עם הודעת ניפוי באגיםBILLING_ACTIVITY_PAUSED(קוד ברירת המחדל היהBillingResponseCode.ERROR(6)).
- אם משתמש עובר מתהליך הרכישה לאפליקציה חיצונית (כמו ארנק אלקטרוני) כדי להשלים את התשלום, ונוטש את העסקה בלי לחזור, קוד התגובה שמוחזר ללקוח הוא עכשיו
ספריית החיובים ב-Google Play: גרסה 8.2.1 (15.12.2025)
גרסה 8.2.1 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
תיקוני באגים
- תיקנו באג ב-
isBillingProgramAvailableAsyncוב-createBillingProgramReportingDetailsAsync. כדי להשתמש בממשקי ה-API האלה שהוצגו בגרסה 8.2.0, צריך לעדכן לגרסה 8.2.1.
ספריית החיובים ב-Google Play: גרסה 8.2.0 (09.12.2025)
הגרסה 8.2.0 של ספריית החיובים ב-Google Play וההרחבות של Kotlin זמינות עכשיו.
סיכום השינויים
ממשקי API חדשים לקישורים לתוכן חיצוני ולמבצעים מחוץ לאפליקציה:
- נוספה האפשרות
enableBillingProgramלהגדרתBillingClientעבור התוכניות האלה. - הוספנו את
isBillingProgramAvailableAsyncכדי לקבוע את הזכאות של המשתמש. - נוסף
createBillingProgramReportingDetailsAsyncכדי ליצור את טוקן העסקה החיצונית שחובה להשתמש בו לדיווח. - נוסף
launchExternalLinkכדי להפעיל את הקישור החיצוני להצעה של תוכן דיגיטלי או להורדה של אפליקציה.
- נוספה האפשרות
שינויים בתוכנית לשיווק מחוץ לאפליקציה:
- יש שינויים במדיניות של התוכנית לשיווק מחוץ לאפליקציה. פרטים נוספים זמינים במאמר בנושא שינויים בתוכנית. כדי להבין איך להפעיל תהליכים של שיווק מחוץ לאפליקציה באמצעות ממשקי ה-API החדשים, אפשר לעיין במדריך השילוב.
- הוצאנו משימוש את
BillingClient.Builder.enableExternalOfferAPI. - הוצאנו משימוש את
isExternalOfferAvailableAsyncAPI. - הוצאנו משימוש את
createExternalOfferReportingDetailsAsyncAPI. - הוצאנו משימוש את
showExternalOfferInformationDialogAPI.
ספריית החיובים ב-Google Play: גרסה 8.1.0 (06.11.2025)
גרסה 8.1.0 של ספריית החיובים ב-Google Play וההרחבות של Kotlin זמינות עכשיו.
סיכום השינויים
מינויים מושעים
נוסף פרמטר חדש לשיטה
BillingClient.queryPurchasesAsync()כדי לכלול מינויים מושעים כשמבצעים שאילתה לגבי מינויים. מינויים מושעים עדיין משויכים למשתמש, אבל הם לא פעילים, כי המשתמש השהה את המינוי או שאמצעי התשלום לחידוש נדחה.האובייקט
Purchaseשמוחזר ב-listener יחזיר את הערךisSuspended() = trueלכל המינויים שהושעו. במקרה כזה, לא כדאי להעניק גישה למינוי שנרכש, אלא להפנות את המשתמש אל מרכז המינויים, שבו הוא יכול לנהל את אמצעי התשלום או להשהות את המינוי כדי להפעיל אותו מחדש.עדכונים במינויים:
לאובייקט
BillingFlowParams.ProductDetailsParamsיש עכשיו את השיטהsetSubscriptionProductReplacementParams()שבה אפשר לציין פרטי החלפה ברמת המוצר.לאובייקט
SubscriptionProductReplacementParamsיש שתי שיטות setter:-
setOldProductId: המוצר הישן שצריך להחליף אותו במוצר בProductDetailsהנוכחי. -
setReplacementMode: זהו מצב ההחלפה ברמת הפריט. המצבים זהים בעצם ל-SubscriptionUpdateParams, אבל מיפוי הערכים עודכן. הוספנו מצב החלפה חדשKEEP_EXISTINGשמאפשר לשמור על תוכנית התשלומים הקיימת של פריט מסוים ללא שינוי.
-
הפונקציה SubscriptionUpdateParams setSubscriptionReplacementMode תצא משימוש. במקומה, צריך להשתמש ב-
SubscriptionProductReplacementParams.setReplacementMode.
העדכון בוצע בתאריך
minSdkVersionלגרסה 23.הפעלת ממשקי API להזמנה מראש של מוצרים בחיוב חד-פעמי
אפשר עכשיו להשתמש ב-
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()API כדי לקבל את פרטי ההזמנה מראש.ספריית החיובים ב-Google Play תומכת עכשיו בגרסה 2.2.0 של Kotlin.
ספריית החיובים ב-Google Play: גרסה 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()builder מאפשר למפתחים להביע הסכמה לחיבור מחדש אוטומטי לשירות, וכך לפשט את ניהול החיבורים על ידי טיפול בחיבורים מחדש לשירות החיוב ב-Play באופן אוטומטי. בנוסף, אין יותר צורך להתקשר אלstartConnection()באופן ידני במקרה של ניתוק מהשירות. מידע נוסף זמין במאמר בנושא חיבור מחדש באופן אוטומטי.קודי תגובה משניים לשיטה
launchBillingFlow().התשובה BillingResult שמוחזרת מ-
launchBillingFlow()תכלול עכשיו שדה של קוד תשובה משני. השדה הזה יאוכלס רק במקרים מסוימים כדי לספק סיבה ספציפית יותר לכישלון. השדה של תת-התשובה יכול לקבל את הערכים הבאים:-
PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS- מוחזר אם הסכום שיש למשתמש קטן מהמחיר של הפריט שהוא מנסה לרכוש. -
USER_INELIGIBLE– מוחזר כשהמשתמש לא עומד בדרישות הסף שהוגדרו למבצע של מינוי. -
NO_APPLICABLE_SUB_RESPONSE_CODE– ערך ברירת המחדל שמוחזר כשלא חל קוד משנה אחר של תגובה.
-
הסרנו את אמצעי התשלום
queryPurchaseHistory().הוסרה ה-method
queryPurchaseHistory()שסומנה בעבר כהוצאה משימוש. במאמר שאילתות על היסטוריית הרכישות מוסבר אילו ממשקי API חלופיים אפשר להשתמש במקום.הסרנו את אמצעי התשלום
querySkuDetailsAsync().הוסרה השיטה
querySkuDetailsAsync()שסומנה בעבר כשיטה שהוצאה משימוש. במקומה צריך להשתמש ב-queryProductDetailsAsync.הסרנו את אמצעי התשלום
BillingClient.Builder.enablePendingPurchases().הוסרה השיטה
enablePendingPurchases()ללא פרמטרים, שסומנה בעבר כשיטה שהוצאה משימוש. במקום זאת, צריך להשתמש ב-enablePendingPurchases(PendingPurchaseParams params). הערה: התכונהenablePendingPurchases()שהוצאה משימוש זהה מבחינת הפונקציונליות לתכונהenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).הוסרה שיטת
queryPurchasesAsync()שעברה עומס יתר ומקבלת skuType.הוסרה ה-method
queryPurchasesAsync(String skuType, PurchasesResponseListener listener)שסומנה בעבר כהוצאה משימוש. אפשר גם להשתמש ב-queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener).
גרסה 7.1.1 של ספריית החיובים ב-Google Play (03.10.2024)
גרסה 7.1.1 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
תיקוני באגים
- תוקנה באג בספריית החיובים ב-Play 7.1.0 שקשור לבדיקה של קודי תגובה של
BillingResult.
ספריית החיובים ב-Google Play: גרסה 7.1.0 (19.09.2024)
גרסה 7.1.0 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
סיכום השינויים
- שיפור הבטיחות של השרשור שקשור לסטטוס החיבור ולניהול.
- הוספנו שינויים חלקיים לבדיקה של קודי תגובה
BillingResult, שזמינים באופן מלא בספריית החיובים ב-Play בגרסה 7.1.1. כדי לבדוק את השילוב באמצעות התכונה הזו, צריך לשדרג לגרסה 7.1.1 של ספריית החיובים ב-Play. קיים באג שמשפיע רק על אפליקציות שהפעלת הבדיקה של שינויים בחיוב מופעלת בהן, והוא לא משפיע על שימוש רגיל. מידע נוסף זמין במאמר בנושא בדיקת קודי התגובה שלBillingResult.
ספריית החיובים ב-Google Play: גרסה 7.0.0 (14.05.2024)
גרסה 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בפונקציית ה-callback של ה-listener במקום זאת.
- המפתחים צריכים להשתמש ב-
הוסרו
BillingFlowParams.ProrationMode,BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceProrationMode(), ו-BillingFlowParams.SubscriptionUpdateParams.Builder.setReplaceSkusProrationMode().- המפתחים צריכים להשתמש במקום זאת ב-
BillingFlowParams.SubscriptionUpdateParams.ReplacementModeעםBillingFlowParams.SubscriptionUpdateParams.Builder#setSubscriptionReplacementMode(int).
- המפתחים צריכים להשתמש במקום זאת ב-
הוסרה
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldSkuPurchaseToken().- המפתחים צריכים להשתמש במקומה ב-
BillingFlowParams.SubscriptionUpdateParams.Builder#setOldPurchaseToken(java.lang.String).
- המפתחים צריכים להשתמש במקומה ב-
BillingClient.queryPurchaseHistoryAsync()הוצא משימוש ויוסר בגרסה עתידית. מפתחים צריכים להשתמש במקום זאת באפשרויות החלופיות הבאות:- רכישות שאושרו ורכישות בהמתנה: משתמשים ב-
BillingClient.queryPurchasesAsync()כדי לאחזר את הרכישות הפעילות. - רכישות שנעשה בהן שימוש: מפתחים צריכים לעקוב אחרי רכישות שנעשה בהן שימוש בשרתים שלהם.
- רכישות שבוטלו: אפשר להשתמש ב-voided-purchases developer 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()אפשרות ליצור מטען ייעודי (payload) שנדרש לדיווח על עסקאות שבוצעו באמצעות מבצעים חיצוניים.
- נוספה
ספריית החיובים ב-Google Play: גרסה 6.1.0 (14.11.2023)
גרסה 6.1.0 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
סיכום השינויים
- הוספנו ממשקי API לתמיכה במערכת חיוב חלופית בלבד (כלומר, בלי אפשרויות בחירה למשתמשים)
- הוספנו את
BillingClient.Builder.enableAlternativeBillingOnly()כדי לאפשר למפתחים להציע רק מערכת חיוב חלופית. - נוספה אפשרות
BillingClient.isAlternativeBillingOnlyAvailableAsync()לבדוק את הזמינות של מערכת חיוב חלופית בלבד. - הוספנו את
BillingClient.showAlternativeBillingOnlyInformationDialog()כדי להציג תיבת דו-שיח עם מידע למשתמשים כשמשתמשים רק במערכת חיוב חלופית. - נוסף
BillingClient.createAlternativeBillingOnlyReportingDetailsAsync()כדי ליצור מטען ייעודי (payload) שנדרש לדיווח על עסקאות שבוצעו רק דרך מערכת חיוב חלופית.
- הוספנו את
- עדכנו את ממשקי ה-API של חיוב לבחירת המשתמש
- נוספה
UserChoiceBillingListenerכדי להחליף את AlternativeBillingListener שסומנה כשיצאה משימוש. - התווסף
UserChoiceDetailsכדי להחליף אתAlternativeChoiceDetailsשסומן כהוצאה משימוש. - נוסף
BillingClient.Builder.enableUserChoiceBilling()כדי להחליף אתBillingClient.Builder.enableAlternativeBilling()שסומן כהוצאה משימוש.
- נוספה
- נוספה האפשרות
BillingClient.getBillingConfigAsync()לאחזור המדינה ב-Google Play.
ספריית החיובים ב-Google Play: גרסה 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. מפתחים צריכים להשתמש ב-queryPurchasesAsyncבמקום ב-queryPurchases. למידע על חלופות ל-launchPriceConfirmationFlowאפשר לעיין במאמר שינויים במחירים.נוסף קוד תגובה חדש לשגיאה ברשת.
החל מגרסה 6.0.0 של PBL, נוסף קוד תגובה חדש לשגיאה בחיבור לרשת,
NETWORK_ERROR, הקוד הזה מוחזר כשמתרחשת שגיאה בגלל בעיה בחיבור לרשת. בעבר, שגיאות החיבור לרשת האלה דווחו כ-SERVICE_UNAVAILABLE.עדכון של
SERVICE_UNAVAILABLEושלSERVICE_TIMEOUT.החל מגרסה 6.0.0 של PBL, שגיאות שנובעות מזמן קצוב לתפוגה בעיבוד יוחזרו כ-
SERVICE_UNAVAILABLEבמקום כ-SERVICE_TIMEOUTכמו עכשיו.ההתנהגות לא משתנה בגרסאות קודמות של PBL.
הוסרה
SERVICE_TIMEOUT.החל מגרסה 6.0.0 של PBL, הערך
SERVICE_TIMEOUTלא יוחזר יותר. גרסאות קודמות של PBL עדיין יחזירו את הקוד הזה.נוספה רישום פעולות נוסף.
גרסה 6 של ספריית החיובים ב-Play כוללת רישום נוסף ביומן, שמספק תובנות לגבי השימוש ב-API (למשל הצלחה וכישלון) ובעיות בחיבור לשירות. המידע הזה ישמש לשיפור הביצועים של ספריית החיובים ב-Play ולמתן תמיכה טובה יותר בשגיאות.
ספריית החיובים ב-Google Play: גרסה 5.2.1 (22.06.2023)
הגרסה 5.2.1 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו.
סיכום השינויים
צריך לעדכן את ספריית החיובים ב-Play כדי שתהיה תואמת ל-Android 14.
ספריית החיובים ב-Google Play: גרסה 5.2 (06.04.2023)
גרסה 5.2.0 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
סיכום השינויים
- הוספנו מחלקות לתמיכה בתהליכי חיוב חלופיים בנייד או בטאבלט למשתמשים בקוריאה הדרומית:
- נוספה השיטה
BillingFlowParams.SubscriptionUpdateParams.Builder.setOriginalExternalTransactionId()כדי לציין את מזהה העסקה החיצוני של המינוי המקורי. - הוספנו את השיטה
BillingClient.Builder.enableAlternativeBilling()כדי לאפשר למשתמשים בקוריאה הדרומית לבחור מערכת חיוב חלופית.
ספריית החיובים ב-Google Play: גרסה 5.1 (31.10.2022)
גרסה 5.1.0 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
הגרסה הזו כוללת את השינויים הבאים.
סיכום השינויים
- נוסף ה-method
ProductDetails.SubscriptionOfferDetails.getOfferId()לאחזור מזהה המבצע. - נוספה שיטת
ProductDetails.SubscriptionOfferDetails.getBasePlanId()לאחזור מזהה המינוי הבסיסי. - העדכון של
targetSdkVersionל-31.
ספריית החיובים ב-Google Play: גרסה 5.0 (11.05.2022)
הגרסה 5.0.0 של ספריית החיובים ב-Google Play וההרחבות של Kotlin זמינות עכשיו.
הגרסה הזו כוללת את השינויים הבאים.
סיכום השינויים
- השקנו מודל חדש למינויים, כולל ישויות חדשות שמאפשרות לכם ליצור כמה מבצעים למוצר מינוי יחיד. מידע נוסף זמין במדריך להעברת נתונים.
- הוספתי את
BillingClient.queryProductDetailsAsync()כדי להחליף אתBillingClient.querySkuDetailsAsync(). - הוספנו את השיטה
setIsOfferPersonalized()כדי לעמוד בדרישות לגבי גילוי נאות בנוגע לתמחור מותאם אישית באיחוד האירופי. מידע נוסף על השיטה הזו זמין במאמר בנושא ציון מחיר בהתאמה אישית. - הוסרה השיטה
queryPurchases(), שהוצאה משימוש בעבר והוחלפה בשיטה queryPurchasesAsync שהוצגה בספריית החיובים ב-Google Play בגרסה 4.0.0. -
launchPriceChangeFlowהוצא משימוש ויוסר בגרסה עתידית. מידע נוסף על חלופות זמין במאמר הפעלת תהליך אישור של שינוי מחיר. - הוסר
setVrPurchaseFlow(), ששימש בעבר ליצירת מופע של תהליך רכישה. בגרסאות קודמות, השיטה הזו הפנתה את המשתמש להשלמת הרכישה במכשיר מבוסס-Android. אחרי שתסירו את השיטה הזו, המשתמשים ישלימו את הרכישה בתהליך הרכישה הרגיל.
ספריית החיובים ב-Google Play: גרסה 4.1 (23.02.2022)
גרסה 4.1.0 של ספריית החיובים ב-Google Play ותוספי Kotlin זמינים עכשיו.
הגרסה הזו כוללת את השינויים הבאים.
סיכום השינויים
- הוספנו את אמצעי התשלום
BillingClient.showInAppMessages()כדי לטפל בדחיות של תשלומים על מינויים. מידע נוסף על טיפול בדחיות תשלום באמצעות הודעות בתוך האפליקציה
ספריית החיובים ב-Google Play: גרסה 4.0 (18.05.2021)
הגרסה 4.0.0 של ספריית החיובים ב-Google Play וההרחבות של Kotlin זמינות עכשיו.
סיכום השינויים
נוסף
BillingClient.queryPurchasesAsync()כדי להחליף אתBillingClient.queryPurchases()שיוסר בגרסה עתידית.נוסף מצב חדש להחלפת מינוי
IMMEDIATE_AND_CHARGE_FULL_PRICE.נוספה השיטה
BillingClient.getConnectionState()לאחזור מצב החיבור של Play Billing Library.עדכנו את 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: גרסה 3.0.3 (12.03.2021)
גרסה 3.0.3 של ספריית החיובים ב-Google Play, של הרחבת Kotlin ושל הפלאגין Unity זמינות עכשיו.
תיקוני באגים ב-Java וב-Kotlin
- תוקנה דליפת זיכרון כשמתבצעת קריאה ל-
endConnection(). - תיקון בעיה שמתרחשת כשספריית החיובים ב-Google Play נמצאת בשימוש באפליקציות שמוגדר בהן מצב ההפעלה single task.
onPurchasesUpdated()תופעל קריאה חוזרת (callback) כשממשיכים להשתמש באפליקציה ממרכז האפליקציות של Android, ותיבת הדו-שיח לחיוב הייתה גלויה לפני שהשימוש באפליקציה הופסק.
תיקוני באגים ב-Unity
- כדי לתקן דליפת זיכרון ולפתור בעיה שמונעת רכישות כשממשיכים להשתמש באפליקציה ממרכז האפליקציות של Android, אחרי שתיבת הדו-שיח של החיוב הייתה גלויה לפני ההשעיה, צריך לעדכן לגרסה 3.0.3 של Java.
ספריית החיובים ב-Google Play: גרסה 3.0.2 (24.11.2020)
גרסה 3.0.2 של ספריית החיובים ב-Google Play ותוסף Kotlin זמינים עכשיו.
תיקוני באגים
- תוקן באג בתוסף Kotlin שבו הקורוטינה נכשלת עם השגיאה Already resumed (כבר בוצעה הפעלה מחדש).
- תוקנה הבעיה של הפניות לא פתורות כשמשתמשים בתוסף Kotlin עם ספריית kotlinx.coroutines בגרסה 1.4 ומעלה.
ספריית החיובים ב-Google Play: גרסה 3.0.1 (30.09.2020)
גרסה 3.0.1 של ספריית החיובים ב-Google Play ותוסף Kotlin זמינים עכשיו.
תיקוני באגים
- תוקן באג שגרם לכך שאם האפליקציה נסגרה ונפתחה מחדש במהלך תהליך החיוב, יכול להיות שלא הייתה קריאה ל-
PurchasesUpdatedListenerעם תוצאת הרכישה.
ספריית החיובים ב-Google Play: גרסה 3.0 (08.06.2020)
גרסה 3.0.0 של ספריית החיובים ב-Google Play, של הרחבת Kotlin ושל הפלאגין Unity זמינות עכשיו.
סיכום השינויים
- הוסרה התמיכה במק"טים של מודעות מתגמלות.
- הוסרו הפרמטרים
ChildDirectedו-UnderAgeOfConsent. - הוסרו שיטות מטען ייעודי למפתח שהוצאו משימוש.
- הוסרו השיטות שהוצאו משימוש
BillingFlowParams.setAccountId()ו-BillingFlowParams.setDeveloperId(). - הוסרו השיטות שהוצאו משימוש
BillingFlowParams.setOldSkus(String oldSku)ו-BillingFlowParams.addOldSku(String oldSku). - נוספו הערות לגבי האפשרות שערך יהיה ריק (nullability).
תיקוני באגים
-
SkuDetails.getIntroductoryPriceCycles()מחזיר עכשיוintבמקוםString. - תוקן באג שגרם לכך שבתהליך החיוב נכללו פרמטרים נוספים, גם אם לא הוגדרו פרמטרים נוספים.
ספריית החיובים ב-Google Play: גרסה 2.2.1 (20.05.2020)
גרסה 2.2.1 של ספריית החיובים ב-Google Play זמינה עכשיו.
תיקוני באגים
- עדכנו את גרסת ברירת המחדל של ספריית החיובים ב-Play ב-Java, שהתוסף Kotlin תלוי בה.
גרסה 2.2.0 של ספריית החיובים ב-Google Play ותמיכה ב-Unity (23.03.2020)
גרסה 2.2.0 של חיוב ב-Google Play מספקת פונקציונליות שעוזרת למפתחים לוודא שהרכישות משויכות למשתמש הנכון. השינויים האלה מייתרים את הצורך בבניית פתרונות בהתאמה אישית שמבוססים על מטען ייעודי (payload) של מפתחים. במסגרת העדכון הזה, הפונקציונליות של מטען ייעודי (payload) למפתחים הוצאה משימוש ותוסר בגרסה עתידית. מידע נוסף, כולל חלופות מומלצות, זמין במאמר Developer payload.
חיוב ב-Google Play ספריית חיובים 2 עבור Unity
בנוסף לגרסאות הנוכחיות של ספריית החיובים ב-Google Play 2 ב-Java וב-Kotlin, פרסמנו גרסה של הספרייה לשימוש עם Unity. מפתחי משחקים שמשתמשים ב-Unity API לרכישות באפליקציה יכולים לשדרג עכשיו כדי ליהנות מכל התכונות של ספריית החיובים ב-Google Play גרסה 2, וכדי להקל על השדרוגים הבאים לגרסאות עתידיות של ספריית החיובים ב-Google Play.
מידע נוסף זמין במאמר בנושא שימוש בחיוב ב-Google Play עם Unity.
סיכום השינויים
- ספריית החיובים ב-Google Play ב-Java
- ב-methods
AcknowledgePurchaseParams,setDeveloperPayload()ו-getDeveloperPayload()שהוצאו משימוש. - ב-methods
ConsumeParams,setDeveloperPayload()ו-getDeveloperPayload()שהוצאו משימוש. - ב-
BillingFlowParams, שונה השם שלsetAccountId()ל-setObfuscatedAccountId(), ותועדה הגבלת אורך של 64 תווים והגבלה שאוסרת על שימוש בפרטים אישיים מזהים (PII) בשדה הזה. setAccountId()סומן כהוצאה משימוש ויוסר בגרסה עתידית של הספרייה. - ב-
BillingFlowParams, נוספהsetObfuscatedProfileId(), שפועלת באופן דומה ל-setObfuscatedAccountId(). מידע נוסף זמין במאמר עדכונים של מטען ייעודי (payload) למפתחים וחלופות. - ב-
Purchase, נוספה השיטהgetAccountIdentifiers()להחזרת מזהי החשבון המוסתרים שהוגדרו ב-BillingFlowParams. - ב-
BillingClient, השיטהloadRewardedSku()סומנה כשיטה שהוצאה משימוש כחלק מהוצאה משימוש של מק"טים של מודעות מתגמלות.
- ב-methods
ספריית החיובים ב-Google Play: גרסה 2.1.0 ו-Kotlin Extension: גרסה 2.1.0 (10.12.2019)
גרסה 2.1.0 של ספריית החיובים ב-Google Play וההרחבה החדשה של Kotlin זמינות עכשיו. ההרחבה של Kotlin לספריית החיובים ב-Play מספקת חלופות ל-API שמתאימות לשימוש ב-Kotlin, עם בטיחות טובה יותר מפני ערכי null ועם שגרות המשך (coroutines). דוגמאות קוד מופיעות במאמר בנושא שימוש בספריית החיובים ב-Google Play.
הגרסה הזו כוללת את השינויים הבאים.
סיכום השינויים
- ב-
BillingFlowParams, הוצא משימושsetOldSku(String oldSku)והוחלף ב-setOldSku(String oldSku, String purchaseToken), כדי להבחין בין מקרים שבהם כמה חשבונות במכשיר הם הבעלים של אותו מק"ט.
ספריית החיובים ב-Google Play: גרסה 2.0.3 (05.08.2019)
גרסה 2.0.3 של ספריית החיובים ב-Google Play זמינה עכשיו.
תיקוני באגים
- תוקן באג שגרם לכך שהפקודה
querySkuDetailsAsync()נכשלה מדי פעם עם הקודDEVELOPER_ERRORבמקום להחזיר תוצאה תקינה.
ספריית החיובים ב-Google Play: גרסה 2.0.2 (08.07.2019)
גרסה 2.0.2 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת עדכונים במאמרי העזרה, ולא משנה את הפונקציונליות של הספרייה.
ספריית החיובים ב-Google Play: גרסה 2.0.1 (06.06.2019)
גרסה 2.0.1 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
תיקוני באגים
- תוקן באג שגרם לכך שהודעות ניפוי באגים הוחזרו כ-
nullבמקרים מסוימים. - תוקנה בעיה פוטנציאלית של דליפת זיכרון.
ספריית החיובים ב-Google Play: גרסה 2.0 (07.05.2019)
גרסה 2.0 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
חובה לאשר רכישות תוך שלושה ימים
ב-Google Play אפשר לרכוש מוצרים מתוך האפליקציה (רכישה מתוך האפליקציה) או מחוץ לאפליקציה (רכישה מחוץ לאפליקציה). כדי ש-Google Play תוכל להבטיח חוויית רכישה עקבית בלי קשר למקום שבו המשתמש רוכש את המוצר שלכם, אתם צריכים לאשר את כל הרכישות שמתקבלות דרך ספריית החיובים ב-Google Play בהקדם האפשרי אחרי שמעניקים למשתמש הרשאה. אם לא תאשרו רכישה תוך שלושה ימים, המשתמש יקבל החזר כספי באופן אוטומטי, והרכישה ב-Google Play תבוטל. במקרה של עסקאות בהמתנה (חדש בגרסה 2.0), חלון הזמן של שלושה ימים מתחיל כשהרכישה עוברת למצב PURCHASED, ולא חל כשהרכישה במצב PENDING.
במקרה של מינויים, צריך לאשר כל רכישה שיש לה אסימון רכישה חדש. המשמעות היא שצריך לאשר את כל הרכישות הראשוניות, השינויים בתוכנית וההרשמות מחדש, אבל לא צריך לאשר חידושים עתידיים. כדי לקבוע אם נדרש אישור לרכישה, אפשר לבדוק את השדה acknowledgement ברכישה.
אובייקט Purchase כולל עכשיו את ה-method isAcknowledged() שמציין אם הרכישה אושרה. בנוסף, ממשק API של Google Play למפתחים כולל ערכים בוליאניים לאישור גם עבור Purchases.products וגם עבור Purchases.subscriptions.
לפני שמאשרים רכישה, חשוב להשתמש בשיטות האלה כדי לקבוע אם הרכישה כבר אושרה.
אפשר לאשר רכישה באחת מהשיטות הבאות:
- לגבי מוצרים שניתן לצרוך, משתמשים ב-
consumeAsync(), שנמצא ב-API של הלקוח. - למוצרים שלא נצרכים, משתמשים ב-
acknowledgePurchase(), שנמצא ב-client API. - בנוסף, יש שיטה חדשה
acknowledge()ב-Server API.
השיטה BillingFlowParams.setSku() הוסרה
ה-method BillingFlowParams#setSku() שהוצאה משימוש בעבר הוסרה בגרסה הזו. לפני שמעבדים מוצרים בתהליך רכישה, עכשיו צריך להפעיל את BillingClient.querySkuDetailsAsync() ולהעביר את אובייקט SkuDetails שמתקבל אל BillingFlowParams.Builder.setSkuDetails().
דוגמאות קוד מופיעות במאמר בנושא שימוש בספריית החיובים ב-Google Play.
יש תמיכה בנתוני payload של מפתחים
בגרסה 2.0 של ספריית החיובים ב-Google Play נוסף תמיכה במטען ייעודי (payload) של מפתחים – מחרוזות שרירותיות שאפשר לצרף לרכישות. אפשר לצרף פרמטר של מטען ייעודי (payload) למפתח לרכישה, אבל רק כשהרכישה מאושרת או כשנעשה בה שימוש. זה שונה ממטען ייעודי (payload) למפתחים ב-AIDL, שבו אפשר לציין את המטען הייעודי (payload) כשמפעילים את תהליך הרכישה. עכשיו אפשר להתחיל רכישות מחוץ לאפליקציה, ולכן השינוי הזה מבטיח שתמיד תהיה לכם אפשרות להוסיף מטען ייעודי (payload) לרכישות.
כדי לגשת למטען הייעודי (payload) בספרייה החדשה, אובייקטים מסוג Purchase כוללים עכשיו שיטה מסוג getDeveloperPayload().
מבצעים עקביים
כשאתם מציעים מק"ט בהנחה, מערכת Google Play מחזירה עכשיו את המחיר המקורי של המק"ט כדי שתוכלו להראות למשתמשים שהם מקבלים הנחה.
SkuDetails מכיל שתי שיטות חדשות לאחזור המחיר המקורי של המק"ט:
getOriginalPriceAmountMicros()- הפונקציה מחזירה את המחיר המקורי של המק"ט לפני הנחה, ללא עיצוב.
getOriginalPrice()- מחזירה את המחיר המקורי עם עיצוב מטבע נוסף.
עסקאות בהמתנה
בגרסה 2.0 של ספריית החיובים ב-Google Play, חובה לתמוך ברכישות שנדרשת בהן פעולה נוספת לפני הענקת זכאות. לדוגמה, משתמש יכול לבחור לרכוש את המוצר שלכם מתוך האפליקציה בחנות פיזית באמצעות מזומן. כלומר, העסקה הושלמה מחוץ לאפליקציה. במקרה כזה, צריך להעניק זכאות רק אחרי שהמשתמש השלים את העסקה.
כדי להפעיל רכישות בהמתנה, צריך לקרוא ל-enablePendingPurchases() כחלק מהפעלת האפליקציה.
משתמשים ב-Purchase.getPurchaseState() כדי לקבוע אם סטטוס הרכישה הוא PURCHASED או PENDING. הערה: צריך להעניק זכאות רק כשהמצב הוא PURCHASED. כדי לבדוק אם יש עדכוני סטטוס לגבי Purchase, צריך לפעול לפי השלבים הבאים:
- כשמפעילים את האפליקציה, קוראים ל-
BillingClient.queryPurchases()כדי לאחזר את רשימת המוצרים שלא נעשה בהם שימוש שמשויכים למשתמש. - קוראים ל-
Purchase.getPurchaseState()בכל אובייקטPurchaseשמוחזר. - מטמיעים את ה-method
onPurchasesUpdated()כדי להגיב לשינויים באובייקטים מסוגPurchase.
בנוסף, ממשק API של Google Play למפתחים כולל את הסטטוס 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()מחזיר עכשיוlongבמקוםString.
ספריית החיובים ב-Google Play: גרסה 1.2.2 (07.03.2019)
גרסה 1.2.2 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
תיקוני באגים
- תוקנה בעיה בשרשור שהופיעה בגרסה 1.2.1. שיחות ברקע לא חוסמות יותר את ה-thread הראשי.
שינויים אחרים
- למרות שעדיין מומלץ להשתמש בשרשור הראשי, עכשיו אפשר ליצור מופע של ספריית החיובים ב-Google Play משרשור רקע.
- ההפעלה של אובייקט (Instantiation) הועברה באופן מלא לשרשור הרקע כדי להפחית את הסיכוי לגרום לשגיאות ANR.
ספריית החיובים ב-Play: גרסה 1.2.1 (04.03.2019)
גרסה 1.2.1 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
שינויים עיקריים
- הוספנו תמיכה במוצרים עם תגמול. מידע נוסף על אפשרויות המונטיזציה זמין במאמר הוספת תכונות ספציפיות למוצרים עם תגמול.
שינויים אחרים
- נוספו constructors ציבוריים ל-
PurchasesResultול-SkuDetailsResultכדי להקל על הבדיקות. - אובייקטים
SkuDetailsיכולים להשתמש בשיטה חדשה,getOriginalJson(). - כל הקריאות לשירות AIDL מטופלות עכשיו על ידי שרשורים ברקע.
תיקוני באגים
- מאזיני קריאה חוזרת (callback) עם ערך null לא מועברים יותר לממשקי API ציבוריים.
ספריית החיובים ב-Google Play: גרסה 1.2 (18.10.2018)
גרסה 1.2 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
סיכום השינויים
- ספריית החיובים ב-Google Play מורשית עכשיו במסגרת הסכם הרישיון של Android Software Development Kit.
- נוסף API
launchPriceChangeConfirmationFlow, שמציג למשתמשים בקשה לבדוק שינוי בהמתנה במחיר המינוי. - הוספנו תמיכה במצב חדש של חישוב יחסי,
DEFERRED, כשמשדרגים או מורידים את רמת המינוי של משתמש. - בקטע
BillingFlowParams, מחליפים אתsetSku()ב-setSkuDetails(). - תיקוני באגים קלים ואופטימיזציות של קוד.
אישור שינוי מחיר
עכשיו אפשר לשנות את המחיר של מינוי ב-Google Play Console ולבקש מהמשתמשים לבדוק את המחיר החדש ולאשר אותו כשהם נכנסים לאפליקציה.
כדי להשתמש ב-API הזה, צריך ליצור אובייקט PriceChangeFlowParams באמצעות skuDetails של מוצר מסוג מינוי, ואז לקרוא ל-launchPriceChangeConfirmationFlow(). מטמיעים את
PriceChangeConfirmationListener כדי לטפל בתוצאה כשתהליך האישור של שינוי המחיר מסתיים, כמו שמוצג בקטע הקוד הבא:
Kotlin
val priceChangeFlowParams = PriceChangeFlowParams.newBuilder() .setSkuDetails(skuDetailsOfThePriceChangedSubscription) .build() billingClient.launchPriceChangeConfirmationFlow(activity, priceChangeFlowParams, object : PriceChangeConfirmationListener() { override fun onPriceChangeConfirmationResult(responseCode: Int) { // Handle the result. } })
Java
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, ה-method setSku() הוצאה משימוש.
השינוי הזה נועד לבצע אופטימיזציה של רצף פעולות החיוב ב-Google Play.
כשיוצרים מופע חדש של BillingFlowParams בלקוח של מערכת החיוב מתוך האפליקציה, מומלץ לעבוד ישירות עם אובייקט JSON באמצעות setSkuDetails(), כמו שמוצג בקטע הקוד הבא:
הוצאנו משימוש את השיטה setSku() במחלקה BillingFlowParams Builder. במקום זאת, משתמשים במתודה setSkuDetails(), כמו שמוצג בקטע הקוד הבא. האובייקט שמועבר לאובייקט setSkuDetails() מגיע מהשיטה querySkuDetailsAsync().
Kotlin
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() }
Java
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: גרסה 1.1 (07.05.2018)
גרסה 1.1 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
סיכום השינויים
- הוספנו תמיכה בציון מצב חישוב יחסי ב-
BillingFlowParamsכשמשדרגים או מורידים את רמת המינוי הקיים. - הדגל הבוליאני
replaceSkusProrationב-BillingFlowParamsלא נתמך יותר. במקום זאת, אתם צריכים להשתמש ב-replaceSkusProrationMode. -
launchBillingFlow()מפעיל עכשיו קריאה חוזרת (callback) לתגובות שנכשלו.
שינויים בהתנהגות
גרסה 1.1 של ספריית החיובים ב-Google Play כוללת את שינויי ההתנהגות הבאים.
מפתחים יכולים להגדיר את replaceSkusProrationMode בכיתה BillingFlowParams
בProrationMode מפורטים סוגי החישובים היחסיים שמתבצעים כשמשדרגים או מורידים את רמת המינוי של משתמש.
Kotlin
BillingFlowParams.newBuilder() .setSku(skuId) .setType(billingType) .setOldSku(oldSku) .setReplaceSkusProrationMode(replaceSkusProrationMode) .build()
Java
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() מפעיל עכשיו קריאה חוזרת לתשובות שנכשלו
ספריית החיוב תמיד תפעיל את הקריאה החוזרת (callback) PurhcasesUpdatedListener ותחזיר את BillingResponse באופן אסינכרוני. גם הערך שמוחזר באופן סינכרוני של BillingResponse נשמר.
תיקוני באגים
- יציאה מוקדמת נכונה בשיטות אסינכרוניות כשהשירות מנותק.
-
Builderאובייקטים של פרמטרים כבר לא משנים אובייקטים מובנים. - בעיה 68087141:
launchBillingFlow()מעכשיו מופעלת קריאה חוזרת לתגובות שנכשלו.
ספריית החיובים ב-Google Play: גרסה 1.0 (19.09.2017, הודעה)
גרסה 1.0 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
שינויים חשובים
- הרשאת החיוב מוטמעת במניפסט של הספרייה. כבר לא צריך להוסיף את ההרשאה
com.android.vending.BILLINGבמניפסט של Android. - נוסף builder חדש למחלקה
BillingClient.Builder - הוספנו תבנית builder למחלקה
SkuDetailsParamsלשימוש במתודות לשליחת שאילתות לגבי מק"טים. - כמה שיטות API עודכנו כדי לשמור על עקביות (אותם שמות וסדר של ארגומנטים להחזרה).
שינויים בהתנהגות
גרסה 1.0 של ספריית החיובים ב-Google Play כוללת את שינויי ההתנהגות הבאים:
המחלקות BillingClient.Builder
BillingClient.Builder
מאותחל עכשיו באמצעות התבנית newBuilder:
Kotlin
billingClient = BillingClient.newBuilder(context).setListener(this).build()
Java
billingClient = BillingClient.newBuilder(context).setListener(this).build();
השיטה launchBillingFlow נקראת עכשיו באמצעות המחלקה BillingFlowParams
כדי להתחיל את רצף פעולות החיוב של רכישה או מינוי, השיטה launchBillingFlow() מקבלת מופע BillingFlowParams שאותחל עם פרמטרים ספציפיים לבקשה:
Kotlin
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build() // Then, use the BillingFlowParams to start the purchase flow val responseCode = billingClient.launchBillingFlow(builder.build())
Java
BillingFlowParams.newBuilder().setSku(skuId) .setType(billingType) .setOldSku(oldSku) .build(); // Then, use the BillingFlowParams to start the purchase flow int responseCode = billingClient.launchBillingFlow(builder.build());
דרך חדשה לשאילת שאילתות לגבי מוצרים זמינים
הארגומנטים של השיטות queryPurchaseHistoryAsync() ו-querySkuDetailsAsync() עברו אריזה בתבנית Builder:
Kotlin
val params = SkuDetailsParams.newBuilder() params.setSkusList(skuList) .setType(itemType) billingClient.querySkuDetailsAsync(params.build(), object : SkuDetailsResponseListener() { ... })
Java
SkuDetailsParams.Builder params = SkuDetailsParams.newBuilder(); params.setSkusList(skuList) .setType(itemType); billingClient.querySkuDetailsAsync(params.build(), new SkuDetailsResponseListener() {...})
התוצאה מוחזרת עכשיו באמצעות קוד תוצאה ורשימה של אובייקטים SkuDetails, במקום מחלקת wrapper קודמת, כדי שיהיה לכם נוח יותר וכדי לשמור על עקביות ב-API שלנו:
Kotlin
fun onSkuDetailsResponse(@BillingResponse responseCode: Int, skuDetailsList: List<SkuDetails>)
Java
public void onSkuDetailsResponse(@BillingResponse int responseCode, List<SkuDetails> skuDetailsList)
הסדר של הפרמטרים השתנה בשיטה onConsumeResponse()
הסדר של הארגומנטים של onConsumeResponse בממשק ConsumeResponseListener השתנה כדי ליצור עקביות ב-API שלנו:
Kotlin
fun onConsumeResponse(@BillingResponse responseCode: Int, outToken: String)
Java
public void onConsumeResponse(@BillingResponse int responseCode, String outToken)
אובייקט PurchaseResult לא ארוז
הוסר העיטוף של PurchaseResult כדי לשמור על עקביות ב-API:
Kotlin
fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)
Java
void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)
תיקוני באגים
- No response code in PURCHASES_UPDATED Bundle
- פתרון בעיות שקשורות ל-ProxyBillingActivity ול-PurchasesUpdatedListener במהלך סיבוב המכשיר
גרסה ראשונה של תצוגה מקדימה למפתחים (12 ביוני 2017, הודעה)
השקנו תצוגה מקדימה למפתחים שמטרתה לפשט את תהליך הפיתוח בכל מה שקשור לחיוב, כדי לאפשר למפתחים להתמקד בהטמעה של לוגיקה ספציפית לאפליקציית Android, כמו ארכיטקטורת האפליקציה ומבנה הניווט.
הספרייה כוללת כמה מחלקות ותכונות נוחות לשימוש כשמשלבים את אפליקציות Android עם Google Play Billing API. הספרייה מספקת גם שכבת הפשטה מעל שירות Android Interface Definition Language (AIDL), וכך מקלה על מפתחים להגדיר את הממשק בין האפליקציה לבין Google Play Billing API.