מינוי עם חבילות תוכן מאפשר לכם לרכוש כמה מינויים למוצרים שונים ולנהל אותם יחד. תוכלו להציע את המינויים הקיימים של קטלוג המוצרים בתור תוספים ללא הגדרה נוספת או ציון מראש של המפרט. אתם יכולים להשיק תהליך רכישה עם כמה מוצרים קיימים למינוי, ולמכור אותם כתוספים.
שיקולים
כשמשתמשים בתכונה 'מינויים עם חבילות שירות', חשוב לשים לב לנקודות הבאות:
אפשר להוסיף חבילות ערוצים למינוי רק במינויים בסיסיים שמתחדשים אוטומטית.
לכל הפריטים ברכישה צריכה להיות אותה תקופת חיוב קבועה. לדוגמה, אי אפשר לכלול במינוי שמחויב על בסיס שנתי חבילות נוספות שמחויבות על בסיס חודשי.
אפשר להוסיף עד 50 פריטים למינוי עם רכישת חבילות שירות.
התכונה הזו לא זמינה באזורים של הודו (IN) ושל קוריאה הדרומית (KR).
שילוב עם ספריית החיוב ב-Play
בקטע הזה מוסבר איך לשלב את התכונה 'מינוי עם חבילות תוכן' עם Play Billing Library (PBL). ההנחה היא שאתם מכירים את שלבי השילוב הראשוניים של PBL, כמו הוספת התלות ב-PBL לאפליקציה, אתחול של BillingClient וחיבור ל-Google Play. הקטע הזה מתמקד בהיבטים של שילוב PBL שספציפיים למינוי עם חבילות ערוצים.
הפעלת תהליך רכישה
כדי להפעיל תהליך רכישה של מינוי עם תוספים:
כדי לאחזר את כל הפריטים במינוי, משתמשים ב-method
BillingClient.queryProductDetailsAsync
.מגדירים את האובייקט
ProductDetailsParams
לכל פריט.הפריט שמיוצג על ידי האובייקט
ProductDetailsParams
מציין גם אתProductDetails
שמציין את פריט המינוי, וגם אתofferToken
שבוחר מינוי ספציפיbase plan
אוoffer
.מציינים את פרטי הפריט בשיטה
BillingFlowParams.Builder.setProductDetailsParamsList
. בכיתהBillingFlowParams
מצוינים פרטי תהליך הרכישה.בדוגמה הבאה מוסבר איך מפעילים את תהליך החיוב לרכישת מינוי עם כמה פריטים:
Java
BillingClient billingClient = …; // ProductDetails obtained from queryProductDetailsAsync(). ProductDetailsParams productDetails1 = ...; ProductDetailsParams productDetails2 = ...; ArrayList
productDetailsList = new ArrayList<>(); productDetailsList.add(productDetails1); productDetailsList.add(productDetails2); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsList) .build(); billingClient.launchBillingFlow(billingFlowParams);
הכללים החלים על הפריטים ברכישה
- כדי לוודא שתאריכי החידוש של התוספים יהיו תואמים לתאריכי החידוש של הפריט הבסיסי, יכול להיות שמערכת Google Play תוסיף חיוב יחסי אחרי תקופות הניסיון או תקופות המחיר המוזל.
- הזכאות למבצע תיבצע בנפרד לכל פריט.
עיבוד רכישות
העיבוד של מינוי עם חבילות שירות זהה לעיבוד של רכישות של פריט יחיד, כפי שמתואר במאמר שילוב ספריית החיובים ב-Google Play באפליקציה. ההבדל היחיד הוא שהמשתמש יכול לקבל כמה הרשאות ברכישה אחת. רכישה של מינוי עם חבילות שירות מחזירה כמה פריטים שאפשר לאחזר באמצעות Purchase.getProducts()
בספריית החיוב של Google Play, ואז את רשימת lineItems
ב-purchases.subscriptionsv2.get
ב-Google Play Developer API.
שינוי מינויים באמצעות תוספים
כל שינוי במינוי עם חבילות התוספים גורם לשדרוג או לירידה ברמת המינוי. מידע נוסף זמין במאמר שדרוג או שדרוג לאחור של מינויים.
כדי לשנות או לשחזר רכישה קיימת של מינוי עם תוספים באפליקציה, צריך להפעיל את ה-API של launchBillingFlow
עם פרמטרים נוספים, ולוודא את הפרטים הבאים:
- תמיד צריך לקרוא ל-
setOldPurchaseToken
עם אסימון הרכישה של המינוי הנוכחי. - כדי לשדרג, לשדרג לאחור או לשדרג בין תוכניות את הפריט הבסיסי, צריך להפעיל את
setSubscriptionReplacementMode
כדי לציין איך צריך לטפל בשינוי התוכנית בין הפריטים הבסיסיים של המינוי הישן לבין הרכישה החדשה של המינוי עם התוספים. אחרת, אין צורך להגדיר את הפרמטר הזה. - אם הפריט הבסיסי לא השתנה, עדיין אפשר להפעיל את
setSubscriptionReplacementMode
כדי להחיל התנהגות ספציפית של חלוקת העלויות. הכללים הרלוונטיים במקרה כזה מפורטים במאמר הרשמה מחדש למינוי או החלפת תוכנית באותו מינוי. - תוספים חדשים יחולו באופן מיידי עם חיוב יחסי, כדי להתאים את תאריך החידוש הבא לפריט הבסיסי במינוי.
- תוקף התוספים שהוסרו יפוג בסוף תקופות החיוב הנוכחיות שלהם.
- כשמפעילים את תהליך החיוב, צריך לציין את כל הפריטים הפעילים במינוי עם התוספים, לא כולל את אלה שרוצים להסיר, וגם את התוספים החדשים.
בדוגמה הבאה מוסבר איך לקרוא ל-API launchBillingFlow
כשמשנים רכישה קיימת של מינוי עם חבילות שירות:
Java
BillingClient billingClient = …; int replacementMode =…; // ProductDetails obtained from queryProductDetailsAsync(). ProductDetailsParams productDetails1 = ...; ProductDetailsParams productDetails2 = ...; ProductDetailsParams productDetails3 = ...; ArrayListnewProductDetailsList = new ArrayList<>(); newProductDetailsList.add(productDetails1); newProductDetailsList.add(productDetails1); newProductDetailsList.add(productDetails1); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setSubscriptionUpdateParams( SubscriptionUpdateParams.newBuilder() .setOldPurchaseToken(purchaseTokenOfExistingSubscription) // No need to set if change does not affect the base item. .setSubscriptionReplacementMode(replacementMode) .build()) .setProductDetailsParamsList(productDetailsList) .build(); billingClient.launchBillingFlow(billingFlowParams);
תרחישים של שינוי המינוי
בטבלה הבאה מפורטים התרחישים השונים של שינוי המינוי עם התוספים, וההתנהגות התואמת.
פריטים קיימים | פריטים ששונו | האם צריך להגדיר את מצב ההחלפה? | התנהגות |
---|---|---|---|
A (פריט בסיס), B | A (פריט בסיס) | לא | הפריט ב' מתוזמן להסרה נדחית. |
A | A (פריט בסיס), B | לא | פריט ב' יתווסף באופן מיידי עם חיוב יחסי. |
A (פריט בסיס), B | א' (פריט בסיס), ג' | לא |
|
A (פריט בסיס), B | B (פריט בסיס) | לא | התוכן A מתוזמן להסרה נדחית. |
A (פריט בסיס), B | C (פריט בסיס) | כן |
|
A (פריט בסיס), B | C (פריט בסיס), B | כן | ההחלפה של A -> C תלויה ב-setSubscriptionReplacementMode . |
A (פריט בסיס), B | C (פריט בסיס), D | כן |
|
הודעות בזמן אמת למפתחים
השדה subscriptionId
לא מסופק ב-RTDN לרכישות של מינויים עם חבילות ערוצים, שמכילות זכויות לפריטים מרובים.
במקום זאת, אפשר להשתמש בממשקי ה-API של Play למפתחים כדי לקבל את הרכישה ולראות את הזכויות לפריטים המשויכים.
שינויי מחיר למנויים קיימים
שינוי מחירי המינויים למנויים קיימים של מינוי עם רכישת חבילות שירות דומה לשינוי מחירי המינויים למינויים לפריט יחיד, כפי שמתואר בקטע שינוי מחירי המינויים. עם זאת, יש כמה מגבלות והבדלים פונקציונליים כפי שמתואר בקטע הזה.
סיום של קבוצת תמחור קודמת בעלת מאפיינים משותפים
סיום של קבוצת משתמשים קודמת משפיע גם על מינויים עם רכישות של חבילות שירות. הכללים הבאים חלים:
כל העלאות המחיר הקיימות שהבעתם הסכמה אליהן צריכות להיות עם אותו מועד חידוש במחיר החדש. אם יש פריט במינוי עם רכישה של חבילות שירות שהוגדרה לו העלאת מחיר בכפוף להסכמה והמשתמש עדיין לא אישר אותה, המערכת תתעלם מכל העלאת מחיר חדשה בכפוף להסכמה של פריטים אחרים ברכישה, אלא אם זמן החידוש של המחיר החדש יהיה זהה לזמן החידוש של ההעלאה הקיימת במצב OUTSTANDING. אחרי שהמשתמש יאשר את העלייה במחיר, כל שינוי במחיר יתועד. בנוסף, המשתמשים יכולים לאשר את כל העלאות המחירים בכפוף להסכמה שלא אושרו בו-זמנית.
דוגמה:
- נניח שמדובר במינוי עם חבילות שירות נוספות (פריטים א' ו-ב'), שמתחדש ב-7 בכל חודש.
- מחיר הפריט א' עובר תהליך העברה מ-7 $ל-10$, והעלייה במחיר צפויה להיכנס לתוקף ב-7 ביולי.
- ב-2 ביוני מתחילה העברת מחירים חדשה של פריט ב' מ-5 $ל-6$. מאחר שהעלאת המחיר עם אפשרות להסכמה מתחילה 37 ימים אחרי ההעברה, העלייה במחיר של פריט ב' תתבצע לכל המוקדם ב-7 באוגוסט.
בתרחיש הזה, עד שהמשתמש מאשר את שינוי המחיר של פריט א' (עד שהוא נמצא בסטטוס CONFIRMED), שינוי המחיר של פריט ב' לא מתועד ברכישת המינוי הזו, ו-SubscriptionPurchaseV2 לא מחזיר את פרטי שינוי המחיר של פריט ב'. אחרי שהמשתמש מאשר את שינוי המחיר של פריט א', שינוי המחיר של פריט ב' מתחיל. המשתמש יקבל את העלאת המחיר בכפוף להסכמה של פריט ב' רק אחרי שהוא יאשר את העלאת המחיר בכפוף להסכמה של פריט א'.
הודעת האימייל מ-Google Play מכילה רשימה של כל הפריטים עם העלאות או ירידות במחיר שייכנסו לתוקף באותו יום.
ביטול מינוי עם תוספים
משתמשים יכולים לבטל את הרכישה המלאה של מינוי עם חבילות שירות ב-Play Subscription Center, ואתם יכולים לבטל את הרכישה המלאה של מינוי עם חבילות שירות רק באמצעות Google Play Developer API.
אם רכישת מינוי מבוטלת בלי לבטל את המינוי, אף אחד מהפריטים ברכישה לא יתחדש באופן אוטומטי, אבל למשתמש תהיה גישה לפריטים שאליהם הוא זכאי עד לסיום תקופות החיוב הרלוונטיות.
ביטול מינויים עם תוספים והענקת החזרים כספיים
ריכזנו כאן כמה מההנחיות לביטול מינויים והחזרים כספיים:
שימוש ב-Play Console כדי להנפיק החזר כספי על בסיס סכום להזמנה ספציפית, בלי לבטל את הגישה למינוי.
אפשר להתקשר למספר
orders.refund
כדי לקבל החזר כספי מלא על תשלומים ספציפיים של המינוי שהמשתמש ביצע, בלי לבטל את הגישה למינוי.אפשר להתקשר למספר
purchases.subscriptionsv2.revoke
כדי לבטל באופן מיידי את הגישה לכל הפריטים במינוי. בעזרת ה-API הזה תוכלו:לבטל את הגישה לכל הפריטים ולספק החזר כספי פרוריאלי.
כשמבטלים מינוי עם חבילות שירות באמצעות החזרים כספיים חלקיים, מתבצע החזר כספי על ההזמנה האחרונה של כל פריט, בסכום חלקי על סמך הזמן שנותר עד לחידוש הבא.
לבטל את הגישה לכל הפריטים ולספק FullRefund.
לבטל את הגישה לפריט ספציפי עם החזר כספי מלא על הפריט.
ביטול פריט ספציפי במינוי עם תוספים
כדי לבטל פריטים ספציפיים במינוי עם תוספים, בלי לבטל את הרכישה כולה, צריך להפעיל את purchases.subscriptionsv2.revoke
עם השדה ItemBasedRefund
מוגדר ב-RevocationContext
. אפשר להגדיר את productId
של הפריט שרוצים לבטל ולקבל עליו החזר כספי בשדה ItemBasedRefund
.
אפשר להגדיר את השדה ItemBasedRefund
לרכישות עם פריט מינוי אחד או יותר שמתחדש באופן אוטומטי.
- אם עדיין יש פריטים פעילים ברכישת המינוי אחרי ביטול הפריט שצוין ב-
ItemBasedRefund
, רק הפריט יבוטל ויינתן עליו החזר כספי מלא, בלי להפריע לסטטוס המינוי. - אם לא נותרו פריטים פעילים ברכישת המינוי אחרי ביטול הפריט שצוין ב-
ItemBasedRefund
, הפריט יבוטל, יתבצע החזר כספי מלא והמינוי יבוטל.
שיקולים
- כשמשתמשים ב-
ItemBasedRefund
, אפשר לבטל רק פריט אחד בכל פעם. אפשר להפעיל את הבקשה כמה פעמים אם צריך לבטל פריטים שונים. - אם רכישת המינוי נמצאת באחת מהמצבויות של דחיית תשלום, או אם הפריט שצוין ב-
ItemBasedRefund
לא בבעלותכם או פג התוקף שלו, דחיית הפריט תיחסם. - אי אפשר לדחות פריטים במינוי בתשלום מראש.
תפוגת התוקף של פריט במהלך דחיית תשלום
ברכישה של מינוי עם תוספים, יכול להיות שבמהלך חידוש מסוים תצטרכו להאריך רק קבוצת משנה של זכויות לפריטים, בלי להשפיע על פריטים עם תאריך תפוגה עתידי.
ללא קשר לפריטים שקשורים לחידוש, אם תשלום החידוש יידחה, רכישת המינוי הכוללת תעבור לתקופת חסד והחשבון יושהה, כפי שמתואר במסמכים הבאים.
בחירת תקופת השחזור
מכיוון שתקופת החסד עדיין מעניקה את הזכאות של המשתמש, ברכישה של מינוי עם חבילות שירות, התשלום על החידוש נדחה, המערכת בוחרת את הפריט עם תקופת החסד המינימלית מבין כל הפריטים הפעילים, ותקופת החסד ותקופת ההחזקה בחשבון משמשים כתקופת ההחלמה לחידוש הזה.
'פריטים פעילים' כוללים פריטים שהיו פעילים ברכישת המינוי עם התוספים זמן קצר לפני ניסיון החידוש, לא כוללים פריטים שנוספו לאחרונה (שהזכאות לשימוש בהם תהיה רק אחרי השחזור) ולא כוללים פריטים שכבר לא פעילים בגלל הסרה או השבתה.
המערכת מחילה את ההגדרה של השהיית החשבון של הפריט עם תקופת החסד המינימלית שנבחרה. אם יש יותר מפריט אחד עם תקופת החסד המינימלית, אבל תקופות ההחזקה בחשבון שונות, תקופת ההחזקה הארוכה ביותר בחשבון תחול.
תקופת חסד
כשתשלום על חידוש מינוי נדחה, רכישת המינוי תעבור למצב של תקופת חסד. במהלך תקופת החסד, למשתמש תהיה גישה לכל הפריטים הפעילים מתקופת החידוש הקודמת. אם אמצעי התשלום לא יתוקן בסיום תקופת החסד, סכום המינוי כולו יושהה בחשבון. אם פריטים אחרים יגיעו לתאריך החידוש שלהם במהלך תקופת החסד, ננסה לחייב אותם מחדש אחרי שהמינוי יתאושש מהדחייה.
השעיית חשבון
בזמן שהרכישה של המינוי מושהית בחשבון, הגישה לכל הפריטים במינוי מושהית עד שהתשלום מתקבל.
אם המינוי שנמצא בהחזקה בחשבון יוחזר, רכישת המינוי תמשיך להתקיים כפי שהיא. אם המינוי לא יוחזר, התוקף של הפריטים שנדחו ייפוג והגישה לפריטים האחרים תחודש למשך יתרת תקופות החיוב שלהם.
דוגמה:
למשתמש יש מינוי My Base Plan שמתחדש ב-1 בכל חודש. ב-15 באוגוסט הוא מוסיף Add on plan בעלות של 10 $לחודש עם תקופת ניסיון בחינם של שבעה ימים. לא הוגדרה תקופת חסד לאף אחד מהפריטים, ושניהם מוגדרים עם תקופת השהיית חשבון של 30 יום.
ב-22 באוגוסט, המשתמש מחויב בסכום של 2.90$ (10*9/31) לחיוב יחסי עד 31 באוגוסט, אבל התוקף של אמצעי התשלום של המשתמש פג לפני כן, והמינוי נדחה ב-22 באוגוסט בגלל בעיה בתשלום.
כשהמינוי נכנס להשהיית חשבון בגלל דחייה של תשלום, למשתמש אין גישה לאף אחד מהפריטים במינוי עם התוספים. הזמן שנותר לפריטים שלא יחודשו יוחזר למשתמשים כשהמינוי ייצא מההשהיה בחשבון, בגלל שהתשלום התקבל או בוטל.
בדוגמה הקודמת, מינוי נכנס להחזקה בחשבון ב-22 באוגוסט.
אם החשבון יוחזר ב-25 באוגוסט, לפני תאריך החידוש הרחב יותר ב-1 בספטמבר, המשתמש יקבל שוב גישה גם ל-My Base Plan וגם ל-Add on plan באותו יום. תאריך החיוב הבא השתנה ל-4 בספטמבר.
אם החשבון לא ישוחזר אחרי 30 יום, המינוי יבוטל ב-21 בספטמבר והמשתמש יאבד את הגישה לתוכנית המשולבת, וימשיך לגשת לתוכנית הבסיסית שלי עד 30 בספטמבר.
בדוגמה הזו, צריך לקבל את הערך המעודכן של expiryTime
לכל הפריטים במינוי עם התוספים, כי יכול להיות שחלק מהפריטים ימשיכו להיות זמינים אחרי תקופת החסד וההחזקה בחשבון.
דיווח פיננסי ותיאום
אתם יכולים להשתמש בדוח הרווחים כדי להתאים בין המינויים הפעילים לבין העסקאות ב-Play. לכל פריט בעסקה יש מזהה הזמנה. אם הרכישות כוללות כמה פריטים, דוחות הרווחים והמכירות המשוערות יכללו שורות נפרדות לכל עסקה, כמו חיוב, עמלה, מס והחזר כספי, לכל פריט מעורב.
בלוחות הבקרה ב-Play Console:
נתוני הסטטיסטיקה של ההכנסות שמוצגים בקטע דיווח פיננסי במסוף מפורטים לפי פריטים.
ניהול ההזמנות משקף את הרכישה של המינוי עם התוספים, ומציג רשימות מפורטות של מה שנרכש. בדף ניהול ההזמנות תוכלו לבטל רכישה של משתמש, לבטל את ההזמנה או לתת החזר כספי מלא.