আঞ্চলিক পণ্যের মূল্য নির্ধারণের মাধ্যমে নতুন বাজার উন্মোচন করুন

1. ভূমিকা

এই কোডল্যাবে আপনি একটি এককালীন পণ্য তৈরির উপর মনোযোগ দেবেন, এর ক্রয়ের বিকল্পটি সংজ্ঞায়িত করবেন, অঞ্চল-নির্দিষ্ট মূল্য নির্ধারণ করবেন এবং এককালীন পণ্যের ক্রয় প্রবাহ পরীক্ষা করবেন।

পাঠকবর্গ

এই কোডল্যাবটি অ্যান্ড্রয়েড অ্যাপ ডেভেলপারদের জন্য তৈরি যারা তাদের এককালীন পণ্য ক্যাটালগ পরিচালনা করতে Play Console ব্যবহার করতে চান।

তুমি যা শিখবে...

  • এককালীন পণ্য বস্তুর মডেল
  • আপনার এককালীন পণ্য ক্যাটালগ পরিচালনা করার জন্য গুগল প্লে কনসোল কীভাবে নেভিগেট করবেন এবং ব্যবহার করবেন।
  • কীভাবে এককালীন পণ্যের বিবরণ বিনামূল্যে বিভিন্ন ভাষায় অনুবাদ করা যায়।
  • এককালীন পণ্যের জন্য আঞ্চলিক প্রাপ্যতা এবং মূল্য কীভাবে কনফিগার করবেন।
  • এককালীন পণ্যের বিবরণ জিজ্ঞাসা করার জন্য Play Billing Library API গুলি কীভাবে ব্যবহার করবেন।
  • প্লে বিলিং ল্যাব ব্যবহার করে কীভাবে এককালীন পণ্য পরীক্ষা করবেন।

তোমার যা লাগবে...

২. এককালীন পণ্য প্রিমিয়ার

এককালীন পণ্য অবজেক্ট মডেল পণ্য বিক্রির ক্ষেত্রে আরও নমনীয়তা প্রদান করে এবং সেগুলি পরিচালনার জটিলতা কমায়। অবজেক্ট মডেলটি কী বিক্রি হচ্ছে তা কীভাবে বিক্রি হচ্ছে তা থেকে আলাদা করে, একই অধিকারকে একাধিক মূল্য বিন্দু এবং ব্যবহারকারীদের কাছে বাজারজাত করার বিভিন্ন উপায়ের অনুমতি দেয়। অবজেক্ট মডেলটিতে তিনটি স্তরের শ্রেণিবিন্যাস রয়েছে:

  • এককালীন পণ্য - একটি পণ্যের বস্তু ব্যবহারকারী কী কিনছেন তা নির্ধারণ করে।
  • ক্রয়ের বিকল্প - একটি ক্রয়ের বিকল্প ব্যবহারকারীকে কীভাবে এনটাইটেলমেন্ট দেওয়া হবে, এর দাম এবং পণ্যটি কোথায় (অঞ্চলে) পাওয়া যাবে তা নির্ধারণ করে। একটি পণ্যের একাধিক ক্রয়ের বিকল্প থাকতে পারে, যা বিভিন্ন অঞ্চলে বিভিন্ন দামের প্রতিনিধিত্ব করতে পারে।
  • অফার - অফারগুলি যে ক্রয় বিকল্পের সাথে লিঙ্ক করা হয়েছে তার দামের উপর প্রভাব ফেলতে পারে এবং ছাড় বা প্রি-অর্ডার মডেল করার জন্য ব্যবহার করা যেতে পারে। একটি একক ক্রয় বিকল্পে একাধিক অফার থাকতে পারে।

নিম্নলিখিত চিত্রটি এককালীন পণ্য বস্তুর মডেল দেখায়।

কোডল্যাব-ওটিপি-মডেল.পিএনজি চিত্র ১ : এককালীন বস্তুর মডেল।

আরও তথ্যের জন্য, এককালীন পণ্যের ওভারভিউ দেখুন।

৩. নমুনা অ্যাপ তৈরি করুন

