ניהול מינויים ורכישות חד-פעמיות

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

ביטול מינויים

משתמשים או מפתחים יכולים לבטל מינויים.

ביטולים שבוצעו על ידי המשתמש

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

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

ביטולים שמתבצעים על ידי המפתח

יכול להיות שבתור מפתחים תצטרכו להפעיל ביטולים גם מהקצה העורפי שלכם. ‫purchases.subscriptions.cancel באמצעות ה-API אפשר לבטל רכישת מינוי. לדוגמה, אפשר להשתמש בשיטה הזו כדי להפסיק להשתמש בשירות מדור קודם. ביטול מינוי לא מזכה בהחזר כספי, והמשתמש שומר על הגישה עד סוף תקופת החיוב הנוכחית.

בעזרת השיטה הזו אפשר לציין את סוגי הביטולים הבאים בפרמטר cancellationType של גוף הבקשה:

  • USER_REQUESTED_STOP_RENEWALS: ביטול המינוי כאילו המשתמשים ביטלו אותו מחנות Play. תשלומי התחייבות ימשיכו עד לסוף תקופת ההתחייבות הנוכחית. אם המינוי הבסיסי מאפשר זאת, המשתמשים יכולים לשחזר את המינוי לפני שהוא יפוג או להירשם מחדש אחרי שהוא יפוג דרך חנות Play.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: ביטול המינוי ומניעת תשלומים נוספים. המשתמשים לא יכולים לשחזר את המינוי או להירשם אליו מחדש דרך חנות Play, אבל אתם יכולים לאפשר להם להירשם מחדש דרך האפליקציה שלכם.

איך מאפשרים למשתמשים לשחזר מינויים שלא פג תוקפם

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

כדי לציין שמשתמש יכול לשחזר את הביטול, צריך לשלוח בקשת POST אל purchases.subscriptions.cancel API ולהגדיר את פרמטר הבקשה cancellationType לערך USER_REQUESTED_STOP_RENEWALS.

דוגמה:

  • טוקן הרכישה של המינוי 1a2b3c4d5e6f7g8h9i0j
  • שם החבילה של האפליקציה com.your.app
  • מזהה המינוי your-subscription-product

בקשת HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

גוף הבקשה:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWALS"
}

איך מאפשרים למשתמשים להירשם מחדש למינויים שתוקפם פג

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

המשתמשים יכולים להירשם מחדש רק באפליקציה שלכם

אם הגדרתם את הפרמטר cancellationType לערך DEVELOPER_REQUESTED_STOP _PAYMENTS או שלא הגדרתם את הפרמטר cancellationType, המשתמשים לא יכולים לשחזר את המינוי שלהם ממרכז המינויים ב-Play. עם זאת, המשתמשים יכולים להירשם מחדש למינוי דרך האפליקציה שלכם, אם נדרש.

הפעולה הזו מפעילה SUBSCRIPTION_CANCELEDהתראה בזמן אמת למפתחים. צריך לטפל בביטולים האלה לפי ההוראות שמופיעות במאמר בנושא ביטולים.

דחיית החיוב

אפשר להאריך את תקופת הזכאות של מינוי באמצעות השיטה subscriptionsv2.defer. כשדוחים מינוי עם חבילות, כל הפריטים במינוי נדחים למשך אותו פרק זמן. במהלך תקופת הדחייה, המשתמש נשאר מנוי לתוכן שלכם, אבל לא יחויב על הזמן הנוסף. כשדוחים את החיוב על מינוי, פרטי הסטטוס מתעדכנים בהתאם ומוצגים בשדה expiryTime בפרטי סטטוס הרכישה:

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

דוגמאות לשימוש בחיוב נדחה:

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

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

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

דוגמה:

  1. שירות הסטרימינג FitnessGoals רוצה להפעיל מבצע כדי לעודד פעילות גופנית קבועה בחודש פברואר.

  2. הם מחליטים להציע חודש נוסף של שירות לכל מנוי שמתאמן עם FitnessGoals לפחות 10 פעמים במהלך חודש פברואר.

  3. הם עוקבים אחרי התוצאות של האתגר, וב-1 במרץ הם קוראים לשיטה subscriptionsv2.defer לכל רכישת מינוי פעיל ששייכת למשתמשים שעמדו באתגר בפברואר.

  4. המשתמשים האלה נהנים מחודש נוסף של סרטוני אימון רגילים ללא עלות, והם מספרים לכל החברים שלהם איך FitnessGoals עוזרת להם לשמור על הבריאות.

