המטען הייעודי של המפתח

בעבר, המטען הייעודי (payload) של המפתח שימש למטרות שונות, כולל מניעת הונאות ושיוך רכישות למשתמש הנכון. בגרסה 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, האפליקציה יכולה להעביר ל-Google מזהי חשבון ופרופיל מעורפלים כשהיא פותחת את תיבת הדו-שיח של הרכישה, ולקבל אותם בחזרה כשמאחזרים רכישות.

משתמשים בפרמטרים setObfuscatedAccountId() ו-setObfuscatedProfileId() ב-BillingFlowParams ומאחזרים אותם באמצעות השיטה getAccountIdentifiers() באובייקט Purchase.

שיוך מטא-נתונים לרכישה

Google ממליצה לאחסן את המטא-נתונים של הרכישה בשרת בק-אנד מאובטח שבבעלותכם. צריך לשייך את המטא-נתונים של הרכישה לטוקן הרכישה שהתקבל באמצעות השיטה getPurchaseToken באובייקט Purchase. כדי לשמור את הנתונים האלה, מעבירים את אסימון הרכישה והמטא-נתונים לבק-אנד כשמתבצעת קריאה ל-PurchasesUpdatedListener אחרי רכישה מוצלחת.

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

אם תהליך הרכישה מופסק לפני שמתבצעת הקריאה ל-PurchasesUpdatedListener, האפליקציה תזהה את הרכישה ברגע שהיא תחזור לפעול ותפעיל את BillingClient.queryPurchasesAsync(). אחרי זה, תוכלו לשלוח את הערכים שאוחזרו מהשיטות getPurchaseTime(),‏ getSku() ו-getPurchaseToken() של האובייקט Purchase לשרת הבק-אנד כדי לחפש מטא-נתונים, לשייך את המטא-נתונים לטוקן הרכישה ולהמשיך בעיבוד הרכישה. חשוב לזכור שחותמת הזמן ששמרתם בהתחלה לא תהיה זהה בדיוק לערך של getPurchaseTime() באובייקט Purchase, ולכן תצטרכו להשוות ביניהם באופן משוער. לדוגמה, אפשר לבדוק אם הערכים נמצאים בטווח זמן מסוים זה מזה.