יכול להיות שתצטרכו לבצע פעולות ניהול במינויים או ברכישות חד-פעמיות כחלק מהפעילות העסקית השוטפת. לדוגמה, יכול להיות שתצטרכו להנפיק החזרים כספיים מלאים או חלקיים למשתמשים, או לבטל הרשאות במקרים מסוימים. אפשר לנהל הזמנות מ-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התראה בזמן אמת למפתחים. במאמר מידע על מינויים מוסבר איך לטפל באירועים האלה.
דוגמה:
שירות הסטרימינג FitnessGoals רוצה להפעיל מבצע כדי לעודד פעילות גופנית סדירה בפברואר.
הם מחליטים להציע חודש נוסף של שירות לכל מנוי שמתאמן עם FitnessGoals לפחות 10 פעמים במהלך חודש פברואר.
הם עוקבים אחרי התוצאות של האתגר, וב-1 במרץ הם קוראים לשיטה subscriptionsv2.defer לכל רכישה של מינוי פעיל ששייכת למשתמשים שעמדו באתגר בפברואר.
המשתמשים האלה נהנים מחודש נוסף מלא של סרטוני אימון רגילים ללא עלות, והם מספרים לכל החברים שלהם כמה FitnessGoals עוזרת להם לשמור על הבריאות.
הנפקת החזרים כספיים וביטולים
יש הרבה מצבים שבהם כדאי להנפיק החזר כספי על מינוי או על רכישה חד-פעמית, או לבטל את הגישה אליהם.
החזר כספי מלא על הזמנה לפי מזהה הזמנה
באמצעות ה-API orders.refund, אפשר להנפיק החזרים כספיים מלאים על כל הזמנה תוך שלוש שנים ממועד הרכישה.
השיטה orders.refund מקבלת פרמטר revoke שמציין אם צריך לבטל את הגישה בנוסף למתן ההחזר הכספי.
אם תבטלו את הרכישה באמצעות קריאה להחזר כספי על רכישת מינוי, המינוי יסתיים באופן מיידי ותופעל SUBSCRIPTION_REVOKEDהתראה למפתחים בזמן אמת. כדי לדעת איך לטפל באירועים האלה, כדאי לקרוא את המדריך לניהול מחזור החיים של מינויים, הסעיף בנושא ביטולים.
דוגמה:
כדי לחגוג את תחילת מונדיאל חדש, אפליקציית הספורט האלקטרוני Football-Not-Soccer מחליטה להעניק במתנה חולצות וירטואליות לכל המשתמשים שירכשו ערכות חדשות של קבוצות ב-24 השעות הראשונות.
באפליקציה 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": {} כסוג ההחזר.
דוגמה:
למריה יש מינוי חודשי לסטרימינג של SuperMovies שמתחדש אוטומטית כל 30 יום. מריה נתקלה בבעיות טכניות שמנעו ממנה גישה לתוכן. היא פונה לשירות הלקוחות ביום השלישי של מחזור החיוב שלה ומציינת שהיא מעולם לא קיבלה גישה למינוי.
צוות שירות הלקוחות מאתר במערכת את פרטי הרכישה של המינוי של מריה ומפעיל קריאה אל
purchases.subscriptionsv2.revokeלבקשת החזר כספי מלא.שירות הלקוחות אומר למריה שהיא תקבל החזר כספי מלא על מחיר המינוי, ושהיא לא מנויה יותר לתוכנית.
החזרים כספיים יחסיים
אם אתם צריכים לבטל מינוי ולתת החזר כספי חלקי על הזמן שנותר עד לסיום תקופת המינוי, אתם צריכים לתת החזר יחסי. משתמשים בפונקציה
purchases.subscriptionsv2.revoke
ומגדירים את "proratedRefund": {} כסוג ההחזר.
אפשר לקבל החזרים יחסיים על מינויים שמתחדשים אוטומטית ועל מינויים בתשלום מראש לתקופה של שבוע לפחות.
דוגמה:
למריה יש מינוי חודשי לסטרימינג של SuperMovies שמתחדש אוטומטית כל 30 יום. היא משתמשת בשירות כבר זמן מה, והיא מרוצה. מרים פונה לשירות הלקוחות ביום ה-15 של מחזור החיובים שלה ומציינת שהיא עוברת לחו"ל ולא תוכל להשתמש בשירות יותר החל מהיום הבא.
נציג שירות הלקוחות מאתר במערכת שלו את פרטי הרכישה של המינוי של מריה ומפעיל קריאה אל
purchases.subscriptionsv2.revokeכדי לבקש החזר כספי יחסי.שירות הלקוחות אומר למריה שהיא אמורה לקבל החזר כספי של כ-50% ממחיר המינוי, ושהגישה לשירות תופסק באופן מיידי.