מתן החזרים כספיים וביטולים

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

החזר כספי מלא על הזמנה לפי מזהה הזמנה

באמצעות ה-API‏ orders.refund, אפשר להנפיק החזרים כספיים מלאים על כל הזמנה תוך שלוש שנים ממועד הרכישה. השיטה orders.refund מקבלת פרמטר revoke שמציין אם צריך לבטל את הגישה בנוסף למתן ההחזר הכספי.

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

דוגמה:

  1. כדי לחגוג את תחילת מונדיאל חדש, אפליקציית הספורט האלקטרוני Football-Not-Soccer מחליטה להעניק במתנה חולצות וירטואליות לכל המשתמשים שירכשו ערכות חדשות של קבוצות ב-24 השעות הראשונות.

  2. האפליקציה Football-Not-Soccer משתמשת ב-API‏ orders.refund בלי להעביר פרמטר ביטול כדי להחזיר כסף לזוכים על רכישות של חולצות.

ביטול מינוי והחזר כספי על מינוי באמצעות טוקן רכישה

במקרים מסוימים, יכול להיות שתצטרכו לבטל את הגישה למינוי של משתמש ולספק החזר כספי. חיוב ב-Play מציע שיטות לביטול, כולל החזרים כספיים מלאים והחזרים כספיים יחסיים דרך subscriptionsv2.revoke API. באמצעות נקודת הקצה הזו, אפשר לציין את revocationContext כדי לקבוע איך יחושב ההחזר הכספי.

הפעולה הזו מפעילה SUBSCRIPTION_REVOKEDהתראה בזמן אמת למפתחים האפליקציה צריכה לטפל בביטולים האלה כמו שמתואר במאמר בנושא ביטולים.

דוגמה:

  • רכישה באמצעות טוקן רכישה 1a2b3c4d5e6f7g8h9i0j
  • אפליקציה עם שם החבילה com.your.app
  • הכוונה היא לתת החזר כספי יחסי

בקשת HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

גוף הבקשה:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

החזרים כספיים מלאים

אם אתם צריכים לסיים מינוי ולהחזיר את הסכום המלא של תקופת החיוב הנוכחית, אתם צריכים להנפיק החזר כספי מלא. משתמשים בפונקציה purchases.subscriptionsv2.revoke ומגדירים את "fullRefund": {} כסוג ההחזר.

דוגמה:

  1. למריה יש מינוי לחידוש אוטומטי ל-30 יום לתוכנית חודשית של SuperMovies streaming. מריה נתקלה בבעיות טכניות שמנעו ממנה לגשת לתוכן. ביום השלישי של מחזור החיוב שלה, היא פונה לשירות הלקוחות ומציינת שמעולם לא קיבלה גישה למינוי.

  2. נציג שירות הלקוחות מאתר במערכת את פרטי הרכישה של המינוי של מריה ומפעיל קריאה אל purchases.subscriptionsv2.revoke כדי לבקש החזר כספי מלא.

  3. נציג שירות הלקוחות אומר למריה שהיא תקבל החזר כספי על 100% ממחיר המינוי, ושהיא לא מנויה יותר לתוכנית.

החזרים כספיים יחסיים

אם אתם צריכים לבטל מינוי ולתת החזר כספי חלקי על הזמן שנותר עד לסיום תקופת הזכאות, אתם צריכים להנפיק החזר כספי יחסי. משתמשים בפונקציה purchases.subscriptionsv2.revoke ומגדירים את "proratedRefund": {} כסוג ההחזר.

דוגמה:

  1. למריה יש מינוי חודשי לסטרימינג של SuperMovies שמתחדש אוטומטית כל 30 יום. היא נהנתה להשתמש בשירות במשך תקופה מסוימת. מרים פונה לשירות הלקוחות ביום ה-15 של מחזור החיוב שלה ומציינת שהיא עוברת לחו"ל ולא תוכל להשתמש בשירות יותר החל מהיום הבא.

  2. נציג שירות הלקוחות מאתר במערכת שלו את פרטי הרכישה של המינוי של מריה ומפעיל קריאה ל-purchases.subscriptionsv2.revoke כדי לבקש החזר כספי יחסי.

  3. נציג שירות הלקוחות אומר למריה שהיא תקבל החזר כספי של כ-50% ממחיר המינוי, ושהגישה לשירות תופסק באופן מיידי.