এই কোডল্যাবটি আপনাকে এককালীন পণ্য পরিচালনা করার পদ্ধতি দেখানোর জন্য একটি নমুনা অ্যান্ড্রয়েড অ্যাপ ব্যবহার করে। নমুনা অ্যাপটি সম্পূর্ণরূপে কার্যকরী একটি অ্যান্ড্রয়েড অ্যাপ হিসেবে ডিজাইন করা হয়েছে যার সম্পূর্ণ সোর্স কোড রয়েছে যা নিম্নলিখিত দিকগুলি দেখায়:

  • অ্যাপটিকে PBL এর সাথে একীভূত করা
  • এককালীন পণ্য আনা এবং সংশ্লিষ্ট ক্রয়ের বিকল্পগুলি
  • আঞ্চলিক মূল্য নির্ধারণের সাথে ক্রয় প্রবাহ চালান

নিচের ডেমো ভিডিওটিতে দেখানো হয়েছে যে নমুনা অ্যাপটি স্থাপন এবং চালানোর পরে কেমন দেখাবে এবং আচরণ করবে।

আপনি যদি ইতিমধ্যেই এককালীন পণ্য এবং প্লে বিলিং লাইব্রেরি (PBL) এর সাথে পরিচিত হন, তাহলে আপনি নমুনা অ্যাপটি ডাউনলোড করে এটি দিয়ে খেলতে পারেন।

পূর্বশর্ত

নমুনা অ্যাপ তৈরি এবং স্থাপন করার আগে, নিম্নলিখিতগুলি করুন:

নির্মাণ করুন

এই বিল্ড ধাপের উদ্দেশ্য হল নমুনা অ্যাপের একটি স্বাক্ষরিত অ্যান্ড্রয়েড অ্যাপ বান্ডেল ফাইল তৈরি করা।

অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করতে, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

  1. GitHub থেকে নমুনা অ্যাপটি ডাউনলোড করুন।
  2. নমুনা অ্যাপ তৈরি করুন । তৈরি করার আগে, নমুনা অ্যাপের প্যাকেজ নাম পরিবর্তন করুন এবং তারপর তৈরি করুন। যদি আপনার Play Console-এ অন্যান্য অ্যাপের প্যাকেজ থাকে, তাহলে নিশ্চিত করুন যে নমুনা অ্যাপের জন্য আপনি যে প্যাকেজ নামটি দিয়েছেন তা অনন্য।

    দ্রষ্টব্য : নমুনা অ্যাপ তৈরি করলে কেবল একটি APK ফাইল তৈরি হয় যা আপনি স্থানীয় পরীক্ষার জন্য ব্যবহার করতে পারেন। তবে, অ্যাপটি চালানোর ফলে পণ্য এবং দাম পাওয়া যায় না কারণ পণ্যগুলি Play Console-এ কনফিগার করা হয়নি।
  3. একটি স্বাক্ষরিত অ্যান্ড্রয়েড অ্যাপ বান্ডেল তৈরি করুন।
    1. একটি আপলোড কী এবং কীস্টোর তৈরি করুন
    2. আপনার আপলোড কী দিয়ে অ্যাপে সাইন ইন করুন
    3. প্লে অ্যাপ সাইনিং কনফিগার করুন

পরবর্তী ধাপ হল গুগল প্লে কনসোলে অ্যান্ড্রয়েড অ্যাপ বান্ডেল আপলোড করা।

৪. প্লে কনসোলে এককালীন পণ্য তৈরি করুন

গুগল প্লে কনসোলে এককালীন পণ্য তৈরি করতে, আপনার প্লে কনসোলে একটি অ্যাপ থাকা দরকার। প্লে কনসোলে একটি অ্যাপ তৈরি করুন এবং তারপরে পূর্বে তৈরি স্বাক্ষরিত অ্যাপ বান্ডেলটি আপলোড করুন।

একটি অ্যাপ তৈরি করুন

