از گذشته، از payload توسعهدهنده برای اهداف مختلفی از جمله جلوگیری از کلاهبرداری و نسبت دادن خریدها به کاربر صحیح استفاده شده است. با نسخههای ۲.۲ و بالاتر کتابخانه پرداخت گوگل پلی، موارد استفاده مورد نظر که قبلاً به payload توسعهدهنده متکی بودند، اکنون در سایر بخشهای کتابخانه به طور کامل پشتیبانی میشوند.
با وجود این پشتیبانی، ما از نسخه ۲.۲ کتابخانه پرداخت گوگل پلی، payload توسعهدهنده را منسوخ کردهایم. روشهای مرتبط با payload توسعهدهنده در نسخه ۲.۲ منسوخ شده و در نسخه ۳.۰ حذف شدهاند. توجه داشته باشید که برنامه شما میتواند به بازیابی payload توسعهدهنده برای خریدهای انجام شده با استفاده از نسخههای قبلی کتابخانه یا AIDL ادامه دهد.
برای فهرست دقیقی از تغییرات، به یادداشتهای انتشار کتابخانه صورتحساب گوگل پلی ۲.۲ و یادداشتهای انتشار کتابخانه صورتحساب گوگل پلی ۳.۰ مراجعه کنید.
تأیید خرید
برای اطمینان از اینکه خریدها معتبر هستند و جعلی یا تکرار نشدهاند، گوگل توصیه میکند از توکن خرید (که از متد getPurchaseToken() در شیء Purchase به دست میآید) به همراه APIهای توسعهدهندگان گوگل پلی برای تأیید صحت خریدها استفاده شود. برای اطلاعات بیشتر، به مبارزه با کلاهبرداری و سوءاستفاده مراجعه کنید.
انتساب خرید
بسیاری از برنامهها، به ویژه بازیها، باید اطمینان حاصل کنند که خرید به درستی به شخصیت/آواتار درون بازی یا نمایه کاربری درون برنامهای که خرید را آغاز کرده است، نسبت داده میشود. با شروع از کتابخانه صورتحساب Google Play 2.2، برنامه شما میتواند هنگام راهاندازی کادر محاورهای خرید، شناسههای حساب و نمایه مبهم را به Google ارسال کند و هنگام بازیابی خرید، آنها را بازگرداند.
از پارامترهای setObfuscatedAccountId() و setObfuscatedProfileId() در BillingFlowParams استفاده کنید و آنها را با استفاده از متد getAccountIdentifiers() در شیء Purchase بازیابی کنید.
مرتبط کردن فراداده با یک خرید
گوگل توصیه میکند که فرادادههای مربوط به خرید را در یک سرور امنِ بکاند که خودتان مدیریت میکنید، ذخیره کنید. این فرادادههای خرید باید با توکن خریدِ بهدستآمده با استفاده از متد getPurchaseToken در شیء Purchase مرتبط باشند. این دادهها را میتوان با ارسال توکن خرید و فراداده به بکاند، زمانی که PurchasesUpdatedListener شما پس از یک خرید موفق فراخوانی میشود، حفظ کرد.
برای اطمینان از مرتبط بودن فرادادهها در صورت وقفه در جریان خرید، گوگل توصیه میکند قبل از اجرای پنجره خرید، فرادادهها را در سرور بکاند خود ذخیره کنید و آنها را با شناسه حساب کاربری، SKU خریداری شده و مهر زمانی فعلی مرتبط کنید.
اگر جریان خرید قبل از فراخوانی PurchasesUpdatedListener شما قطع شود، برنامه شما پس از از سرگیری برنامه و فراخوانی BillingClient.queryPurchasesAsync() خرید را کشف خواهد کرد. سپس میتوانید مقادیر بازیابی شده از متدهای getPurchaseTime() ، getSku() و getPurchaseToken() شیء Purchase را به سرور backend خود ارسال کنید تا فرادادهها را جستجو کند، فرادادهها را با توکن خرید مرتبط کند و پردازش خرید را ادامه دهد. توجه داشته باشید که مهر زمانی که در ابتدا ذخیره کردهاید دقیقاً با مقدار getPurchaseTime() شیء Purchase مطابقت ندارد، بنابراین باید آنها را به صورت تقریبی مقایسه کنید. به عنوان مثال، میتوانید بررسی کنید که آیا مقادیر در یک بازه زمانی خاص با یکدیگر هستند یا خیر.