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