একটি অ্যাপ তৈরি করতে:

  1. আপনার ডেভেলপার অ্যাকাউন্ট ব্যবহার করে গুগল প্লে কনসোলে লগ-ইন করুন।
  2. "অ্যাপ তৈরি করুন" এ ক্লিক করুন। এটি "অ্যাপ তৈরি করুন" পৃষ্ঠাটি খুলবে।
  3. একটি অ্যাপের নাম লিখুন, ডিফল্ট ভাষা নির্বাচন করুন এবং অ্যাপ সম্পর্কিত অন্যান্য বিবরণ দিন।
  4. অ্যাপ তৈরি করুন এ ক্লিক করুন। এটি গুগল প্লে কনসোলে একটি অ্যাপ তৈরি করে।

এখন আপনি নমুনা অ্যাপের স্বাক্ষরিত অ্যাপ বান্ডেলটি আপলোড করতে পারেন।

স্বাক্ষরিত অ্যাপ বান্ডেলটি আপলোড করুন

  1. স্বাক্ষরিত অ্যাপ বান্ডেলটি Google Play Console অভ্যন্তরীণ পরীক্ষা ট্র্যাকে আপলোড করুন । আপলোড করার পরেই, আপনি Play Console-এ নগদীকরণ সম্পর্কিত বৈশিষ্ট্যগুলি কনফিগার করতে পারবেন।
  2. পরীক্ষা এবং প্রকাশ > পরীক্ষা > অভ্যন্তরীণ প্রকাশ > নতুন প্রকাশ তৈরি করুন এ ক্লিক করুন।
  3. একটি রিলিজের নাম লিখুন এবং স্বাক্ষরিত APK ফাইলটি আপলোড করুন।
  4. পরবর্তী ক্লিক করুন, এবং তারপর সংরক্ষণ করুন এবং প্রকাশ করুন ক্লিক করুন।

এখন, আপনি আপনার এককালীন পণ্য তৈরি করতে পারেন।

এককালীন পণ্য তৈরি করুন

