למוצרים לרכישה חד-פעמית יש מחזור חיים פשוט יותר מאשר למוצרים למינוי, אבל עדיין יש כמה מצבים ואירועי מעבר שמערכת ה-Backend צריכה להיות מסוגלת לטפל בהם בצורה נכונה.
רכישות חדשות של מוצרים בחיוב חד-פעמי
אחרי שהמשתמש משלים את תהליך החיוב, האפליקציה יכולה לראות מידע על הרכישה החדשה באחת מהדרכים הבאות:
- מגדירים את
Real-time developer notifications
ומפעילים אתGet all notifications for subscriptions and one-time products
כדי לקבל עדכונים על סטטוס הרכישות. - כדי לקבל עדכונים אוטומטיים לגבי רכישות, צריך להטמיע את הממשק
PurchasesUpdatedListener
מ-BillingClient
. - מבצעים קריאה ל-method
BillingClient.queryPurchasesAsync()
.
אחרי קבלת הרכישה החדשה, משתמשים בשיטה getPurchaseState
או בשיטה purchases.productsv2.getproductpurchasev2 in Play Developer API
כדי לקבוע את סטטוס התשלום של הרכישה החדשה.
הודעות בזמן אמת למפתחים
כשמשתמש רוכש מוצר בחיוב חד-פעמי או מבטל את הרכישה שלו, Google Play שולחת הודעה מסוג OneTimeProductNotification
.
כדי לעדכן את מצב הרכישה בשרת העורפי, משתמשים בטוקן הרכישה שמופיע באובייקט OneTimeProductNotification
כדי לקרוא לשיטה purchases.productsv2.getproductpurchasev2
. השיטה הזו מספקת את הסטטוס העדכני של הרכישה והשימוש בה, בהינתן טוקן רכישה.
כשמממשים הזמנה מראש והסטטוס שלה משתנה ל-PURCHASED, נשלח ללקוח RTDN. אחרי שמקבלים את ה-RTDN, מעבדים את הרכישה של ההזמנה מראש כמו שמתואר במאמר עיבוד רכישות חד-פעמיות של מוצרים בקצה העורפי.
צריך לטפל בהודעות RTDN שקשורות לעסקאות בקצה העורפי המאובטח.
טיפול בעסקאות שהושלמו
כשמשתמש משלים רכישה של מוצר בחיוב חד-פעמי, מערכת Google Play שולחת הודעה מסוג ONE_TIME_PRODUCT_PURCHASED
עם הערך OneTimeProductNotification
.
כשמקבלים את ה-RTDN הזה, מעבדים את הרכישה כמו שמתואר במאמר בנושא עיבוד רכישות חד-פעמיות של מוצרים בקצה העורפי.
טיפול בעסקאות שבוטלו
כשמבטלים רכישה חד-פעמית של מוצר, מערכת Google Play שולחת הודעה מסוג ONE_TIME_PRODUCT_CANCELED
OneTimeProductNotification
אם הגדרתם קבלת התראות בזמן אמת למפתחים. לדוגמה, זה יכול לקרות אם המשתמש לא משלים את התשלום בתוך מסגרת הזמן הנדרשת, או אם הרכישה מבוטלת על ידי המפתח או לבקשת הלקוח. כשהשרת העורפי מקבל את ההתראה הזו, הוא קורא לשיטה purchases.productsv2.getproductpurchasev2
כדי לקבל את סטטוס הרכישה העדכני, ואז מעדכן את השרת העורפי בהתאם, כולל הרשאות המשתמש.
אם מתקבל החזר כספי על רכישת מוצר בחיוב חד-פעמי בסטטוס Purchased
, תקבלו על כך הודעה גם באמצעות Voided Purchases API.
עיבוד רכישות חד-פעמיות של מוצרים בקצה העורפי
בין אם זיהיתם רכישה חדשה באמצעות ONE_TIME_PRODUCT_PURCHASED
RTDN
או שקיבלתם על כך הודעה באפליקציה באמצעות PurchasesUpdatedListener
או אחזור ידני של רכישות בשיטה onResume()
של האפליקציה, אתם צריכים לעבד את הרכישה החדשה. כדי לשפר את האבטחה, מומלץ לטפל בעיבוד הרכישות בקצה העורפי.
כדי לעבד רכישה חד-פעמית חדשה, פועלים לפי השלבים הבאים:
- שולחים שאילתה אל נקודת הקצה
purchases.productsv2.getproductpurchasev2
כדי לקבל את הסטטוס העדכני של רכישת מוצר חד-פעמית. כדי להפעיל את ה-method הזה עבור רכישה, צריך את המזההpurchaseToken
המתאים, או מהאפליקציה או מ-ONE_TIME_PRODUCT_PURCHASED
RTDN. - מתקשרים אל
getPurchaseState()
ומוודאים שמצב הרכישה הואPURCHASED
. - מאמתים את הרכישה.
- נותנים למשתמש גישה לתוכן. אפשר לזהות את חשבון המשתמש שמשויך לרכישה באמצעות השדה
obfuscatedExternalAccountId
מתוךpurchases.productsv2.getproductpurchasev2
, אם הוגדר באמצעותsetObfuscatedAccountId()
בזמן ביצוע הרכישה.- ברכישות של מוצרים לא מתכלים, צריך לאשר את מסירת התוכן באמצעות קריאה לשיטה
purchases.products.acknowledge
. כדי לוודא שהרכישה לא אושרה בעבר, בודקים את השדהacknowledgementState
. - אם המוצר הוא מתכלה, צריך לסמן את הפריט כפריט שנעשה בו שימוש באמצעות הקריאה לשיטה
purchases.products.consume
, כדי שהמשתמש יוכל לקנות את הפריט שוב אחרי שהוא השתמש בו. השיטה הזו גם מאשרת את הרכישה.
- ברכישות של מוצרים לא מתכלים, צריך לאשר את מסירת התוכן באמצעות קריאה לשיטה
בנוסף, בספריית החיוב של Play יש שיטות לאישור רכישה ולצריכת מוצרים, שמאפשרות לכם לעבד רכישות מתוך האפליקציה. עם זאת, אנחנו ממליצים לכם לטפל בעיבוד הרכישות בשרת העורפי שלכם, אם יש לכם כזה, כדי להטמיע את התכונה בצורה מאובטחת יותר.