בעבר, נתוני העומס של המפתח שימשו למטרות שונות, כולל מניעת הונאות ושיוך רכישות למשתמש הנכון. בגרסה 2.2 ואילך של ספריית החיובים ב-Google Play, תרחישי שימוש שהוגדרו מראש והתבססו בעבר על עומס העבודה של המפתח נתמכים עכשיו באופן מלא בחלקים אחרים של הספרייה.
בעקבות התמיכה הזו, הוצאנו משימוש את עומס העבודה של המפתחים, החל מגרסה 2.2 של ספריית החיובים ב-Google Play. השיטות שמשויכות למטען הייעודי של המפתח הוצאו משימוש בגרסה 2.2 והוסרו בגרסה 3.0. חשוב לזכור שהאפליקציה שלכם יכולה להמשיך לאחזר את עומס העבודה של המפתח עבור רכישות שבוצעו באמצעות גרסאות קודמות של הספרייה או באמצעות AIDL.
רשימה מפורטת של השינויים מופיעה בנתוני הגרסה של ספריית החיובים ב-Google Play 2.2 ובנתוני הגרסה של ספריית החיובים ב-Google Play 3.0.
אישור רכישות
כדי לוודא שהרכישות אותנטיות ולא מזויפות או מופעלות מחדש, Google ממליצה להשתמש באסימון הרכישה (שמתקבל מהשיטה getPurchaseToken()
באובייקט Purchase
) יחד עם ממשקי Google Play Developer API כדי לאמת את האותנטיות של הרכישות.
מידע נוסף זמין במאמר מאבק בתרמית ובשימוש לרעה.
שיוך רכישות
באפליקציות רבות, במיוחד במשחקים, צריך לוודא שהרכישה משויכת בצורה נכונה לדמות או לאיור של הדמות במשחק או לפרופיל המשתמש באפליקציה שהפעיל את הרכישה. החל מגרסה 2.2 של Google Play Billing Library, האפליקציה יכולה להעביר ל-Google מזהי חשבון ופרופיל מעורפלים כשהיא פותחת את תיבת הדו-שיח של הרכישה, ולקבל אותם בחזרה כשמפעילים אחזור של רכישה.
משתמשים בפרמטרים setObfuscatedAccountId()
ו-setObfuscatedProfileId()
ב-BillingFlowParams
ומאחזרים אותם באמצעות השיטה getAccountIdentifiers()
באובייקט Purchase
.
שיוך מטא-נתונים לרכישה
Google ממליצה לאחסן את המטא-נתונים של הרכישה בשרת עורפי מאובטח שבבעלותכם. צריך לשייך את המטא-נתונים של הרכישה לאסימון הרכישה שהתקבל באמצעות השיטה getPurchaseToken
באובייקט Purchase
. כדי לשמור את הנתונים האלה, מעבירים את אסימון הרכישה והמטא-נתונים לקצה העורפי כשמתבצעת קריאה ל-PurchasesUpdatedListener
אחרי רכישה מוצלחת.
כדי לוודא שהמטא-נתונים ישויכו במקרה של שיבושים בתהליך הרכישה, Google ממליצה לאחסן את המטא-נתונים בשרת הקצה העורפי לפני שמפעילים את תיבת הדו-שיח של הרכישה, ולשייך אותם למזהה החשבון של המשתמש, למק"ט שנרכש ולחותמת הזמן הנוכחית.
אם תהליך הרכישה מופסק לפני שמתבצעת הקריאה ל-PurchasesUpdatedListener
, האפליקציה תזהה את הרכישה ברגע שהיא תמשיך לפעול ותפעיל את BillingClient.queryPurchasesAsync()
.
לאחר מכן תוכלו לשלוח את הערכים שאוחזרו מהשיטות getPurchaseTime()
, getSku()
ו-getPurchaseToken()
של האובייקט Purchase
לשרת הקצה העורפי כדי לחפש מטא-נתונים, לשייך את המטא-נתונים לאסימון הרכישה ולהמשיך בעיבוד הרכישה. חשוב לזכור שהחותמת הזמנית ששמרתם בהתחלה לא תהיה זהה בדיוק לערך של getPurchaseTime()
באובייקט Purchase
, ולכן תצטרכו להשוות ביניהם באופן משוער. לדוגמה, אפשר לבדוק אם הערכים נמצאים בטווח זמן מסוים זה מזה.