נתוני הגרסה של ספריית החיובים ב-Google Play

הנושא הזה מכיל נתוני גרסה של ספריית החיובים ב-Google Play.

גרסה 7.0.0 של ספריית החיובים ב-Google Play (14.05.2024)

גרסה 7.0.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

סיכום השינויים

גרסה 6.2.1 של ספריית החיובים ב-Google Play (16.04.2024)

גרסה 6.2.1 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

סיכום השינויים

גרסה 6.2.0 של ספריית החיובים ב-Google Play (06.03.2024)

גרסה 6.2.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

סיכום השינויים

גרסה 6.1.0 של ספריית החיובים ב-Google Play (14.11.2023)

גרסה 6.1.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

סיכום השינויים

גרסה 6.0.1 של ספריית החיובים ב-Google Play (22.06.2023)

גרסה 6.0.1 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

סיכום השינויים

מעדכנים את ספריית החיובים ב-Play כך שתהיה תואמת ל-Android 14.

גרסה 6.0 של ספריית החיובים ב-Google Play (10.05.2023)

גרסה 6.0.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

סיכום השינויים

  • נוספה הודעה חדשה ReplacementMode enum להחלפה ProrationMode

    חשוב לדעת ש-ProrationMode עדיין זמין לצורך תאימות לאחור סיבות נוספות.

  • הוסר מזהה ההזמנה של PENDING רכישות.

    בעבר, מזהה ההזמנה תמיד ייווצר, גם אם הרכישה בהמתנה. החל מגרסה 6.0.0, לא ייווצר מזהה הזמנה עבור ברכישות ממתינות, ומזהה ההזמנה של הרכישות האלה יאוכלס אחרי שהרכישה מועברת PURCHASED .

  • הוסרו queryPurchases ו-launchPriceConfirmationFlow שיטות.

    השיטות queryPurchases ו-launchPriceConfirmationFlow שמכילות סומנו בעבר כ'הוצא משימוש' הוסרו עכשיו מ'חיוב ב-Play' ספרייה מפתחים צריכים להשתמש queryPurchasesAsync במקום queryPurchases. בשביל חלופות launchPriceConfirmationFlow, לשינויים במחיר

  • נוסף קוד תגובה חדש לשגיאה בחיבור לרשת.

    קוד תגובה חדש לשגיאה בחיבור לרשת, NETWORK_ERROR נוספה החל מגרסה 6.0.0 של PBL. הקוד הזה מוחזר כאשר אירעה שגיאה בחיבור לרשת. החיבורים לרשתות האלה דווחו בעבר כשגיאות כ-SERVICE_UNAVAILABLE.

  • עודכן לאחרונה SERVICE_UNAVAILABLE וגם SERVICE_TIMEOUT

    החל מגרסה 6.0.0 של תוכנית PBL, שגיאות שהתוקף שלהן יפוג במהלך העיבוד הערך הוחזר בתור SERVICE_UNAVAILABLE במקום הערך הנוכחי של SERVICE_TIMEOUT.

    ההתנהגות לא משתנה בגרסאות הקודמות של PBL.

  • הוסר/ה SERVICE_TIMEOUT

    החל מגרסה 6.0.0 של ספריית החיובים ב-Play, לא יוחזרו יותר SERVICE_TIMEOUT. גרסאות קודמות של PBL עדיין יחזירו את הקוד הזה.

  • נוסף רישום ביומן.

    הגרסה של ספריית החיובים ב-Play 6 כוללת רישום ביומן נוסף, שמאפשר תובנות לגבי השימוש ב-API (כמו הצלחה או כישלון) וחיבור השירות בעיות נפוצות. המידע הזה ישמש לשיפור הביצועים של Play ספריית החיובים ותמיכה טובה יותר בשגיאות.

