১. ভূমিকা
এই কোডল্যাবে আপনি একটি ওয়ান-টাইম প্রোডাক্ট (OTP) তৈরি করা এবং পণ্যটির জন্য একটি প্রি-অর্ডার অফার যোগ করার উপর মনোযোগ দেবেন।
দ্রষ্টব্য : এই কোডল্যাবটি শুরু করার আগে, আপনাকে ওয়ান-টাইম প্রোডাক্টস ইএপি ইন্টারেস্ট ফর্মটি পূরণ করে প্রি-অর্ডার ফিচারের জন্য অ্যাক্সেসের অনুরোধ করতে হবে।
দর্শক
এই কোডল্যাবটি সেইসব অ্যান্ড্রয়েড অ্যাপ ডেভেলপারদের জন্য তৈরি করা হয়েছে, যারা ওয়ান-টাইম প্রোডাক্ট সম্পর্কে পরিচিত এবং নিজেদের প্রোডাক্টে কীভাবে প্রি-অর্ডার অফার যোগ করতে হয় তা বুঝতে চান।
পূর্বশর্ত
আপনি যদি ওয়ান-টাইম প্রোডাক্টের ক্ষেত্রে নতুন হন, তাহলে ' Unlock new markets with regional product pricing ' কোডল্যাবটি সম্পন্ন করার পরামর্শ দেওয়া হচ্ছে।
আপনি যা শিখবেন...
- আপনার ওয়ান-টাইম প্রোডাক্টগুলোর জন্য প্রি-অর্ডার অফার তৈরি করতে কীভাবে গুগল প্লে কনসোল ব্যবহার করবেন।
- প্লে বিলিং লাইব্রেরি এপিআই ব্যবহার করে কীভাবে ওয়ান-টাইম প্রোডাক্ট এবং সংশ্লিষ্ট প্রি-অর্ডার অফারের বিবরণ সম্পর্কে জানতে পারবেন
আপনার যা যা লাগবে...
- ডেভেলপার অ্যাকাউন্টের মাধ্যমে গুগল প্লে কনসোলে প্রবেশ করা যাবে। যদি আপনার ডেভেলপার অ্যাকাউন্ট না থাকে, তাহলে আপনাকে একটি অ্যাকাউন্ট তৈরি করতে হবে।
- এই কোডল্যাবের জন্য একটি নমুনা অ্যাপ, যা আপনি গিটহাব থেকে ডাউনলোড করতে পারেন।
- অ্যান্ড্রয়েড স্টুডিও ।
২. নমুনা অ্যাপটি তৈরি করুন
এই কোডল্যাবটি একটি নমুনা অ্যান্ড্রয়েড অ্যাপ ব্যবহার করে আপনাকে ওয়ান-টাইম প্রোডাক্ট পরিচালনা করতে শেখাবে। নমুনা অ্যাপটি একটি সম্পূর্ণ কার্যকরী অ্যান্ড্রয়েড অ্যাপ হিসেবে ডিজাইন করা হয়েছে, যার সম্পূর্ণ সোর্স কোড রয়েছে এবং যা নিম্নলিখিত দিকগুলো প্রদর্শন করে:
- PBL-এর সাথে অ্যাপটিকে একীভূত করুন।
- এককালীন পণ্য এবং সংশ্লিষ্ট প্রি-অর্ডার অফারগুলো সম্পর্কে জানানো হচ্ছে।
- আঞ্চলিক মূল্য নির্ধারণের জন্য ক্রয় প্রক্রিয়া সম্পাদন করুন।
নিম্নলিখিত ডেমো ভিডিওটিতে দেখানো হয়েছে যে, নমুনা অ্যাপটি ডেপ্লয় এবং রান করার পর দেখতে কেমন হবে ও এর আচরণ কেমন হবে।
যদি আপনি ওয়ান-টাইম প্রোডাক্ট এবং প্লে বিলিং লাইব্রেরি (PBL) সম্পর্কে আগে থেকেই পরিচিত থাকেন, তাহলে আপনি স্যাম্পল অ্যাপটি ডাউনলোড করে এটি ব্যবহার করে দেখতে পারেন।
পূর্বশর্ত
স্যাম্পল অ্যাপটি বিল্ড এবং ডিপ্লয় করার আগে, নিম্নলিখিত কাজগুলো করুন:
- একটি গুগল প্লে কনসোল ডেভেলপার অ্যাকাউন্ট তৈরি করুন । যদি আপনার আগে থেকেই একটি ডেভেলপার অ্যাকাউন্ট থাকে, তাহলে এই ধাপটি এড়িয়ে যান।
- প্লে কনসোলে একটি নতুন অ্যাপ তৈরি করুন । অ্যাপ তৈরি করার সময়, আপনি নমুনা অ্যাপটির জন্য যেকোনো নাম নির্দিষ্ট করতে পারেন।
- অ্যান্ড্রয়েড স্টুডিও ইনস্টল করুন।
নির্মাণ করুন
এই বিল্ড ধাপটির উদ্দেশ্য হলো নমুনা অ্যাপটির একটি স্বাক্ষরিত অ্যান্ড্রয়েড অ্যাপ বান্ডেল ফাইল তৈরি করা।
অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করতে, নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
- গিটহাব থেকে নমুনা অ্যাপটি ডাউনলোড করুন।
- স্যাম্পল অ্যাপটি বিল্ড করুন । বিল্ড করার আগে, স্যাম্পল অ্যাপটির প্যাকেজ নামটি পরিবর্তন করুন এবং তারপর বিল্ড করুন। আপনার প্লে কনসোলে যদি অন্য অ্যাপের প্যাকেজ থাকে, তবে স্যাম্পল অ্যাপটির জন্য দেওয়া প্যাকেজ নামটি যেন অনন্য হয়, তা নিশ্চিত করুন।
দ্রষ্টব্য : স্যাম্পল অ্যাপটি বিল্ড করলে শুধুমাত্র একটি APK ফাইল তৈরি হয় যা আপনি লোকাল টেস্টিংয়ের জন্য ব্যবহার করতে পারেন। তবে, অ্যাপটি রান করলে প্রোডাক্ট এবং দাম পাওয়া যায় না, কারণ প্রোডাক্টগুলো প্লে কনসোলে কনফিগার করা হয়নি। - একটি স্বাক্ষরিত অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করুন।
পরবর্তী ধাপ হলো অ্যান্ড্রয়েড অ্যাপ বান্ডেলটি গুগল প্লে কনসোলে আপলোড করা।
৩. প্লে কনসোলে প্রি-অর্ডার দিয়ে OTP তৈরি করুন।
গুগল প্লে কনসোলে ওয়ান-টাইম প্রোডাক্ট (OTP) তৈরি করতে হলে, আপনার প্লে কনসোলে একটি অ্যাপ থাকতে হবে। প্লে কনসোলে একটি অ্যাপ তৈরি করুন এবং তারপরে পূর্বে তৈরি করা সাইনড অ্যাপ বান্ডেলটি আপলোড করুন।
একটি অ্যাপ তৈরি করুন
একটি অ্যাপ তৈরি করতে:
- আপনার ডেভেলপার অ্যাকাউন্ট ব্যবহার করে গুগল প্লে কনসোলে লগ-ইন করুন।
- 'Create app'-এ ক্লিক করুন। এটি 'Create app' পেজটি খুলে দেবে।
- একটি অ্যাপের নাম লিখুন, ডিফল্ট ভাষা নির্বাচন করুন এবং অ্যাপ সম্পর্কিত অন্যান্য বিবরণ দিন।
- 'Create app'-এ ক্লিক করুন। এটি গুগল প্লে কনসোলে একটি অ্যাপ তৈরি করবে।
এখন আপনি নমুনা অ্যাপটির স্বাক্ষরিত অ্যাপ বান্ডেলটি আপলোড করতে পারবেন।
স্বাক্ষরিত অ্যাপ বান্ডেল আপলোড করুন
- স্বাক্ষরিত অ্যাপ বান্ডেলটি গুগল প্লে-এর কনসোল অভ্যন্তরীণ টেস্ট ট্র্যাকে আপলোড করুন । আপলোড করার পরেই আপনি প্লে কনসোলে মনিটাইজেশন সম্পর্কিত ফিচারগুলো কনফিগার করতে পারবেন।
- টেস্ট এবং রিলিজ > টেস্টিং > ইন্টারনাল রিলিজ > নতুন রিলিজ তৈরি করুন-এ ক্লিক করুন।
- একটি রিলিজের নাম লিখুন এবং স্বাক্ষরিত APK ফাইলটি আপলোড করুন।
- Next-এ ক্লিক করুন, এবং তারপর Save and publish-এ ক্লিক করুন।
এখন, আপনি এককালীন পণ্যগুলো তৈরি করতে পারবেন।
এককালীন পণ্য তৈরি করুন
এখন, এমন একটি এককালীন পণ্য তৈরি করুন যা আপনি ব্যবহারকারীদের দিয়ে কেনাতে চান।
- Google Play Console- এ নমুনা অ্যাপটি খুলুন এবং Monetize with Play > Products > One-time products-এ যান।
- এককালীন পণ্য তৈরি করুন-এ ক্লিক করুন।
- নিম্নলিখিত পণ্যের বিবরণ লিখুন:
- প্রোডাক্ট আইডি: একটি অনন্য আইডি দিন। উদাহরণস্বরূপ,
upcoming_movie_1। - (ঐচ্ছিক) ট্যাগ: প্রাসঙ্গিক ট্যাগ যোগ করুন।
- নাম: পণ্যের একটি নাম লিখুন। উদাহরণস্বরূপ,
Product Movie। - বিবরণ: পণ্যের একটি বিবরণ লিখুন। উদাহরণস্বরূপ,
Product Description। - (ঐচ্ছিক) একটি আইকন ছবি যোগ করুন: আপনার পণ্যের প্রতিনিধিত্বকারী একটি আইকন আপলোড করুন।
- প্রোডাক্ট আইডি: একটি অনন্য আইডি দিন। উদাহরণস্বরূপ,
- পরবর্তী ধাপে যান।
- একটি ক্রয় বিকল্প যোগ করুন এবং এর আঞ্চলিক প্রাপ্যতা কনফিগার করুন। একটি ওয়ান-টাইম পণ্যের জন্য অন্তত একটি ক্রয় বিকল্প প্রয়োজন, যা নির্ধারণ করে কীভাবে অধিকার প্রদান করা হবে, এর মূল্য এবং আঞ্চলিক প্রাপ্যতা। এই কোডল্যাবের জন্য, আমরা পণ্যটির জন্য স্ট্যান্ডার্ড 'কিনুন' ( Buy ) বিকল্পটি যোগ করব। 'ক্রয় বিকল্প' (Purchase option) বিভাগে, নিম্নলিখিত বিবরণগুলি লিখুন:
- ক্রয় বিকল্প আইডি: একটি অনন্য আইডি লিখুন। উদাহরণস্বরূপ,
buy-movie। - ক্রয়ের ধরণ: কিনুন নির্বাচন করুন।
- (ঐচ্ছিক) ট্যাগ: এই ক্রয় বিকল্পটির জন্য নির্দিষ্ট ট্যাগ যোগ করুন।
- (ঐচ্ছিক) উন্নত বিকল্পগুলো কনফিগার করতে 'Advanced options'-এ ক্লিক করুন। এই কোডল্যাবের জন্য, আপনি উন্নত বিকল্পগুলোর কনফিগারেশন এড়িয়ে যেতে পারেন।
- ক্রয় বিকল্প আইডি: একটি অনন্য আইডি লিখুন। উদাহরণস্বরূপ,
- এরপরে, আপনাকে ক্রয় বিকল্পটির জন্য আঞ্চলিক প্রাপ্যতা এবং মূল্য নির্ধারণ করতে হবে। আঞ্চলিক প্রাপ্যতা অংশে, আপনি সেই অঞ্চলগুলি নির্দিষ্ট করবেন যেখানে আপনার পণ্যটি পাওয়া যাবে, যার মধ্যে সেই অঞ্চলগুলিও অন্তর্ভুক্ত থাকবে যেখানে আপনার অ্যাপটি এখনও প্রকাশিত হয়নি। ডিফল্টরূপে, সমস্ত অঞ্চলে একটি ক্রয় বিকল্প উপলব্ধ থাকবে। 'প্রাপ্যতা এবং মূল্য নির্ধারণ' বিভাগে, 'প্রাপ্যতা এবং অ্যাক্সেস সম্পাদনা করুন'-এ ক্লিক করুন।
- অনুপলব্ধ হিসেবে সেট করুন নির্বাচন করুন।
- শুধুমাত্র
United Statesদেশটিকে অনির্বাচিত করুন, এবং তারপরে 'অনুপলব্ধ করতে সেট করুন'-এ ক্লিক করুন। এখন এককালীন পণ্যটি শুধুমাত্রUnited Statesউপলব্ধ হবে। - 'সমস্ত অঞ্চল' ড্রপ-ডাউন থেকে 'উপলব্ধ দেশ ও অঞ্চল' নির্বাচন করুন। আপনি শুধু
United Statesদেখতে পাবেন। - মূল্য আইকনটিতে ক্লিক করুন। এতে মূল্য নির্ধারণের জন্য একটি ডায়ালগ বক্স প্রদর্শিত হবে।
- ১০ ইউএসডি প্রবেশ করান এবং তারপর সেভ-এ ক্লিক করুন।
- খসড়া হিসাবে সংরক্ষণ করুন-এ ক্লিক করুন।
দ্রষ্টব্য : এখনই ক্রয়ের বিকল্পটি সক্রিয় করবেন না। প্রি-অর্ডার অফারটি কনফিগার করার পর আমরা এটি সক্রিয় করব। এর কারণ হলো, কোনো সক্রিয় ক্রয়ের বিকল্পে, যার আঞ্চলিক প্রাপ্যতা সেট করা আছে, তাতে আপনি প্রি-অর্ডার অফার যোগ করতে পারবেন না।
একটি প্রি-অর্ডার অফার যোগ করুন
এখন, আপনি পূর্বে তৈরি করা 'বাই' ক্রয় বিকল্পটির জন্য একটি প্রি-অর্ডার অফার যোগ করবেন। একটি প্রি-অর্ডার অফার ব্যবহারকারীদেরকে আপনার পণ্যটির আনুষ্ঠানিক প্রকাশের আগেই তা কেনার সুযোগ দেয়। মনে রাখবেন যে, প্রি-অর্ডার অফার শুধুমাত্র 'বাই' ক্রয় বিকল্পের জন্যই সমর্থিত এবং এটি একটি অঞ্চলের নতুন পণ্যের জন্যই কনফিগার করা যায়।
প্রি-অর্ডার অফার যোগ করতে নিম্নলিখিত ২টি ধাপ অনুসরণ করতে হয়:
- প্রি-অর্ডার অফারের জন্য 'Buy' ক্রয় বিকল্পটি প্রস্তুত করুন।
- ক্রয় বিকল্পের জন্য প্রি-অর্ডার অফারটি যোগ করুন।
প্রি-অর্ডার অফারের জন্য 'Buy' ক্রয় বিকল্পটি প্রস্তুত করুন।
- Google Play Console- এ নমুনা অ্যাপটি খুলুন এবং Monetize with Play > Products > One-time products-এ যান।
- ওয়ান-টাইম প্রোডাক্টস পেজে, আপনার প্রোডাক্টের (
upcoming_movie_1) জন্য ডানদিকের অ্যারোতে ক্লিক করুন। এটি এডিট ওয়ান-টাইম প্রোডাক্ট পেজটি খুলে দেবে। - আপনার পূর্বে তৈরি করা
buy-movieকেনার বিকল্পটির জন্য ডান তীরচিহ্নে ক্লিক করুন। এটি ' ক্রয় বিকল্প সম্পাদনা' পৃষ্ঠাটি খুলবে। - ‘Edit availability and access’- এ ক্লিক করুন এবং তারপরে ‘Set to available and allow users to pre-order’ নির্বাচন করুন।
- 'All regions' ড্রপ-ডাউন থেকে 'Available countries and regions' নির্বাচন করুন। এতে শুধু
United Statesদেখানো উচিত, যা আপনি আগে কনফিগার করেছিলেন। - দেশ নির্বাচন করুন, এবং তারপরে 'শুধুমাত্র প্রি-অর্ডারের জন্য উপলব্ধ' করতে 'সেট করুন'-এ ক্লিক করুন।
- সংরক্ষণ করুন- এ ক্লিক করুন।
লক্ষ্য করুন যে আপনি এখনও আপনার ক্রয় বিকল্পে কোনো প্রি-অর্ডার অফার যোগ করেননি। পরবর্তী পদক্ষেপ হলো প্রি-অর্ডার অফারটি যোগ করা।
একটি প্রি-অর্ডার অফার যোগ করুন
- Google Play Console- এ নমুনা অ্যাপটি খুলুন এবং Monetize with Play > Products > One-time products-এ যান।
- ওয়ান-টাইম প্রোডাক্টস পেজে, আপনার প্রোডাক্টের (
upcoming_movie_1) জন্য অ্যাড অফার > প্রি-অর্ডার-এ ক্লিক করুন। এটি অ্যাড প্রি-অর্ডার পেজটি খুলে দেবে। - প্রি-অর্ডারের বিবরণ লিখুন:
- প্রি-অর্ডার আইডি:
preorder-offer-1লিখুন। - (ঐচ্ছিক) ছাড় যোগ করুন: আপনি 'কোনোটিই নয়' , 'শতাংশ' বা 'নির্দিষ্ট ছাড়' নির্বাচন করতে পারেন। এই কোডল্যাবের জন্য, ' কোনোটিই নয়' নির্বাচন করুন।
- (ঐচ্ছিক) ট্যাগ: প্রাসঙ্গিক ট্যাগ যোগ করুন।
- শুরুর তারিখ ও সময়: কমপক্ষে ৩ দিন পরের একটি তারিখ নির্ধারণ করুন।
- শেষের তারিখ ও সময়: শুরুর তারিখের অন্তত ২৪ ঘণ্টা পরের একটি তারিখ নির্ধারণ করুন।
- প্রি-অর্ডারের পর প্রাপ্যতা: পণ্যটি প্রি-অর্ডার পর্ব শেষ হওয়ার সাথে সাথেই পাওয়া যাবে, নাকি পরবর্তী কোনো নির্দিষ্ট তারিখ/সময়ে পাওয়া যাবে, তা বেছে নিন।
- (ঐচ্ছিক) সর্বনিম্ন মূল্যের নিশ্চয়তা: যদি আপনি চান যে ব্যবহারকারীদের কাছ থেকে তাদের প্রি-অর্ডার মূল্য এবং পণ্য প্রকাশের সময়ের মূল্যের মধ্যবর্তী সর্বনিম্ন মূল্যটি নেওয়া হোক, তাহলে এই বিকল্পটি নির্বাচন করুন। এটি আগাম ক্রেতাদের জন্য একটি শক্তিশালী প্রণোদনা হতে পারে।
- প্রি-অর্ডার আইডি:
- সংরক্ষণ করুন- এ ক্লিক করুন।
- আপনার ওয়ান-টাইম প্রোডাক্ট (upcoming_movie_1)-এর জন্য এডিট ওয়ান-টাইম প্রোডাক্ট পেজটি খুলুন।
- ক্রয় বিকল্পটি (
buy-movie) সক্রিয় করতে ক্লিক করুন। - 'buy' ক্রয় বিকল্পের অধীনে প্রি-অর্ডার অফারটির (
preorder-offer-1) জন্য 'Activate'- এ ক্লিক করুন। এটি প্রি-অর্ডার অফারটি সক্রিয় করে এবং প্রি-অর্ডারের বিবরণে আপনার পূর্বে সেট করা তারিখে এটিকে লাইভ করে তোলে।
প্রি-অর্ডার অফার তৈরির ভিডিও
নিম্নলিখিত ভিডিওটিতে পূর্বে বর্ণিত প্রি-অর্ডার অফার তৈরির ধাপগুলো দেখানো হয়েছে।
৪. পিবিএল-এর সাথে একীভূত করুন
আপনার অ্যাপকে প্লে বিলিং লাইব্রেরি (PBL)- এর সাথে সংযুক্ত করতে, নিম্নলিখিত ধাপগুলো অনুসরণ করুন:
- স্যাম্পল অ্যাপটিতে প্লে বিলিং লাইব্রেরি ডিপেন্ডেন্সিটি যোগ করুন।
dependencies { val billing_version = "8.1.0" implementation("com.android.billingclient:billing-ktx:$billing_version") } - BillingClient ইনিশিয়ালাইজ করুন। BillingClient হলো ক্লায়েন্ট SDK যা আপনার অ্যাপে থাকে এবং প্লে বিলিং লাইব্রেরির সাথে যোগাযোগ করে। নিচের কোড স্নিপেটটিতে দেখানো হয়েছে কীভাবে বিলিং ক্লায়েন্ট ইনিশিয়ালাইজ করতে হয়।
private BillingClient createBillingClient() { return BillingClient.newBuilder(activity) .enablePendingPurchases(PendingPurchasesParams.newBuilder().enableOneTimeProducts().build()) // For one-time products, add a listener to process and acknowledge the purchases. This will notify // Google the purchase was processed. // For client-only apps, use billingClient.acknowledgePurchase(). // If you have a secure backend, you must acknowledge purchases on your server using the // server-side API. // See https://developer.android.com/google/play/billing/security#acknowledge // In this sample snippet purchases aren't processed. You must // implement your business logic to process and acknowledge the purchases. .setListener((billingResult, purchases) -> {}) .enableAutoServiceReconnection() .build(); } - গুগল প্লে-এর সাথে সংযোগ করুন। নিচের কোড স্নিপেটটি দেখায় কিভাবে গুগল প্লে-এর সাথে সংযোগ করতে হয়।
/** * Starts the billing connection with Google Play. This method should be called exactly once * before any other methods in this class. * * @param productList The list of products to query for after the connection is established. */ public void startBillingConnection(List<Product> productList) { billingClient.startConnection( new BillingClientStateListener() { @Override public void onBillingSetupFinished(BillingResult billingResult) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { Log.d(TAG, "Billing Client Connection Successful"); queryProductDetails(productList); } else { Log.e(TAG, "Billing Client Connection Failed: " + billingResult.getDebugMessage()); listener.onBillingSetupFailed(billingResult); // Propagate the error to the listener to show a message to the user. } } @Override public void onBillingServiceDisconnected() { Log.e(TAG, "Billing Client Connection Lost"); listener.onBillingError("Billing Connection Lost"); } }); } - এককালীন পণ্যের বিবরণ সংগ্রহ করুন। PBL-এর সাথে আপনার অ্যাপ ইন্টিগ্রেট করার পর, আপনাকে অবশ্যই আপনার অ্যাপে এককালীন পণ্যের বিবরণ সংগ্রহ করতে হবে। নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে আপনার অ্যাপে এককালীন পণ্যের বিবরণ সংগ্রহ করতে হয়।
private void queryProductDetails(List<Product> productList) { QueryProductDetailsParams queryProductDetailsParams = QueryProductDetailsParams.newBuilder().setProductList(productList).build(); billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { @Override public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResponse) { if (billingResult.getResponseCode() == BillingResponseCode.OK) { List<ProductDetails> productDetailsList = productDetailsResponse.getProductDetailsList(); listener.onProductDetailsResponse(productDetailsList); } else { Log.e(TAG, "QueryProductDetailsAsync Failed: " + billingResult.getDebugMessage()); listener.onBillingError("Query Products Failed: " + billingResult.getResponseCode()); } } }); }ProductDetailsথেকে এককালীন পণ্যটি (এই উদাহরণেupcoming_movie_1) ফেচ করলে, আপনি নিম্নলিখিতের মতো একটি প্রতিক্রিয়া পাবেন: লক্ষ্য করুন, প্রি-অর্ডার অফারের বিস্তারিত তথ্য{ "productId": "upcoming_movie_1", "type": "inapp", "title": "Purrfect Mayhem: The Final Playback (Movies All Day | Play Samples)", "name": "Purrfect Mayhem: The Final Playback", "description": "Yolo and Thorne must reach the original broadcasting site to initiate the \"Final Playback\" and save the timeline. Follow them through their race against the Clockinators.", "skuDetailsToken": "<---skuDetailsToken--->", "oneTimePurchaseOfferDetails": {}, "oneTimePurchaseOfferDetailsList": [ { "priceAmountMicros": 8500000, "priceCurrencyCode": "USD", "formattedPrice": "$8.50", "offerIdToken": "<---offerIdToken--->", "offerId": "preorder", "purchaseOptionId": "buy-option", "offerTags": [], "validTimeWindow": { "startTimeMillis": 1756771200000, "endTimeMillis": 1785542400000 }, "preorderDetails": { "preorderReleaseTimeMillis": 1785542400000, "preorderPresaleEndTimeMillis": 1785542400000 } } ] }oneTimePurchaseOfferDetailsListএ পাওয়া যায়। এই তালিকায় ১টি ক্রয় বিকল্প ( buy-option ) রয়েছে, যার জন্য প্লে কনসোলে প্রি-অর্ডার অফার কনফিগার করা হয়েছিল। আপনি প্রতিটি ক্রয় বিকল্পকে তার offerIdToken দ্বারা স্বতন্ত্রভাবে শনাক্ত করতে পারবেন। - প্রি-অর্ডার অফারের বিবরণের সাথে অফার টোকেনটি সংগ্রহ করুন। ধাপ ৬-এ বিলিং প্রক্রিয়া চালু করার জন্য আপনার অফার টোকেনটি প্রয়োজন হবে।
@Override public void onProductDetailsResponse(List<ProductDetails> productDetailsList) { if (productDetailsList != null && !productDetailsList.isEmpty()) { // Process productDetailsList returned by QueryProductDetailsResult for (ProductDetails productDetails : productDetailsResult.getProductDetailsList()) { for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails : productDetails.getOneTimePurchaseOfferDetailsList()) { // Checks if the offer is a preorder offer. if (oneTimePurchaseOfferDetails.getPreorderDetails() != null) { // Process the returned PreorderDetails OneTimePurchaseOfferDetails.PreorderDetails preorderDetails = oneTimePurchaseOfferDetails.getPreorderDetails(); // Get preorder release time in millis. long preorderReleaseTimeMillis = preorderDetails.getPreorderReleaseTimeMillis(); // Get preorder presale end time in millis. long preorderPresaleEndTimeMillis = preorderDetails.getPreorderPresaleEndTimeMillis(); // Get offer ID String offerId = oneTimePurchaseOfferDetails.getOfferId(); // Get the associated purchase option ID if (oneTimePurchaseOfferDetails.getPurchaseOptionId() != null) { String purchaseOptionId = oneTimePurchaseOfferDetails.getPurchaseOptionId(); } } } } } else { Log.e(TAG, "No product details found for " + productId); } } - বিলিং প্রক্রিয়াটি চালু করুন।
/** * Launches the billing flow for the product with the given offer token. * * @param activity The activity instance from which the billing flow will be launched. * @param productDetails The product details of the product to purchase. * @param offerToken The offer token of the product to purchase. * @return The result of the billing flow. */ public void launchPurchase(Activity activity, ProductDetails productDetails, String offerToken) { ImmutableList<BillingFlowParams.ProductDetailsParams> productDetailsParamsList = ImmutableList.of( BillingFlowParams.ProductDetailsParams.newBuilder() .setProductDetails(productDetails) .setOfferToken(offerToken) .build()); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsParamsList) .build(); billingClient.launchBillingFlow(activity, billingFlowParams); }
৫. ক্রয়ের বিকল্পগুলি পরীক্ষা করুন
আপনার লাইভ অ্যাপে ওয়ান-টাইম প্রোডাক্টগুলো উপলব্ধ করার আগে, আপনি লাইসেন্স টেস্টার এবং প্লে বিলিং ল্যাব ব্যবহার করে আপনার পিবিএল ইন্টিগ্রেশন পরীক্ষা করে নিতে পারেন।
প্লে বিলিং ল্যাব ব্যবহার করে আপনি কীভাবে আপনার ক্রয়ের বিকল্পগুলি পরীক্ষা করতে পারেন তা বুঝতে, "আঞ্চলিক পণ্যের মূল্য নির্ধারণের মাধ্যমে নতুন বাজার আনলক করুন" কোডল্যাবটি দেখুন।
৬. পরবর্তী পদক্ষেপ
- পণ্যের ক্রয় কমে যাওয়ার কারণ বিশ্লেষণ করার পদ্ধতি জানুন।
- আঞ্চলিক মূল্য নির্ধারণ পদ্ধতি ব্যবহার করে কীভাবে নতুন বাজার উন্মোচন করা যায় তা শিখুন।
- আপনার প্লে বিলিং ইন্টিগ্রেশন থেকে কীভাবে সর্বোচ্চ সুবিধা লাভ করবেন তা জানুন।
- ব্যবহারকারীরা এই পণ্যগুলি কেনা শুরু করলে, আপনার সুরক্ষিত ব্যাকএন্ডে কেনাকাটা যাচাই ও প্রক্রিয়াকরণের জন্য সর্বোত্তম পদ্ধতিগুলি অনুসরণ করতে ভুলবেন না।
রেফারেন্স নথি
৭. অভিনন্দন!
অভিনন্দন! আপনি সফলভাবে গুগল প্লে কনসোল ব্যবহার করে একটি এককালীন পণ্যের জন্য প্রি-অর্ডার অফার তৈরি করেছেন। এখন আপনি এককালীন ক্রয়ের জন্য গুগল প্লে-এর নমনীয় পণ্য ক্যাটালগ সম্পর্কে আরও ভালোভাবে বুঝতে পেরেছেন।
জরিপ
এই কোডল্যাব সম্পর্কে আপনার মতামত অত্যন্ত মূল্যবান। অনুগ্রহ করে কয়েক মিনিট সময় নিয়ে আমাদের সমীক্ষাটি পূরণ করুন।