এককালীন পণ্য তৈরি করতে:

  1. Google Play Console- এ, বাম দিকের নেভিগেশন মেনু থেকে, Monetize with Play > Products > One-time products- এ যান।
  2. এককালীন পণ্য তৈরি করুন ক্লিক করুন।
  3. নিম্নলিখিত পণ্যের বিবরণ লিখুন:
    • পণ্য আইডি: একটি অনন্য আইডি লিখুন। উদাহরণস্বরূপ, trending_movie_1
    • (ঐচ্ছিক) ট্যাগ: প্রাসঙ্গিক ট্যাগ যোগ করুন।
    • নাম: একটি পণ্যের নাম লিখুন। উদাহরণস্বরূপ, Product Movie
    • বর্ণনা: একটি পণ্যের বিবরণ লিখুন। উদাহরণস্বরূপ, Product Description
    পণ্যের নাম এবং বর্ণনার ম্যানুয়াল অনুবাদ
    ডিফল্টরূপে, পণ্যের নাম এবং বিবরণ ইংরেজি (মার্কিন যুক্তরাষ্ট্র) - en-US ভাষায় থাকে। আপনি অন্যান্য ভাষায়ও নাম এবং বিবরণ ম্যানুয়ালি লিখতে পারেন। বিশদ বিবরণ প্রবেশ করাতে, অনুবাদ পরিচালনা করুন ক্লিক করুন, যে ভাষাগুলির জন্য আপনি অনুবাদিত পাঠ্য প্রবেশ করতে চান তা নির্বাচন করুন এবং তারপরে প্রয়োগ করুন ক্লিক করুন। নিম্নলিখিত চিত্রটি অনুবাদ পরিচালনা করুন বিকল্পটি দেখায়: manage-translations.png সম্পর্কে চিত্র ২ : অনুবাদ পরিচালনা করুন।

    আপনার নির্বাচিত ভাষাগুলি ভাষার ড্রপ-ডাউনে প্রদর্শিত হবে। প্রতিটি ভাষা নির্বাচন করুন এবং নির্বাচিত ভাষায় সংশ্লিষ্ট নাম এবং বিবরণ লিখুন। আপনি পণ্যের নাম এবং বিবরণ স্বয়ংক্রিয়ভাবে বিনামূল্যে অনুবাদ করতে পারেন। আরও তথ্যের জন্য, এই কোডল্যাবে "এককালীন পণ্য অনুবাদ করুন" বিভাগটি দেখুন।

    দ্রষ্টব্য : এই কোডল্যাবের উদ্দেশ্যে, আপনি আইকন ক্ষেত্র এবং কর, সম্মতি এবং প্রোগ্রাম বিভাগটি কনফিগার করা এড়িয়ে যেতে পারেন।
  4. পরবর্তী ক্লিক করুন।
  5. একটি ক্রয় বিকল্প যোগ করুন এবং এর আঞ্চলিক প্রাপ্যতা কনফিগার করুন। একটি এককালীন পণ্যের জন্য কমপক্ষে একটি ক্রয় বিকল্প প্রয়োজন, যা এনটাইটেলমেন্ট কীভাবে প্রদান করা হবে, এর দাম এবং আঞ্চলিক প্রাপ্যতা নির্ধারণ করে। এই কোডল্যাবের জন্য, আমরা পণ্যটির জন্য স্ট্যান্ডার্ড ক্রয় বিকল্প যোগ করব।

    ক্রয় বিকল্প বিভাগে, নিম্নলিখিত বিবরণগুলি লিখুন:
    • ক্রয় বিকল্প আইডি: একটি অনন্য আইডি লিখুন। উদাহরণস্বরূপ buy-movie
    • ক্রয়ের ধরণ: কিনুন নির্বাচন করুন।
    • (ঐচ্ছিক) ট্যাগ: এই ক্রয় বিকল্পের জন্য নির্দিষ্ট ট্যাগ যোগ করুন।
    • (ঐচ্ছিক) উন্নত বিকল্পগুলি কনফিগার করতে উন্নত বিকল্পগুলিতে ক্লিক করুন। এই কোডল্যাবের উদ্দেশ্যে, আপনি উন্নত বিকল্পগুলি কনফিগারেশন এড়িয়ে যেতে পারেন।
  6. এরপর, আপনাকে ক্রয় বিকল্পের জন্য আঞ্চলিক প্রাপ্যতা এবং মূল্য কনফিগার করতে হবে। আঞ্চলিক প্রাপ্যতা বিভাগে, আপনি আপনার পণ্যটি কোথায় পাওয়া যাবে তা নির্দিষ্ট করবেন, যার মধ্যে এমন অঞ্চলও অন্তর্ভুক্ত থাকবে যেখানে আপনার অ্যাপটি এখনও প্রকাশিত হয়নি। ডিফল্টরূপে, সমস্ত অঞ্চলে একটি ক্রয় বিকল্প উপলব্ধ থাকবে।

    "Availability and pricing" বিভাগে, "Edit availability" এ ক্লিক করুন এবং অ্যাক্সেস করুন > "Set to unavailable" এ ক্লিক করুন । লক্ষ্য করুন যে সমস্ত অঞ্চল ডিফল্টরূপে "Available" এ সেট করা আছে।
    1. France , Spain এবং United States ছাড়া সকল দেশ নির্বাচন করুন, তারপর Set to unavailable এ ক্লিক করুন।
    2. All regions ড্রপ-ডাউন থেকে, Available countries and regions নির্বাচন করুন। এটি শুধুমাত্র পূর্ববর্তী ধাপে নির্বাচিত দেশগুলি দেখায়।
    3. প্রতিটি উপলব্ধ দেশের জন্য, মূল্য কলামে সম্পাদনা আইকনে ক্লিক করুন। এটি মূল্য সম্পাদনা করার জন্য একটি ডায়ালগ প্রদর্শন করে। নিম্নলিখিত মূল্যগুলি লিখুন এবং সংরক্ষণ করুন:
      • France জন্য, ১০ ইউরো লিখুন
      • Spain জন্য, 8 EUR লিখুন
      • United States জন্য, ১৩ USD লিখুন
  7. সক্রিয় করুন এ ক্লিক করুন। এটি আপনার এককালীন পণ্যটি "কিনুন ক্রয়" বিকল্পের সাথে উপলব্ধ করে।

