במסמך הזה מפורטים נתוני הגרסה של ספריית החיובים ב-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()של תוסף 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 חסומה על ידי המערכת (לדוגמה, במצב מתאים לילדים בהתאמה אישית של OEM), קוד התגובה השתנה מ-
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 החדשים, עיינו במדריך השילוב.
- הוצאנו משימוש את ה-API של
BillingClient.Builder.enableExternalOffer. - הוצאנו משימוש את ה-API של
isExternalOfferAvailableAsync. - הוצאנו משימוש את ה-API של
createExternalOfferReportingDetailsAsync. - הוצאנו משימוש את ה-API של
showExternalOfferInformationDialog.
ספריית החיובים ב-Google Play: גרסה 8.1.0 (06.11.2025)
גרסה 8.1.0 של ספריית החיובים ב-Google Play ושל תוספי Kotlin זמינה עכשיו.
סיכום השינויים
מינויים מושעים
פרמטר חדש נוסף ל-method
BillingClient.queryPurchasesAsync()כדי לכלול מינויים מושעים כששולחים שאילתה לגבי מינויים. מינויים מושעים עדיין משויכים למשתמש, אבל הם לא פעילים, כי המשתמש השהה את המינוי או שאמצעי התשלום שלו לחידוש המינוי נדחה.האובייקט
Purchaseשמוחזר במאזין יחזיר את הערךisSuspended() = trueלכל מינוי מושהה. במקרה כזה, אל תתנו גישה למינוי שנרכש. במקום זאת, הפנו את המשתמש אל מרכז המינויים, שבו הוא יכול לנהל את אמצעי התשלום או את מצב ההשהיה כדי להפעיל מחדש את המינוי.עדכונים לגבי מינויים:
לאובייקט
BillingFlowParams.ProductDetailsParamsיש עכשיו את השיטהsetSubscriptionProductReplacementParams(), שבה אפשר לציין פרטי החלפה ברמת המוצר.לאובייקט
SubscriptionProductReplacementParamsיש שתי שיטות setter:-
setOldProductId: המוצר הישן שצריך להחליף במוצר ב-ProductDetailsהנוכחי. -
setReplacementMode: זהו מצב ההחלפה ברמת הפריט. המצבים זהים בעיקרון ל-SubscriptionUpdateParams, אבל מיפוי הערכים עודכן. הוספנו מצב החלפה חדש,KEEP_EXISTING, שמאפשר להשאיר את תוכנית התשלומים הקיימת של פריט מסוים ללא שינוי.
-
הפונקציה SubscriptionUpdateParams setSubscriptionReplacementMode תוצא משימוש. במקומה צריך להשתמש במדיניות
SubscriptionProductReplacementParams.setReplacementMode.
הערך של
minSdkVersionעודכן ל-23.הפעלנו ממשקי API להזמנה מראש של מוצרים בחיוב חד-פעמי
עכשיו אפשר להשתמש ב-API של
ProductDetails.oneTimePurchaseOfferDetails.getPreorderDetails()שמקבל את פרטי ההזמנה מראש.ספריית החיובים ב-Google Play תומכת עכשיו ב-Kotlin גרסה 2.2.0.
ספריית החיובים ב-Google Play: גרסה 8.0.0 (30.06.2025)
עכשיו אפשר להשתמש בגרסה 8.0.0 של ספריית החיובים ב-Google Play ושל תוספי Kotlin.
סיכום השינויים
פריטים באפליקציה ייקראו מעכשיו מוצרים בחיוב חד-פעמי.
כמה אפשרויות רכישה ומבצעים למוצרים בחיוב חד-פעמי.
עכשיו אתם יכולים להגדיר כמה אפשרויות רכישה ומבצעים למוצרים בחיוב חד-פעמי. כך אתם יכולים למכור את המוצרים שלכם בצורה גמישה יותר ולנהל אותם בקלות רבה יותר.
שיפור של השיטה
queryProductDetailsAsync().לפני גרסה 8.0.0 של ספריית החיוב של Google Play, השיטה
queryProductDetailsAsync()לא החזירה מוצרים שלא ניתן היה לאחזר. יכול להיות שהסיבה לכך היא שהמוצר לא נמצא או שאין מוצרים שזמינים למשתמש. ב-PBL בגרסה 8.0.0, מוצרים שלא אוחזרו מוחזרים עם קוד סטטוס חדש ברמת המוצר שמספק מידע על מוצרים שלא אוחזרו. שימו לב שחל שינוי בחתימה שלProductDetailsResponseListener.onProductDetailsResponse(), ולכן צריך לבצע שינויים באפליקציה. מידע נוסף זמין בקטע עיבוד התוצאה.חיבור מחדש אוטומטי לשירות.
הפרמטר החדש של ה-builder
BillingClient.Builder.enableAutoServiceReconnection()מאפשר למפתחים להצטרף לחיבור מחדש אוטומטי לשירות. כך קל יותר לנהל את החיבורים כי החיבורים מחדש לשירות החיוב ב-Play מתבצעים באופן אוטומטי, ואין צורך להפעיל ידנית אתstartConnection()במקרה של ניתוק מהשירות. מידע נוסף זמין במאמר חיבור מחדש באופן אוטומטי.קודי תגובות משנה ל-method
launchBillingFlow().האובייקט BillingResult שמוחזר מ-
launchBillingFlow()יכלול עכשיו שדה של קוד תגובת משנה. השדה הזה יאוכלס רק במקרים מסוימים, כדי לספק סיבה ספציפית יותר לכישלון. השדה של תגובת המשנה יכול לכלול את הערכים הבאים:-
PAYMENT_DECLINED_DUE_TO_INSUFFICIENT_FUNDS– מוחזר כשהסכום שיש למשתמש קטן ממחיר הפריט שהוא מנסה לרכוש. -
USER_INELIGIBLE– מוחזר כשהמשתמש לא עומד בדרישות הסף שהוגדרו למבצע על מינוי. -
NO_APPLICABLE_SUB_RESPONSE_CODE– ערך ברירת המחדל, שמוחזר כשאין קוד תגובת משנה רלוונטי אחר.
-
השיטה
queryPurchaseHistory()הוסרה.ה-method
queryPurchaseHistory()שסומנה בעבר כהוצאה משימוש הוסרה. במאמר שאילתה על היסטוריית הרכישות מפורט מידע על ממשקי API חלופיים שבהם אפשר להשתמש במקום זאת.השיטה
querySkuDetailsAsync()הוסרה.ה-method
querySkuDetailsAsync()שסומנה בעבר כהוצאה משימוש הוסרה. במקום זאת, צריך להשתמש ב-queryProductDetailsAsync.השיטה
BillingClient.Builder.enablePendingPurchases()הוסרה.ה-method
enablePendingPurchases()ללא פרמטרים, שסומנה בעבר כהוצאה משימוש, הוסרה. במקום זאת, אתם צריכים להשתמש ב-enablePendingPurchases(PendingPurchaseParams params). שימו לב שהפונקציהenablePendingPurchases()שהוצאה משימוש זהה מבחינה פונקציונלית לפונקציהenablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()).הסרנו את השיטה העמוסה
queryPurchasesAsync()שמקבלת skuType.ה-method
queryPurchasesAsync(String skuType, PurchasesResponseListener listener)שסומנה בעבר כהוצאה משימוש הוסרה. אפשר גם להשתמש ב-queryPurchasesAsync(QueryPurchasesParams queryPurchasesParams, PurchasesResponseListener listener).
ספריית החיובים ב-Google Play: גרסה 7.1.1 (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 זמינה עכשיו.
סיכום השינויים
- שיפור ב-thread safety שקשור לסטטוס החיבור ולניהול שלו.
- הוספנו שינויים חלקיים לבדיקת קודי התגובה של
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) של המאזין.
- במקום זאת, המפתחים צריכים להשתמש ב-
הוסרו
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()כדי לאחזר את הרכישות הפעילות. - רכישות שנצרכו: המפתחים צריכים לעקוב אחרי רכישות שנצרכו בשרתים שלהם.
- רכישות שבוטלו: משתמשים ב-API למפתחים voided-purchases.
- פרטים נוספים זמינים במאמר שאילתה על היסטוריית הרכישות.
- רכישות שאושרו ורכישות בהמתנה: משתמשים ב-
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, שסומנו בעבר כשיטות שהוצאו משימוש, הוסרו עכשיו בגרסה 6.0.0 של ספריית החיובים של Play. המפתחים צריכים להשתמש ב-queryPurchasesAsyncבמקום ב-queryPurchases. למידע על חלופות ל-launchPriceConfirmationFlow, קראו את המאמר שינויים במחירים.נוסף קוד תגובה חדש לשגיאה בחיבור לרשת.
החל מגרסה 6.0.0 של ספריית החיובים ב-Play, נוסף קוד תגובה חדש לשגיאה בחיבור לרשת:
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.
גרסה 5.2 של ספריית החיובים ב-Google Play (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()כדי לאחזר את מזהה המבצע. - הוספנו את ה-method
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. אחרי שתסירו את השיטה הזו, המשתמשים ישלימו את הרכישה בתהליך הרכישה הרגיל.
גרסה 4.1 של ספריית החיובים ב-Google Play (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.הוספנו את ה-method
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.
גרסה 3.0.3 של ספריית החיובים ב-Google Play (12.03.2021)
גרסה 3.0.3 של ספריית החיובים ב-Google Play, תוסף Kotlin ופלאגין Unity זמינים עכשיו.
תיקוני באגים ב-Java וב-Kotlin
- תיקון דליפת זיכרון כשמתבצעת קריאה ל-
endConnection(). - תיקון בעיה שבה אפליקציות שמשתמשות במצב הפעלה של משימה אחת משתמשות בספריית החיובים ב-Google Play.
onPurchasesUpdated()מופעלת כשמפעילים מחדש אפליקציה ממרכז האפליקציות של Android, ותיבת הדו-שיח של החיוב הייתה גלויה לפני ההשעיה.
תיקוני באגים ב-Unity
- צריך לעדכן לגרסה 3.0.3 של Java כדי לתקן את דליפת הזיכרון ולפתור את הבעיה שמונעת רכישות כשהאפליקציה ממשיכה לפעול ממרכז האפליקציות של Android ותיבת הדו-שיח של החיוב הייתה גלויה לפני ההשעיה.
ספריית החיובים ב-Google Play: גרסה 3.0.2 (24.11.2020)
גרסה 3.0.2 של ספריית החיובים ב-Google Play ושל התוסף של Kotlin זמינה עכשיו.
תיקוני באגים
- תוקן באג בתוסף Kotlin שבו הקורוטינה נכשלת עם השגיאה "כבר חודש".
- תוקנו הפניות לא פתורות כשמשתמשים בתוסף 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 זמינה עכשיו.
תיקוני באגים
- עדכנו את גרסת ברירת המחדל של ספריית החיובים ב-Java Play שתוסף Kotlin תלוי בה.
גרסה 2.2.0 של ספריית החיובים ב-Google Play ותמיכה ב-Unity (23.03.2020)
גרסה 2.2.0 של החיוב ב-Google Play מספקת פונקציונליות שעוזרת למפתחים לוודא שהרכישות משויכות למשתמש הנכון. השינויים האלה מחליפים את הצורך לבנות פתרונות בהתאמה אישית שמבוססים על מטען ייעודי (payload) למפתחים. במסגרת העדכון הזה, הפונקציונליות של מטען ייעודי (payload) למפתחים הוצאה משימוש ותוסר בגרסה עתידית. מידע נוסף, כולל חלופות מומלצות, זמין במאמר מטען ייעודי (payload) למפתחים.
ספריית החיובים ב-Google Play גרסה 2 ל-Unity
בנוסף לגרסאות Java ו-Kotlin הקיימות של ספריית החיובים ב-Google Play בגרסה 2, השקנו גרסה של הספרייה לשימוש עם Unity. מפתחי משחקים שמשתמשים ב-API של Unity לרכישות באפליקציה יכולים לשדרג עכשיו כדי ליהנות מכל התכונות של ספריית החיובים ב-Google Play בגרסה 2, וכדי להקל על השדרוגים הבאים לגרסאות עתידיות של ספריית החיובים ב-Google Play.
מידע נוסף זמין במאמר שימוש במערכת החיוב של Google Play עם Unity.
סיכום השינויים
- ספריית החיובים ב-Google Play ב-Java
- ב-
AcknowledgePurchaseParams, הוצאנו משימוש את ה-methodssetDeveloperPayload()ו-getDeveloperPayload(). - ב-
ConsumeParams, השיטותsetDeveloperPayload()ו-getDeveloperPayload()הוצאו משימוש. - בגרסה
BillingFlowParams, שינינו את השם שלsetAccountId()ל-setObfuscatedAccountId(), והוספנו תיעוד לגבי הגבלת האורך ל-64 תווים והגבלה שאוסרת על הכללת פרטים אישיים מזהים (PII) בשדה הזה.setAccountId()הוצא משימוש ויוסר בגרסה עתידית של הספרייה. - ב-
BillingFlowParams, הוספנו אתsetObfuscatedProfileId()שפועל באופן דומה ל-setObfuscatedAccountId(). מידע נוסף זמין במאמר עדכונים וחלופות למטען הייעודי (payload) למפתחים. - בגרסה
Purchase, הוספנו את השיטהgetAccountIdentifiers()כדי להחזיר את מזהי החשבון המעורפלים שהוגדרו ב-BillingFlowParams. - בגרסה
BillingClient, השיטהloadRewardedSku()הוצאה משימוש כחלק מהוצאה משימוש של מק"טים מתגמלים.
- ב-
ספריית החיובים ב-Google Play: גרסה 2.1.0 ותוסף Kotlin: גרסה 2.1.0 (10.12.2019)
גרסה 2.1.0 של ספריית החיובים ב-Google Play והתוסף החדש של Kotlin זמינים עכשיו. התוסף של ספריית החיובים ב-Play ל-Kotlin מספק חלופות 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.
במינויים, צריך לאשר כל רכישה שיש לה אסימון רכישה חדש. כלומר, צריך לאשר את כל הרכישות הראשוניות, השינויים בתוכניות וההרשמות מחדש, אבל לא צריך לאשר את החידושים הבאים. כדי לבדוק אם צריך לאשר רכישה, אפשר לבדוק את שדה האישור ברכישה.
האובייקט Purchase כולל עכשיו את ה-method isAcknowledged() שמציין אם הרכישה אושרה. בנוסף, ממשק ה-API של Google Play למפתחים כולל ערכים בוליאניים של אישור גם ל-Purchases.products וגם ל-Purchases.subscriptions.
לפני שמאשרים רכישה, חשוב להשתמש בשיטות האלה כדי לבדוק אם הרכישה כבר אושרה.
אפשר לאשר רכישה באחת מהשיטות הבאות:
- למוצרים מתכלים, משתמשים ב-
consumeAsync(), שנמצא ב-API של הלקוח. - למוצרים שלא נצרכים, משתמשים ב-
acknowledgePurchase(), שנמצא ב-API של הלקוח. - ב-Server API יש גם שיטה חדשה בשם
acknowledge().
הפונקציה BillingFlowParams.setSku() הוסרה
ה-method BillingFlowParams#setSku() שהוצאה משימוש בעבר הוסרה בגרסה הזו. לפני עיבוד המוצרים בתהליך הרכישה, צריך להפעיל את BillingClient.querySkuDetailsAsync() ולהעביר את האובייקט SkuDetails שנוצר אל BillingFlowParams.Builder.setSkuDetails().
דוגמאות קוד זמינות במאמר שימוש בספריית החיובים ב-Google Play.
יש תמיכה במטען ייעודי (payload) של מפתחים
גרסה 2.0 של ספריית החיובים ב-Google Play מוסיפה תמיכה במטען ייעודי (payload) למפתחים – מחרוזות שרירותיות שאפשר לצרף לרכישות. אפשר לצרף פרמטר של מטען ייעודי (payload) של מפתח לרכישה, אבל רק כשהרכישה מאושרת או מנוצלת. זה שונה ממטען ייעודי (payload) של מפתח ב-AIDL, שבו אפשר לציין את המטען הייעודי כשמפעילים את תהליך הרכישה. עכשיו אפשר להתחיל רכישות מחוץ לאפליקציה, והשינוי הזה מבטיח שתמיד תהיה לכם הזדמנות להוסיף מטען ייעודי (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 וגם מטען ייעודי (payload) אופציונלי למפתחים.
הגרסה הקודמת של 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 הראשי.
שינויים אחרים
- למרות שעדיין מומלץ להשתמש ב-main thread, עכשיו אפשר ליצור מופע של ספריית החיובים ב-Google Play מ-background thread.
- ההפעלה הועברה באופן מלא לשרשור ברקע כדי להפחית את הסיכוי לגרום לשגיאות ANR.
ספריית החיובים ב-Play: גרסה 1.2.1 (04.03.2019)
גרסה 1.2.1 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
שינויים עיקריים
- הוספנו תמיכה במוצרים מתגמלים. מידע נוסף על אפשרויות המונטיזציה זמין במאמר הוספת תכונות ספציפיות למוצרים מתגמלים.
שינויים אחרים
- הוספנו פונקציות בנאי ציבוריות ל-
PurchasesResultול-SkuDetailsResultכדי להקל על הבדיקה. - אובייקטים מסוג
SkuDetailsיכולים להשתמש ב-method חדש,getOriginalJson(). - כל הקריאות לשירות AIDL מטופלות עכשיו על ידי שרשורים ברקע.
תיקוני באגים
- מאזינים של קריאות חוזרות (callback) מסוג null לא מועברים יותר לממשקי API ציבוריים.
ספריית החיובים ב-Google Play: גרסה 1.2 (18.10.2018)
גרסה 1.2 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
סיכום השינויים
- ספריית החיובים ב-Google Play פועלת עכשיו ברישיון של הסכם הרישיון של ערכת פיתוח התוכנה ל-Android.
- הוספנו את ה-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(), כמו שמוצג בקטע הקוד הבא:
במחלקה BillingFlowParams Builder, השיטה setSku() הוצאה משימוש. במקום זאת, צריך להשתמש ב-method setSkuDetails(), כמו שמוצג בקטע הקוד הבא. האובייקט שמועבר לאובייקט setSkuDetails() מגיע מה-method 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) לתגובות שנכשלו
ספריית החיובים תמיד תפעיל את הקריאה החוזרת (callback) של PurhcasesUpdatedListener ותחזיר BillingResponse באופן אסינכרוני. גם הערך המוחזר הסינכרוני של BillingResponse נשמר.
תיקוני באגים
- יציאה מוקדמת תקינה בשיטות אסינכרוניות כשהשירות מנותק.
Builderאובייקטים של פרמטרים לא משנים יותר אובייקטים מובנים.- בעיה 68087141:
launchBillingFlow()מפעיל עכשיו קריאה חוזרת (callback) לתגובות שנכשלו.
ספריית החיובים ב-Google Play: גרסה 1.0 (19.09.2017, הודעה)
גרסה 1.0 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו כוללת את השינויים הבאים.
שינויים חשובים
- הרשאת חיוב מוטמעת במניפסט של הספרייה. אין יותר צורך להוסיף את ההרשאה
com.android.vending.BILLINGבמניפסט של Android. - נוסף בונה חדש למחלקה
BillingClient.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)
תיקוני באגים
- אין קוד תגובה ב-Bundle של PURCHASES_UPDATED
- פתרון בעיות ב-ProxyBillingActivity וב-PurchasesUpdatedListener במהלך סיבוב המכשיר
גרסה 1 של תצוגה מקדימה למפתחים (12 ביוני 2017, הודעה)
השקנו את גרסת תצוגה מקדימה למפתחים, שנועדה לפשט את תהליך הפיתוח בכל הקשור לחיוב, כדי לאפשר למפתחים להתמקד בהטמעת לוגיקה ספציפית לאפליקציה ל-Android, כמו ארכיטקטורת האפליקציה ומבנה הניווט.
הספרייה כוללת כמה מחלקות ותכונות נוחות לשימוש כשמשלבים את האפליקציות ל-Android עם Google Play Billing API. הספרייה גם מספקת שכבת הפשטה מעל שירות שפת ההגדרה לבניית ממשק Android (AIDL), וכך מקלה על המפתחים להגדיר את הממשק בין האפליקציה לבין Google Play Billing API.