ঐতিহাসিকভাবে, ডেভেলপার পেলোড বিভিন্ন উদ্দেশ্যে ব্যবহৃত হয়ে আসছে, যার মধ্যে রয়েছে জালিয়াতি প্রতিরোধ এবং সঠিক ব্যবহারকারীর নামে কেনাকাটা চিহ্নিত করা। গুগল প্লে বিলিং লাইব্রেরির ২.২ এবং তার পরবর্তী সংস্করণগুলোতে, যেসব উদ্দিষ্ট ব্যবহার পূর্বে ডেভেলপার পেলোডের উপর নির্ভরশীল ছিল, সেগুলো এখন লাইব্রেরির অন্যান্য অংশে সম্পূর্ণরূপে সমর্থিত।
এই সাপোর্ট চালু হওয়ার সাথে সাথে, গুগল প্লে বিলিং লাইব্রেরির ২.২ সংস্করণ থেকে আমরা ডেভেলপার পেলোডকে অপ্রচলিত ঘোষণা করেছি। ডেভেলপার পেলোডের সাথে যুক্ত মেথডগুলো ২.২ সংস্করণে অপ্রচলিত ঘোষণা করা হয়েছিল এবং ৩.০ সংস্করণ থেকে সরিয়ে ফেলা হয়েছে। উল্লেখ্য যে, লাইব্রেরির পূর্ববর্তী সংস্করণ বা AIDL ব্যবহার করে করা কেনাকাটার জন্য আপনার অ্যাপ ডেভেলপার পেলোড গ্রহণ করা চালিয়ে যেতে পারে।
পরিবর্তনসমূহের বিস্তারিত তালিকার জন্য, গুগল প্লে বিলিং লাইব্রেরি ২.২ রিলিজ নোট এবং গুগল প্লে বিলিং লাইব্রেরি ৩.০ রিলিজ নোট দেখুন।
ক্রয় যাচাইকরণ
ক্রয়গুলি আসল এবং জাল বা নকল নয় তা নিশ্চিত করতে, Google ক্রয় টোকেন ( Purchase অবজেক্টের getPurchaseToken() পদ্ধতি থেকে প্রাপ্ত) এবং Google Play ডেভেলপার API ব্যবহার করে ক্রয়ের সত্যতা যাচাই করার পরামর্শ দেয়। আরও তথ্যের জন্য, জালিয়াতি এবং অপব্যবহার প্রতিরোধ দেখুন।
ক্রয় অ্যাট্রিবিউশন
অনেক অ্যাপ, বিশেষ করে গেমের ক্ষেত্রে, এটা নিশ্চিত করা প্রয়োজন যে কেনাকাটাটি যেন সঠিকভাবে সেই ইন-গেম ক্যারেক্টার/অ্যাভাটার বা ইন-অ্যাপ ইউজার প্রোফাইলের নামে জমা হয়, যিনি কেনাকাটাটি শুরু করেছেন। গুগল প্লে বিলিং লাইব্রেরি ২.২ থেকে শুরু করে, আপনার অ্যাপ কেনাকাটার ডায়ালগ চালু করার সময় গোপনীয় অ্যাকাউন্ট এবং প্রোফাইল আইডেন্টিফায়ার গুগলের কাছে পাঠাতে পারে এবং কেনা জিনিসটি পুনরুদ্ধার করার সময় সেগুলো ফেরত পেতে পারে।
BillingFlowParams এ setObfuscatedAccountId() এবং setObfuscatedProfileId() প্যারামিটারগুলো ব্যবহার করুন এবং Purchase অবজেক্টের getAccountIdentifiers() মেথড ব্যবহার করে সেগুলো পুনরুদ্ধার করুন।
ক্রয়ের সাথে মেটাডেটা সংযুক্ত করুন
গুগল একটি কেনাকাটার মেটাডেটা আপনার রক্ষণাবেক্ষণ করা একটি সুরক্ষিত ব্যাকএন্ড সার্ভারে সংরক্ষণ করার পরামর্শ দেয়। এই কেনাকাটার মেটাডেটাটি Purchase অবজেক্টের getPurchaseToken মেথড ব্যবহার করে প্রাপ্ত পারচেজ টোকেনের সাথে যুক্ত থাকা উচিত। একটি সফল কেনাকাটার পরে যখন আপনার PurchasesUpdatedListener কল করা হয়, তখন পারচেজ টোকেন এবং মেটাডেটা আপনার ব্যাকএন্ডে পাঠিয়ে এই ডেটা স্থায়ীভাবে সংরক্ষণ করা যেতে পারে।
ক্রয় প্রক্রিয়া বাধাগ্রস্ত হলে মেটাডেটা সংযুক্ত আছে কিনা তা নিশ্চিত করতে, গুগল ক্রয় ডায়ালগ চালু করার আগে আপনার ব্যাকএন্ড সার্ভারে মেটাডেটা সংরক্ষণ করার এবং এটিকে আপনার ব্যবহারকারীর অ্যাকাউন্ট আইডি, ক্রয় করা হচ্ছে এমন SKU, এবং বর্তমান টাইমস্ট্যাম্পের সাথে সংযুক্ত করার পরামর্শ দেয়।
আপনার PurchasesUpdatedListener কল করার আগে যদি ক্রয় প্রক্রিয়া বাধাগ্রস্ত হয়, তাহলে আপনার অ্যাপটি পুনরায় চালু হয়ে BillingClient.queryPurchasesAsync() কল করার পর ক্রয়টি খুঁজে পাবে। এরপর আপনি Purchase অবজেক্টের getPurchaseTime() , getSku() , এবং getPurchaseToken() মেথড থেকে প্রাপ্ত মানগুলো আপনার ব্যাকএন্ড সার্ভারে পাঠাতে পারেন মেটাডেটা খোঁজার জন্য, মেটাডেটাকে পারচেজ টোকেনের সাথে যুক্ত করার জন্য, এবং ক্রয় প্রক্রিয়া চালিয়ে যাওয়ার জন্য। মনে রাখবেন যে, আপনি প্রাথমিকভাবে যে টাইমস্ট্যাম্পটি সংরক্ষণ করেছিলেন তা Purchase অবজেক্টের getPurchaseTime() থেকে প্রাপ্ত মানের সাথে হুবহু মিলবে না, তাই আপনাকে সেগুলোকে একটি আনুমানিক উপায়ে তুলনা করতে হবে। উদাহরণস্বরূপ, আপনি পরীক্ষা করে দেখতে পারেন যে মানগুলো একে অপরের একটি নির্দিষ্ট সময়কালের মধ্যে আছে কিনা।