দ্রষ্টব্য : ব্যবহারকারীর Play দেশ সেটিংয়ের উপর ভিত্তি করে আঞ্চলিক মূল্য মুদ্রা দৃশ্যমান। উদাহরণস্বরূপ, যদি ব্যবহারকারীর Play দেশ ফ্রান্সে সেট করা থাকে, তাহলে এককালীন পণ্যের মূল্য ইউরোতে প্রদর্শিত হয়।

একবার ব্যবহারযোগ্য পণ্য তৈরির ভিডিও

নিম্নলিখিত ভিডিওটিতে পূর্বে বর্ণিত এককালীন পণ্য তৈরির ধাপগুলি দেখানো হয়েছে।

ভাড়া কেনার বিকল্প যোগ করুন

এখন, পূর্বে তৈরি করা এককালীন পণ্যের সাথে একটি ভাড়া ক্রয়ের বিকল্প যোগ করুন।

  1. Google Play Console- এ, বাম দিকের নেভিগেশন মেনু থেকে, Monetize with Play > Products > One-time products- এ যান।
  2. পূর্ববর্তী ধাপে তৈরি করা trending_movie_1 পণ্য আইডি সহ পণ্যটির ডান-তীর চিহ্নে ক্লিক করুন।
  3. ক্রয় যোগ করুন বিকল্পে ক্লিক করুন।
  4. ক্রয় বিকল্প বিভাগে, নিম্নলিখিত বিবরণ লিখুন:
    • ক্রয় বিকল্প আইডি: rent-movie লিখুন।
    • ক্রয়ের ধরণ: ভাড়া নির্বাচন করুন।
    • ভাড়ার সময়কাল: ৪৮ ঘন্টা নির্বাচন করুন।
    • ভাড়া শুরুর সময়কাল: ২৪ ঘন্টা নির্বাচন করুন।
    • (ঐচ্ছিক) ট্যাগ: এই ক্রয় বিকল্পের জন্য নির্দিষ্ট ট্যাগ যোগ করুন।
    • (ঐচ্ছিক) উন্নত বিকল্পগুলি কনফিগার করতে উন্নত বিকল্পগুলিতে ক্লিক করুন। এই কোডল্যাবের উদ্দেশ্যে, আপনি উন্নত বিকল্পগুলি কনফিগারেশন এড়িয়ে যেতে পারেন।
  5. এরপর, বাই ক্রয় বিকল্পের মতো, ভাড়া ক্রয় বিকল্পের জন্য আঞ্চলিক প্রাপ্যতা কনফিগার করুন। পূর্ববর্তী বিভাগে ধাপ 6 এবং 7 দেখুন। আঞ্চলিক মূল্য নির্ধারণ করার সময়, ভাড়ার জন্য একটি ভিন্ন মূল্য নির্ধারণ করুন। উদাহরণস্বরূপ:
    • France - ৫ ইউরো
    • Spain - ৪ ইউরো
    • United States - ৭ মার্কিন ডলার।

৫. এককালীন পণ্যের বিবরণ অনুবাদ করুন

গুগল প্লে কনসোলে উপলব্ধ মেশিন অনুবাদ বৈশিষ্ট্যটি ব্যবহার করে আপনি কোনও অতিরিক্ত খরচ ছাড়াই আপনার পণ্যের নাম এবং বিবরণ অনুবাদ করতে পারেন।

শিরোনাম এবং বর্ণনা অনুবাদ করতে, নিম্নলিখিতগুলি করুন:

  1. গুগল প্লে কনসোলে , বাম দিকের নেভিগেশন মেনু থেকে, গ্রো ইউজার > ট্রান্সলেশন > স্টোর এবং ইন-অ্যাপ পণ্যগুলিতে যান।
  2. অর্ডার তৈরি করুন ক্লিক করুন।
  3. "বিনা খরচে মেশিন অনুবাদ" বিকল্পটি নির্বাচন করুন, এবং তারপরে "পরবর্তী" ক্লিক করুন।
  4. ভাষাগুলিতে অনুবাদ করুন থেকে, ফরাসি - fr-FR এবং স্প্যানিশ -es-ES নির্বাচন করুন, এবং তারপরে পরবর্তী ক্লিক করুন।
  5. One-time products and subscriptions নির্বাচন করুন, এবং তারপর Translate এ ক্লিক করুন এবং অনুবাদ দেখুন । এটি একটি দাবিত্যাগ ব্যানার প্রদর্শন করে। দাবিত্যাগ স্বীকার করুন।
  6. এখন আপনি অনুবাদিত ভাষার তালিকা দেখতে পাবেন। "রিভিউ অ্যান্ড অ্যাপ্লাই ফর এ ল্যাঙ্গুয়েজ" এ ক্লিক করুন। টেক্সটটি পর্যালোচনা করুন এবং তারপর "অ্যাপ্লাই অল ট্রান্সলেশন" এ ক্লিক করুন। আপনি যে সকল ভাষার অনুবাদ করতে বেছে নিয়েছেন তার জন্য এই ধাপটি পুনরাবৃত্তি করুন।