גרסה 5.2.1 של ספריית החיובים ב-Google Play (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 זמינים עכשיו זמינים.

סיכום השינויים

גרסה 5.1 של ספריית החיובים ב-Google Play (31.10.2022)

גרסה 5.1.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

הגרסה הזו כוללת את השינויים הבאים.

סיכום השינויים

גרסה 5.0 של ספריית החיובים ב-Google Play (11.05.2022)

גרסה 5.0.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

הגרסה הזו כוללת את השינויים הבאים.

סיכום השינויים

  • הושקה מודל חדש למינויים, כולל ישויות חדשות מאפשרות ליצור מספר הצעות בחשבון מוצר מסוג מינוי. מידע נוסף זמין במאמר המדריך להעברת נתונים (מיגרציה).
  • תאריך ההוספה BillingClient.queryProductDetailsAsync() כדי להחליף את BillingClient.querySkuDetailsAsync().
  • השיטה setIsOfferPersonalized() נוספה לתמחור מותאם אישית באיחוד האירופי הדרישות לגבי גילוי נאות. למידע נוסף על אופן השימוש בשיטה הזו: ציון מחיר מותאם אישית.
  • בוצעה הסרה של queryPurchases(), שהוצא משימוש בעבר והוחלף ב- queryPurchasesAsync נוספה בספריית החיובים של Google Play בגרסה 4.0.0.
  • האפשרות launchPriceChangeFlow הוצאה משימוש ותוסר בעתיד גרסה חדשה. למידע נוסף על חלופות, אפשר לבקר בכתובת מפעילים תהליך אישור של שינוי המחיר.
  • הוסר/ה setVrPurchaseFlow() ששימשה בעבר ליצירת תהליך רכישה. בגרסאות קודמות, השיטה הזו הפנתה את המשתמש אל להשלים את הרכישה במכשיר Android שלהם. לאחר ההסרה בשיטה הזו, משתמשים ישלימו את הרכישה תהליך רכישה רגיל.

גרסה 4.1 של ספריית החיובים ב-Google Play (23.02.2022)

גרסה 4.1.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

הגרסה הזו כוללת את השינויים הבאים.

סיכום השינויים

גרסה 4.0 של ספריית החיובים ב-Google Play (18.05.2021)

גרסה 4.0.0 של ספריית החיובים ב-Google Play והתוספים של Kotlin זמינים עכשיו זמינים.

סיכום השינויים

גרסה 3.0.3 של ספריית החיובים ב-Google Play (12.03.2021)

גרסה 3.0.3 של ספריית החיובים ב-Google Play, תוסף Kotlin ו-Unity יישומי הפלאגין זמינים עכשיו.

תיקוני באגים ב-Java ו-Kotlin

  • תיקון דליפת זיכרון כאשר endConnection() נקראת.
  • פתרון בעיה כשספריית החיובים של Google Play נמצאת בשימוש באפליקציות שמשתמשות מצב ההשקה של משימה יחידה. א' onPurchasesUpdated() הקריאה החוזרת (callback) תופעל כשממשיכים אפליקציה מסוימת ממרכז האפליקציות של Android ותיבת הדו-שיח של החיוב הוצגה לפני ההשעיה.

תיקוני באגים ב-Unity

  • צריך לעדכן לגרסה 3.0.3 של Java כדי לתקן דליפת זיכרון ולפתור את הבעיה שמונעת רכישות כשממשיכים אפליקציה מסוימת ממרכז האפליקציות של Android ומהחיוב הייתה גלויה לפני ההשעיה.

גרסה 3.0.2 של ספריית החיובים ב-Google Play (24.11.2020)

גרסה 3.0.2 של ספריית החיובים ב-Google Play והתוסף Kotlin זמינות עכשיו.

תיקוני באגים

  • תוקן באג בתוסף Kotlin שגרם לכך שהקורוטין נכשל עם השגיאה "כבר הופעל".
  • תוקנו הפניות שלא נפתרו כשמשתמשים בתוסף Kotlin עם ספריית kotlinx.coroutines מגרסה 1.4 ואילך.

גרסה 3.0.1 של ספריית החיובים ב-Google Play (30.09.2020)

גרסה 3.0.1 של ספריית החיובים ב-Google Play והתוסף Kotlin זמינות עכשיו.

תיקוני באגים

  • תוקן באג שגרם לכך שהאפליקציה נהרגה ושוחזרה במהלך תהליך החיוב, לא ניתן להתקשר אל PurchasesUpdatedListener עם תוצאת הרכישה.

גרסה 3.0 של ספריית החיובים ב-Google Play (8.06.2020)

גרסה 3.0.0 של ספריית החיובים ב-Google Play, תוסף Kotlin ולפלאגין Unity זמינים עכשיו.

סיכום השינויים

  • הוסרה התמיכה במק"ט מתגמל.
  • הסרת את הפרמטרים ChildDirected ו-UnderAgeOfConsent.
  • הוסרו שיטות מטען ייעודי (payload) של מפתחים שהוצאו משימוש.
  • הוסרו שיטות שהוצאו משימוש BillingFlowParams.setAccountId() ו-BillingFlowParams.setDeveloperId().
  • הוסרו שיטות שהוצאו משימוש BillingFlowParams.setOldSkus(String oldSku) ו-BillingFlowParams.addOldSku(String oldSku).
  • נוספו הערות עם אפשרות null.

תיקוני באגים

  • SkuDetails.getIntroductoryPriceCycles() הפונקציה מחזירה int במקום String.
  • תוקן באג שבמסגרתו תהליך החיוב נחשב כמכיל פרמטרים נוספים גם אם לא הוגדרו פרמטרים נוספים.

גרסה 2.2.1 של ספריית החיובים ב-Google Play (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.

סיכום השינויים

גרסה 2.1.0 של ספריית החיובים ב-Google Play ותוסף Kotlin בגרסה 2.1.0 (10.12.2019)

גרסה 2.1.0 של ספריית החיובים ב-Google Play ותוסף Kotlin החדש זמינים עכשיו. התוסף Kotlin של ספריית החיובים ב-Play מספק אידיומטי חלופות API לצריכת Kotlin עם בטיחות null טובה יותר וקורוטינים. דוגמאות לקוד זמינות שימוש בספריית החיובים של Google Play.

הגרסה הזו כוללת את השינויים הבאים.

סיכום השינויים

  • ב-BillingFlowParams, setOldSku(String oldSku) הוצא משימוש והוחלף ב- setOldSku(String oldSku, String purchaseToken), כדי להבחין מתי כמה חשבונות במכשיר הם הבעלים של אותו מק"ט.

גרסה 2.0.3 של ספריית החיובים ב-Google Play (05.08.2019)

גרסה 2.0.3 של ספריית החיובים ב-Google Play זמינה עכשיו.

תיקוני באגים

  • תוקן באג שגרם לכשלים של querySkuDetailsAsync() עם קוד מדי פעם DEVELOPER_ERROR במקום להחזיר תוצאה מוצלחת.

גרסה 2.0.2 של ספריית החיובים ב-Google Play (08.07.2019)

גרסה 2.0.2 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו מכיל עדכונים למסמכי העזר ולא משנה את הספרייה החדשה.

גרסה 2.0.1 של ספריית החיובים ב-Google Play (06.06.2019)

גרסה 2.0.1 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו מכיל את השינויים הבאים.

תיקוני באגים

  • תוקן באג שבו הודעות ניפוי באגים הוחזרו כ-null במקרים מסוימים.
  • תוקנה בעיה אפשרית של דליפת זיכרון.

גרסה 2.0 של ספריית החיובים ב-Google Play (7.05.2019)

גרסה 2.0 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו מכיל את השינויים הבאים.

חובה לאשר את הרכישה תוך שלושה ימים

Google Play תומכת ברכישת מוצרים מתוך האפליקציה שלכם (מתוך האפליקציה) או מחוץ לאפליקציה (מחוץ לאפליקציה). כדי ש-Google Play יוכל להבטיח חוויית רכישה עקבית, ללא קשר למקום שבו המשתמש רוכש את חובה לאשר את כל הרכישות שהתקבלו דרך Google Play ספריית החיובים בהקדם האפשרי אחרי הענקת הרשאה למשתמש. אם המיקום לא אישרתם רכישה תוך שלושה ימים, המשתמש מקבל החזר כספי, ו-Google Play מבטלת את הרכישה. עבור עסקאות ממתינות (חדשה בגרסה 2.0), חלון של שלושה ימים מתחיל כשהרכישה עוברת למצב PURCHASED ולא חלה בזמן שהרכישה במצב PENDING.

לגבי מינויים, צריך לאשר כל רכישה שיש בה רכישה חדשה ב-Assistant. המשמעות היא שכל הרכישות הראשוניות, השינויים בתוכנית וההרשמות מחדש נדרשים שצריך להכיר, אבל לא צריך לאשר חידושים נוספים. שפת תרגום בודקים אם נדרש אישור על רכישה, אפשר לבדוק את האישור בשדה הרכישה.

האובייקט Purchase כולל עכשיו isAcknowledged() שיטה שמציינת אם הרכישה אושרה. בנוסף, Google Play Developer API כולל ערכים בוליאניים לאישור עבור שניהם Purchases.products ו-Purchases.subscriptions. לפני שמאשרים רכישה, חשוב להשתמש בשיטות האלה כדי לקבוע אם הרכישה כבר אושרה.

אפשר לאשר רכישה באחת מהשיטות הבאות:

  • למוצרים מתכלים, צריך להשתמש בפונקציה consumeAsync(), שנמצא ב-API של הלקוח.
  • למוצרים שלא מתכלים, צריך להשתמש במאפיין acknowledgePurchase(), שנמצא ב ב-API של הלקוח.
  • שיטת acknowledge() חדשה זמינה גם ב-Server API.

BillingFlowParams.setSku() הוסרה

השיטה 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 מכיל שיטות חדשות לאחזור מחיר המק"ט המקורי:

עסקאות ממתינות

בגרסה 2.0 של ספריית החיובים ב-Google Play, חובה לתמוך רכישות שבהן נדרשת פעולה נוספת לפני הענקת הרשאה. עבור לדוגמה, משתמש עשוי לבחור לקנות את המוצר מתוך האפליקציה בחנות פיזית באמצעות כסף מזומן. המשמעות היא שהעסקה הושלמה מחוץ לאפליקציה. לחשבון בתרחיש זה, יש להעניק הרשאה רק לאחר שהמשתמש ישלים את התהליך העסקה.

כדי להפעיל רכישות בהמתנה, צריך להתקשר enablePendingPurchases() כחלק מאתחול האפליקציה.

שימוש ב-Purchase.getPurchaseState() כדי לקבוע אם מצב הרכישה הוא PURCHASED או PENDING. שימו לב יש להעניק הרשאה רק כשהמדינה היא PURCHASED. אתם צריכים אפשר לבדוק אם יש עדכוני סטטוס של Purchase באופן הבא:

  1. כשמפעילים את האפליקציה, צריך להתקשר BillingClient.queryPurchases() כדי לאחזר את רשימת המוצרים שלא צורכים המשויכים למשתמש.
  2. קוראים לפונקציה Purchase.getPurchaseState() בכל אובייקט Purchase שהוחזר.
  3. הטמעת onPurchasesUpdated() שמגיבה לשינויים באובייקטים Purchase.

בנוסף, Google Play Developer API כולל מצב PENDING עבור Purchases.products. אין תמיכה בעסקאות בהמתנה עבור למינויים.

הגרסה הזו כוללת גם סוג חדש של התראות בזמן אמת למפתחים, OneTimeProductNotification סוג ההתראה הזה מכיל הודעה אחת שהערך שלו הוא ONE_TIME_PRODUCT_PURCHASED או ONE_TIME_PRODUCT_CANCELED. סוג ההתראה הזה נשלח רק לגבי רכישות שקשורה לעיכוב בתשלום, כמו מזומן.

כשמאשרים רכישות בהמתנה, חשוב לציין את האישור רק מצב הרכישה הוא PURCHASED ולא PENDING.

שינויים ב-API

גרסה 2.0 של ספריית החיובים ב-Google Play כוללת מספר שינויים בממשק ה-API של תמיכה בתכונות חדשות והבהרת פונקציונליות קיימת.

צריכה אסינכרונית

consumeAsync() עכשיו לוקח אובייקט ConsumeParams במקום purchaseToken. ConsumeParams מכיל את purchaseToken בתור וגם מטען ייעודי (payload) אופציונלי של מפתחים.

הגרסה הקודמת של consumeAsync() הוסרה בגרסה הזו.

queryPurchaseHistoryAsync

כדי להפחית את הסיכוי לבלבול, queryPurchaseHistoryAsync() מחזירה PurchaseHistoryRecord במקום אובייקט Purchase. האובייקט PurchaseHistoryRecord הוא זהה לאובייקט Purchase, מלבד העובדה שהוא משקף רק את הערכים שהוחזרו על ידי queryPurchaseHistoryAsync() ולא מכיל את autoRenewing, orderId ו-packageName שדות. שימו לב ששום דבר לא השתנה עם נתונים שהוחזרו — queryPurchaseHistoryAsync() מחזירה את אותם נתונים כמו לפני.

הערכים המוחזרים של Billing result

ממשקי API שהחזירו בעבר ערך מסוג מספר שלם BillingResponse מחזירים עכשיו BillingResult לאובייקט. BillingResult מכיל את המספר השלם BillingResponse וגם מחרוזת לניפוי באגים שבה אפשר להשתמש כדי לאבחן שגיאות. מחרוזת ניפוי הבאגים מבוססת על en-US וגם לא מיועד להצגה למשתמשי קצה.

תיקוני באגים

ספריית החיובים ב-Google Play גרסה 1.2.2 (07.03.2019)

גרסה 1.2.2 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו מכיל את השינויים הבאים.

תיקוני באגים

  • תוקנה בעיה בקשר לשרשורים בגרסה 1.2.1. שיחות ברקע לא חסומות יותר בשרשור הראשי.

שינויים נוספים

  • למרות שעדיין מומלץ להשתמש ב-thread הראשי, אפשר עכשיו ליצור ספריית החיובים ב-Google Play משרשור ברקע.
  • יצירת האובייקט הועברה באופן מלא לשרשור ברקע כדי לצמצם את יש סיכוי לשגיאות ANR.

מהדורה 1.2.1 של ספריית החיובים ב-Play (04.03.2019)

גרסה 1.2.1 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו מכיל את השינויים הבאים.

שינויים עיקריים

שינויים נוספים

  • נוספו בנאים ציבוריים עבור PurchasesResult ו-SkuDetailsResult כדי ליצור לבצע בדיקות בקלות רבה יותר.
  • SkuDetails אובייקטים יכולים להשתמש בשיטה חדשה, getOriginalJson().
  • כל הקריאות לשירות AIDL מטופלות עכשיו באמצעות תהליכונים ברקע.

תיקוני באגים

  • פונקציות קריאה חוזרת (callback) ללא שגיאות לא יועברו יותר לממשקי API ציבוריים.

גרסה 1.2 של ספריית החיובים ב-Google Play (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, השיטה setSku() הוצאה משימוש. השינוי הזה נועד לאופטימיזציה של תהליך החיוב ב-Google Play.

כשיוצרים מופע חדש של BillingFlowParams בחיוב על רכישות באפליקציות אנחנו ממליצים לעבוד במקום זאת עם אובייקט ה-JSON ישירות באמצעות setSkuDetails(), כפי שמוצג בקטע הקוד הבא:

בכיתת Builder BillingFlowParams, השיטה setSku() הוצא משימוש. במקום זאת, צריך להשתמש בשיטה 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();
}

גרסה 1.1 של ספריית החיובים ב-Play (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() מפעיל עכשיו קריאה חוזרת לתשובות שנכשלו

ספריית החיובים תמיד תפעיל את הפרמטר PurhcasesUpdatedListener התקשרות חזרה והחזרת BillingResponse באופן אסינכרוני. הערך המוחזר הסינכרוני של BillingResponse גם נשמרת.

תיקוני באגים

  • יציאה תקינה בשלב מוקדם ב-methods אסינכרוניות כשהשירות מנותק.
  • Builder אובייקטים של פרמטרים לא ישנו יותר אובייקטים שנוצרו.
  • בעיה 68087141: launchBillingFlow() להפעיל קריאה חוזרת (callback) לתשובות שנכשלו.

גרסה 1.0 של ספריית החיובים ב-Google Play (19.09.2017, הודעה)

גרסה 1.0 של ספריית החיובים ב-Google Play זמינה עכשיו. הגרסה הזו מכיל את השינויים הבאים.

שינויים חשובים

  • הרשאת חיוב מוטמעת במניפסט של הספרייה. לא צריך להוסיף את התג ההרשאה com.android.vending.BILLING בתוך המניפסט של Android.
  • Builder חדש נוסף אל BillingClient.Builder בכיתה.
  • הוצג דפוס ה-builder של SkuDetailsParams שישמשו ב-methods לשליחת שאילתות לגבי מק"טים.
  • מספר שיטות API עודכנו כדי לשמור על עקביות (אותו סדר ושמות של ארגומנטים להחזרה).

שינויים בהתנהגות

גרסה 1.0 של ספריית החיובים ב-Google Play כוללת את ההתנהגות הבאה שינויים.

סיווג BillingClient.Builder

BillingClient.Builder מאותחל עכשיו באמצעות תבנית ה-Builder החדשה:

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() ה-methods נכללו בדפוס 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)

אובייקט purchase result שלא ארוז

PurchaseResult נפתחה כך שתהיה עקבית בכל ה-API שלנו:

Kotlin

fun onPurchaseHistoryResponse(@BillingResponse responseCode: Int, purchasesList: List<Purchase>)

Java

void onPurchaseHistoryResponse(@BillingResponse int responseCode, List<Purchase> purchasesList)

תיקוני באגים

גרסה 1 של תצוגה מקדימה למפתחים (12.06.2017, הודעה)

השקנו תצוגה מקדימה למפתחים, שנועדה לפשט את תהליך הפיתוח בכל הנוגע לחיוב, ומאפשרת למפתחים למקד את המאמצים בהטמעת לוגיקה ספציפית לאפליקציה ל-Android, כמו של ארכיטקטורת האפליקציות ומבנה הניווט.

הספרייה כוללת מספר תכונות ומחלקות נוחים לשימוש במהלך השילוב אפליקציות ל-Android עם Google Play Billing API. הספרייה מספקת גם שכבת הפשטה מעל שירות Android Interface Definition Language (AIDL), שמקל על המפתחים הממשק בין האפליקציה ל-Google Play Billing API.