অনুবাদের পরে, আপনি Play Console-এ অনুবাদিত লেখাটি সম্পাদনা করতে পারেন। অনুবাদিত লেখাটি সম্পাদনা করতে:

  1. এককালীন পণ্য > [আপনার এককালীন পণ্য] > এককালীন পণ্য সম্পাদনা করুন > এককালীন পণ্যের বিবরণ সম্পাদনা করুন পৃষ্ঠাটি খুলুন।
  2. ভাষার ড্রপ-ডাউন থেকে প্রয়োজনীয় ভাষা নির্বাচন করুন। এটি নির্বাচিত ভাষার লেখাটি দেখায়। নিচের ছবিতে অনুবাদিত লেখাটি সম্পাদনা করার জন্য একটি ভাষার নির্বাচন দেখানো হয়েছে:

    সম্পাদনা-অনুবাদ.png চিত্র ৩ : অনুবাদিত লেখা সম্পাদনা করুন।
  3. প্রয়োজন অনুযায়ী টেক্সট সম্পাদনা করুন, এবং তারপর পরিবর্তনগুলি সংরক্ষণ করুন এ ক্লিক করুন।

ব্যবহারকারীর ফোনের ভাষা পছন্দের উপর ভিত্তি করে অনুবাদিত টেক্সট ব্যবহারকারীর কাছে দৃশ্যমান হবে। উদাহরণস্বরূপ, যদি ব্যবহারকারীর ফোনের ভাষা ফ্রান্সে সেট করা থাকে, তাহলে এককালীন পণ্যের শিরোনাম এবং বিবরণ ফরাসি ভাষায় প্রদর্শিত হবে। নিম্নলিখিত নমুনা ছবিতে দেখানো হয়েছে যে অনুবাদিত টেক্সটটি বিভিন্ন ভাষায় কীভাবে এবং কোথায় প্রদর্শিত হবে।

অনুবাদ-পরবর্তী.png চিত্র ৪ : আপনার অ্যাপে অনুবাদিত টেক্সট।

অনুবাদ কনফিগারেশন ভিডিও

নিম্নলিখিত ভিডিওটিতে পূর্বে বর্ণিত অনুবাদ কনফিগারেশনের ধাপগুলি দেখানো হয়েছে।

৬. PBL এর সাথে একীভূত করুন

আপনার অ্যাপটি প্লে বিলিং লাইব্রেরি (PBL)- এর সাথে একীভূত করতে, নিম্নলিখিত পদক্ষেপগুলি অনুসরণ করুন:

  1. নমুনা অ্যাপে Play Billing Library নির্ভরতা যোগ করুন।
    dependencies {
    val billing_version = "8.0.0"
    
    implementation("com.android.billingclient:billing-ktx:$billing_version")
    }
    
  2. BillingClient আরম্ভ করুন। BillingClient হল ক্লায়েন্ট SDK যা আপনার অ্যাপে থাকে এবং Play Billing Library এর সাথে যোগাযোগ করে। নিম্নলিখিত কোড স্নিপেটটি দেখায় কিভাবে বিলিং ক্লায়েন্ট আরম্ভ করবেন।
    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();
     }
    
  3. গুগল প্লেতে সংযোগ করুন। নিম্নলিখিত কোড স্নিপেটটি গুগল প্লেতে কীভাবে সংযোগ করবেন তা দেখায়।
    /**
    * 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");
            }
            });
    }
    
  4. এককালীন পণ্যের বিবরণ আনুন। আপনার অ্যাপটি 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 এ এককালীন পণ্য (এই উদাহরণে trending_movie_1 ) আনয়ন করলে, আপনাকে নিম্নলিখিতগুলির মতো একটি প্রতিক্রিয়া পাওয়া যাবে:
    {
        "productId": "trending_movie_1",
        "type": "inapp",
        "title": "Purrfect Mayhem: The Rewind Protocol (Movies All Day | Play Samples)",
        "name": "Purrfect Mayhem: The Rewind Protocol",
        "description": "Dr. Arid Thorne and a smart tiger named Yolo find a mysterious tape. It's a \"Rewind Protocol\" to fix time. A shadowy group, the Clockinator, hunts them to seize the tape's power.",
        "skuDetailsToken": "<---skuDetailsToken--->",
        "oneTimePurchaseOfferDetails": {},
        "oneTimePurchaseOfferDetailsList": [
            {
                "priceAmountMicros": 13000000,
                "priceCurrencyCode": "USD",
                "formattedPrice": "$13.00",
                "offerIdToken": "<---buy offerIdToken --->",
                "purchaseOptionId": "buy-option",
                "offerTags": [
                    "adventure",
                    "mystery"
                ]
            },
            {
                "priceAmountMicros": 7000000,
                "priceCurrencyCode": "USD",
                "formattedPrice": "$7.00",
                "offerIdToken": "<---rent offerIdToken--->",
                "purchaseOptionId": "rent-option",
                "offerTags": [
                    "adventure",
                    "mystery"
                ],
                "rentalDetails": {
                    "rentalPeriod": "P30D",
                    "rentalExpirationPeriod": "PT24H"
                }
            }
        ]
    }
    
    লক্ষ্য করুন oneTimePurchaseOfferDetailsList এ buy এবং rent ক্রয়ের বিকল্পগুলি পাওয়া যায়। এই তালিকায় 2টি ক্রয়ের বিকল্প রয়েছে ( buy-option এবং rent-option ) যা Play Console-এ কনফিগার করা হয়েছে। আপনি প্রতিটি ক্রয়ের বিকল্পকে এর offerIdToken দ্বারা স্বতন্ত্রভাবে সনাক্ত করতে পারেন।
  5. "ভাড়া এবং কিনুন" অফারগুলির জন্য অফার টোকেনগুলি আনুন। ধাপ 6-এ বিলিং প্রবাহ চালু করার জন্য আপনার অফার টোকেনগুলির প্রয়োজন।
    @Override
    public void onProductDetailsResponse(List<ProductDetails> productDetailsList) {
    
        if (productDetailsList != null && !productDetailsList.isEmpty()) {
    
            // Iterate over all details of the queried product in step 4.
            for (ProductDetails productDetails : productDetailsList) {
    
                // Get the list of all the offers associated with the product.
                List<ProductDetails.OneTimePurchaseOfferDetails> offerDetailsList =
                        productDetails.getOneTimePurchaseOfferDetailsList();
    
                // Iterate over the offer details
                for (ProductDetails.OneTimePurchaseOfferDetails offerDetails : offerDetailsList) {
    
                    // For a Rent purchase option, the
                    // offerDetails.getRentalDetails() method returns
                    // the rent information. If this information is present,
                    // the offer corresponds to a Rent purchsae option.
                    if (offerDetails.getRentalDetails() != null) {
                        rentFormattedPrice = offerDetails.getFormattedPrice();
    
                        // Get the offerIdToken for the Rent purchase option
                        rentOfferToken = offerDetails.getOfferToken();
                        rentMovieTags = offerDetails.getOfferTags();
                    }
                    // If the offerDetails.getRentalDetails() returns
                    // null, the offer corresponds to a Buy purchsae option.
                    else {
                        buyFormattedPrice = offerDetails.getFormattedPrice();
    
                        // Get the offerIdToken for the Buy purchase option
                        buyOfferToken = offerDetails.getOfferToken();
                        buyMovieTags = offerDetails.getOfferTags();
                    }
                }
                updateUIButtons();
                return;
    
            }
        } else {
            Log.e(TAG, "No product details found for " + productId);
        }
    }
    
  6. বিলিং ফ্লো চালু করুন।
    /**
     * 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);
    }
    

টিপস : আপনি উইন-ব্যাক ক্যাম্পেইন এবং অন্যান্য ক্রয় জীবনচক্র ব্যবস্থাপনা কৌশল বাস্তবায়নের জন্য রিয়েল-টাইম ডেভেলপার নোটিফিকেশন (RTDN) সেট আপ করতে পারেন। RTDN কীভাবে সেট আপ করবেন এবং সঠিক ট্র্যাকিং এবং এনটাইটেলমেন্ট সহ বিজ্ঞপ্তিগুলি কীভাবে পরিচালনা করবেন তা বোঝার জন্য, আপনার Maximize Your Play Billing Integration কোডল্যাবটি দেখার পরামর্শ দেওয়া হচ্ছে।

৭. ক্রয়ের বিকল্পগুলি পরীক্ষা করুন

আপনার লাইভ অ্যাপে আপনার এককালীন পণ্যগুলি উপলব্ধ করার আগে, আপনি লাইসেন্স পরীক্ষক এবং প্লে বিলিং ল্যাব ব্যবহার করে আপনার PBL ইন্টিগ্রেশন পরীক্ষা করতে পারেন।

আপনি শিখবেন কিভাবে মূল্য স্থানীয়করণ এবং প্রাপ্যতা পরীক্ষা করতে হয় যেখানে অ্যাপটি শুধুমাত্র কিছু অঞ্চলে উপলব্ধ যেখানে প্রতিটি অঞ্চলের জন্য আলাদা মূল্য রয়েছে।

পূর্বশর্ত

ক্রয়ের বিকল্পগুলির জন্য আঞ্চলিক মূল্য পরীক্ষা করুন

ক্রয়ের বিকল্পগুলির জন্য আঞ্চলিক মূল্য পরীক্ষা করতে, নিম্নলিখিতগুলি করুন:

  1. প্লে বিলিং ল্যাব অ্যাপটি খুলুন এবং তারপর লাইসেন্স পরীক্ষক হিসেবে লগইন করুন।
  2. কনফিগারেশন সেটিংসে, সম্পাদনা ক্লিক করুন, France দেশ নির্বাচন করুন, এবং তারপর প্রয়োগ করুন ক্লিক করুন। এখানে আমরা প্লে দেশ নির্বাচন করছি যা অ্যাপে প্রদর্শিত মুদ্রা নির্ধারণ করে।
  3. নমুনা অ্যাপটি বন্ধ করে আবার খুলুন। এখন এটিতে France জন্য ক্রয় এবং ভাড়া মুদ্রা ইউরোতে দেখানো উচিত।

অন্য কোনও দেশের জন্য পরীক্ষা করতে, ধাপ ২-এ Spain নির্বাচন করুন এবং তারপর ধাপ ৩-এ যান।

বিলিং ল্যাব টেস্টিং ভিডিও চালান

নিচের ভিডিওটিতে নমুনা অ্যাপ ব্যবহার করে আঞ্চলিক মূল্য পরীক্ষার ধাপগুলি দেখানো হয়েছে।

৮. পরবর্তী পদক্ষেপ

রেফারেন্স ডক্স

9. অভিনন্দন!

অভিনন্দন! আপনি Google Play Console ব্যবহার করে একটি নতুন এককালীন পণ্য তৈরি করেছেন, একটি ক্রয় বিকল্প কনফিগার করেছেন এবং Play Billing Lab ব্যবহার করে ক্রয় প্রবাহ পরীক্ষা করেছেন। এখন আপনি একবারের ক্রয়ের জন্য Google Play-এর নমনীয় পণ্য ক্যাটালগ সম্পর্কে আরও গভীর ধারণা পেয়েছেন।

জরিপ

এই কোডল্যাব সম্পর্কে আপনার মতামত অত্যন্ত মূল্যবান। আমাদের জরিপটি সম্পূর্ণ করতে কয়েক মিনিট সময় নেওয়ার কথা বিবেচনা করুন।