একতার সাথে Google Play বিলিং লাইব্রেরি ব্যবহার করুন৷

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

Google Play বিলিং প্লাগইন সেট আপ করুন

প্লাগইন সেট আপ করতে, এই লিঙ্ক করা বিভাগগুলির প্রতিটিতে পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. ইউনিটি আইএপি বিমূর্তকরণ স্তর সক্ষম করুন
  2. প্লাগইনটি ডাউনলোড এবং আমদানি করুন
  3. প্লাগইন এর বিল্ড সেটিংস কনফিগার করুন
  4. প্লাগইন সক্রিয় করুন

ইউনিটি আইএপি বিমূর্ততা স্তর সক্ষম করুন

Google Play বিলিং প্লাগইনটি Unity IAP-এর সাথে অন্তর্ভুক্ত একটি বিমূর্ত স্তরের উপর নির্মিত, তাই প্লাগইন ডাউনলোড এবং আমদানি করার আগে আপনাকে এই বিমূর্ত স্তরটি সক্ষম করতে হবে৷ ইউনিটি আইএপি বিমূর্ততা স্তর সক্ষম করতে, নিম্নলিখিতগুলি করুন:

  1. নিম্নলিখিত ইউনিটি টিউটোরিয়ালের সমস্ত ধাপগুলি সম্পূর্ণ করুন: ইউনিটি পরিষেবাগুলির জন্য আপনার প্রকল্প সেট আপ করুন
  2. নিম্নলিখিত ইউনিটি টিউটোরিয়ালের সমস্ত ধাপগুলি সম্পূর্ণ করুন: ইউনিটি আইএপি পরিষেবা সক্ষম করুন

প্লাগইনটি ডাউনলোড এবং আমদানি করুন

প্লাগইনটি .unitypackage ফরম্যাটে ইউনিটি প্যাকেজ হিসেবে পাঠানো হয়েছে। প্লাগইন ডাউনলোড এবং আমদানি করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. GitHub-এ রিপোজিটরির রিলিজ পৃষ্ঠা থেকে Google Play Plugins for Unity-এর সর্বশেষ রিলিজ ডাউনলোড করুন।
  2. ইউনিটি মেনু বার থেকে, সম্পদ > আমদানি প্যাকেজ > কাস্টম প্যাকেজ ক্লিক করুন।

  3. আপনি .unitypackage ফাইলটি কোথায় ডাউনলোড করেছেন তা সনাক্ত করুন এবং এটি নির্বাচন করুন।

  4. ইম্পোর্ট ইউনিটি প্যাকেজ ডায়ালগে, সমস্ত সম্পদ নির্বাচন করে রাখুন এবং আমদানিতে ক্লিক করুন।

প্যাকেজ আমদানির পরে, GooglePlayPlugins নামে একটি নতুন ফোল্ডার (সম্পদ ফোল্ডারের মূলে) আপনার প্রকল্পের সম্পদে যোগ করা হয়। এই ফোল্ডারটিতে প্লাগইনটির জন্য সমস্ত Google Play বিলিং লাইব্রেরি সম্পদ রয়েছে৷

বিল্ড সেটিংস কনফিগার করুন

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

  1. ইউনিটি মেনু বার থেকে, Google > Play Billing > Build Settings নির্বাচন করুন।

  2. প্লে বিলিং বিল্ড সেটিংস উইন্ডোতে, ফিক্স এ ক্লিক করুন। এটি দ্বন্দ্বের সমাধান করে এবং বিরোধপূর্ণ ইউনিটি আইএপি ফাইলগুলিকে একটি ব্যাকআপ ডিরেক্টরিতে নিয়ে যায়। আপনি ফিক্স ক্লিক করার পরে, বোতামটি পুনরুদ্ধারে পরিবর্তিত হয়, যা আপনি মূল, বিরোধপূর্ণ ফাইলগুলি পুনরুদ্ধার করতে ক্লিক করতে পারেন৷

প্লাগইন সক্রিয় করুন

প্লাগইন সক্ষম করতে, Google Play-এর Unity IAP-এর বাস্তবায়ন Google Play বিলিং প্লাগইন দিয়ে প্রতিস্থাপন করুন। উদাহরণস্বরূপ, ইউনিটি আইএপি ক্রয়কারী স্ক্রিপ্ট ব্যবহার করার সময়, আপনি Google.Play.Billing.GooglePlayStoreModule ব্যবহার করার জন্য IAP বিল্ডারে পাস করা StandardPurchaseModule পরিবর্তন করবেন:

// Create a builder using the GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());

যদি আপনার গেম একাধিক প্ল্যাটফর্মের জন্য একই ক্রয়কারী স্ক্রিপ্ট ব্যবহার করে, তাহলে ইউনিটি অন্যান্য প্ল্যাটফর্মের জন্য তার নিজস্ব IAP সমাধান ব্যবহার করা চালিয়ে যাবে তা নিশ্চিত করতে আপনার একটি প্ল্যাটফর্ম চেক যোগ করা উচিত:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

আপনি যদি Google Play Store ছাড়াও অন্যান্য Android অ্যাপ স্টোরে আপনার গেমটি প্রকাশ করেন, তাহলে আপনি Google Play Store নির্বাচন করার সময় শুধুমাত্র ডিফল্ট ইউনিটি আইএপি বাস্তবায়ন প্রতিস্থাপন করবেন:

ConfigurationBuilder builder;
if (Application.platform == RuntimePlatform.Android
       && SelectedAndoidAppStore == AppStore.GooglePlay)
{
  builder = ConfigurationBuilder.Instance(
      Google.Play.Billing.GooglePlayStoreModule.Instance());
}
else
{
  builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
}

আপনার গেমে Google Play বিলিং লাইব্রেরি বৈশিষ্ট্যগুলি প্রয়োগ করুন৷

Google Play বিলিং প্লাগইন ইউনিটি আইএপি পরিষেবাগুলিকে প্রসারিত করে, তাই আপনি সাধারণ ক্রয় কার্যপ্রবাহগুলি পরিচালনা করতে একই ইউনিটি API ব্যবহার করতে পারেন৷ মনে রাখবেন যে Google Play বিলিং লাইব্রেরি এবং অন্যান্য অ্যাপ স্টোরের জন্য ইউনিটির স্ট্যান্ডার্ড IAP বাস্তবায়নের মধ্যে পার্থক্যের কারণে API আচরণে কিছু ছোটখাটো পরিবর্তন রয়েছে। আপনি যদি ইউনিটি আইএপি এপিআই-এ নতুন হয়ে থাকেন, তাহলে মৌলিক ক্রয় প্রবাহ কীভাবে বাস্তবায়ন করতে হয় তার উদাহরণের জন্য ইউনিটি আইএপি টিউটোরিয়ালের "একটি ক্রয় স্ক্রিপ্ট তৈরি করা" বিভাগটি দেখুন।

Google Play বিলিং লাইব্রেরিতে এমন কিছু বৈশিষ্ট্য রয়েছে যা Google Play স্টোরের জন্য অনন্য। আপনি একটি বর্ধিত ইন্টারফেসের মাধ্যমে এই বৈশিষ্ট্যগুলি অ্যাক্সেস করতে পারেন। এই অংশের বাকি অংশটি বর্ণনা করে যে কীভাবে এই অনন্য Google Play বিলিং লাইব্রেরি বৈশিষ্ট্যগুলি আপনার গেমে প্রয়োগ করবেন৷

বিলম্বিত কেনাকাটা সক্ষম করুন

Google Play বিলম্বিত কেনাকাটাগুলিকে সমর্থন করে—যাকে মুলতুবি ট্রাসেকেশন বা মুলতুবি কেনাকাটাও বলা হয়—যেখানে ব্যবহারকারীরা একটি কেনাকাটা তৈরি করতে এবং পরে দোকানে নগদ ব্যবহার করে এটি সম্পূর্ণ করতে পারে।

বিলম্বিত কেনাকাটা সক্ষম করতে, EnableDeferredPurchase() পদ্ধতিতে কল করে আপনার মডিউলের কনফিগারেশন পরিবর্তন করতে আপনার IAP নির্মাতা ব্যবহার করুন:

// Create a builder using a GooglePlayStoreModule.
var configurationBuilder =
    ConfigurationBuilder.Instance(Google.Play.Billing.GooglePlayStoreModule.Instance());
// Enable deferred purchases
configurationBuilder.Configure<Google.Play.Billing.IGooglePlayConfiguration>()
    .EnableDeferredPurchase();

এর পরে, প্লে স্টোর এক্সটেনশনগুলি ব্যবহার করে একটি বিলম্বিত ক্রয় কলব্যাক প্রয়োগ করুন:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Set the deferred purchases callback.
_playStoreExtensions.SetDeferredPurchaseListener(
    delegate(Product product)
    {
        // Do not grant the item here. Instead, record the purchase and remind
        // the user to complete the transaction in the Play Store.
    });

Google Play-তে অস্পষ্ট অ্যাকাউন্ট আইডি পাস করুন

অপব্যবহার শনাক্তকরণের সুবিধার্থে আপনি Google Play-তে অস্পষ্ট ব্যবহারকারী অ্যাকাউন্ট আইডি পাঠাতে পারেন, যেমন শনাক্ত করা যে অনেক ডিভাইস অল্প সময়ের মধ্যে একই অ্যাকাউন্টে কেনাকাটা করছে কিনা।

একটি অস্পষ্ট অ্যাকাউন্ট আইডি পাস করতে, এক্সটেনশন API থেকে SetObfuscatedAccountId() পদ্ধতিতে কল করুন:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated account ID.
_playStoreExtensions.SetObfuscatedAccountId(obfuscatedAccountId);

Google Play-তে অস্পষ্ট প্রোফাইল আইডি পাস করুন

আপনি প্রতারণা শনাক্তকরণের সুবিধার্থে Google Play-তে একটি অস্পষ্ট প্রোফাইল আইডি পাস করতে পারেন, যেমন শনাক্ত করা যে একই অ্যাকাউন্টে অনেক ডিভাইস অল্প সময়ের মধ্যে কেনাকাটা করছে কিনা। এটি একটি অস্পষ্ট ব্যবহারকারী অ্যাকাউন্ট আইডি পাস করার অনুরূপ। উভয় ক্ষেত্রেই আইডি একটি একক ব্যবহারকারীর প্রতিনিধিত্ব করে, কিন্তু প্রোফাইল আইডি আপনাকে একটি একক অ্যাপের মধ্যে থাকা একাধিক প্রোফাইল জুড়ে একক ব্যবহারকারীকে অনন্যভাবে সনাক্ত করতে দেয়। আপনি Google Play-তে একটি অস্পষ্ট প্রোফাইল আইডি পাঠানোর পরে, আপনি একটি ক্রয়ের রসিদে পরে সেই আইডিটি পুনরুদ্ধার করতে পারেন।

একটি অস্পষ্ট প্রোফাইল আইডি পাস করতে, SetObfuscatedProfileId() পদ্ধতিতে কল করে আপনার মডিউলের কনফিগারেশন পরিবর্তন করতে আপনার IAP নির্মাতা ব্যবহার করুন:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

// Pass an obfuscated profile ID.
_playStoreExtensions.SetObfuscatedProfileId(obfuscatedProfileId);

সদস্যতা জন্য মূল্য পরিবর্তন নিশ্চিত করুন

Google Play আপনাকে একটি সক্রিয় সদস্যতার মূল্য পরিবর্তন করতে দেয়। পরিবর্তন কার্যকর হওয়ার আগে আপনার গেমের ব্যবহারকারীদের অবশ্যই মূল্য পরিবর্তন নিশ্চিত করতে হবে। ব্যবহারকারীদের তাদের সাবস্ক্রিপশনের জন্য মূল্য পরিবর্তন নিশ্চিত করতে অনুরোধ করতে, ConfirmSubscriptionPriceChange() পদ্ধতিতে কল করুন:

// Get the plugin extensions for the Google Play Store.
_playStoreExtensions =
    extensions.GetExtension<Google.Play.Billing.IGooglePlayStoreExtensions>();

_playStoreExtensions.ConfirmSubscriptionPriceChange(productId,
    delegate (bool success)
    {
        // Returns whether the user has accepted the new price or not.
    });

ইউনিটি এপিআই আচরণে পরিবর্তন

আপনি যখন Google Play বিলিং প্লাগইন ব্যবহার করেন, তখন বেশিরভাগ API অন্যান্য অ্যাপ স্টোরের জন্য ইউনিটির স্ট্যান্ডার্ড IAP বাস্তবায়নের মতোই আচরণ করে। যাইহোক, এমন কিছু ক্ষেত্রে রয়েছে যেখানে APIগুলি ভিন্নভাবে আচরণ করবে। এই বিভাগটি এই আচরণের পার্থক্যগুলি বর্ণনা করে।

ডেভেলপার পেলোড সমর্থিত নয়

Google Play ডেভেলপার পেলোডকে অবমূল্যায়ন করেছে এবং এটিকে আরও অর্থপূর্ণ এবং প্রাসঙ্গিক বিকল্পগুলির সাথে প্রতিস্থাপন করছে৷ এই কারণে, বিকাশকারী পেলোড সমর্থিত নয়। বিকল্প সম্পর্কে আরও তথ্যের জন্য, বিকাশকারী পেলোড সম্পর্কে পৃষ্ঠাটি দেখুন।

আপনি IStoreController সহ অন্যান্য অ্যাপ স্টোরগুলির জন্য ইউনিটির স্ট্যান্ডার্ড IAP বাস্তবায়ন দ্বারা সংজ্ঞায়িত একই ইন্টারফেসগুলি ব্যবহার করা চালিয়ে যেতে পারেন। আপনি যখন একটি ক্রয় শুরু করেন, তখনও আপনি IStoreController ব্যবহার করতে পারেন এবং InitiatePurchase() পদ্ধতিতে কল করতে পারেন:

public void InitiatePurchase(Purchasing.Product product, string payload);

যাইহোক, আপনি যে পেলোড পাস করেন তা কার্যকর হবে না (চূড়ান্ত রসিদে প্রদর্শিত হবে না)।

সাবস্ক্রিপশন ম্যানেজার সমর্থিত নয়

ইউনিটি আইএপি সাবস্ক্রিপশন পরিচালনার জন্য SubscriptionManager ক্লাস প্রদান করে। কারণ ইউনিটির স্ট্যান্ডার্ড আইএপি এই ক্লাসের বাস্তবায়ন ডেভেলপার পেলোড ব্যবহার করে, এই ক্লাসটি সমর্থিত নয়। আপনি এখনও এই ক্লাসটি তৈরি করতে পারেন, তবে ক্লাসের যে কোনো গেটার পদ্ধতি ব্যবহার করার সময় আপনি অবিশ্বস্ত ডেটা পেতে পারেন।

UpdateSubscription ছোট API পরিবর্তন আছে

Google Play বিলিং প্লাগইন আপনার সদস্যতা আপগ্রেড এবং ডাউনগ্রেড করার জন্য SubscriptionManager.UpdateSubscription() এবং SubscriptionManager.UpdateSubscriptionInGooglePlayStore() পদ্ধতি ব্যবহার করা সমর্থন করে না। যদি আপনার গেম এই পদ্ধতিগুলিকে কল করে, একটি GooglePlayStoreUnsupportedException নিক্ষেপ করা হয়৷

Google Play বিলিং লাইব্রেরি এই পদ্ধতিগুলির পরিবর্তে ব্যবহার করার জন্য একটি বিকল্প API প্রদান করে৷ একটি সাবস্ক্রিপশন আপগ্রেড বা ডাউনগ্রেড করতে, প্রোরেশন মোড ব্যবহার করে UpdateSubscription() পদ্ধতিতে কল করুন:

void UpdateSubscription(Product oldProduct, Product newProduct,
           GooglePlayStoreProrationMode prorationMode = GooglePlayStoreProrationMode.Unknown);

GooglePlayStoreUnsupportedException ধরা পড়লে আপনি হয় এই পদ্ধতির কলটিকে একটি প্ল্যাটফর্ম চেক দিয়ে বা একটি ক্যাচ ব্লকে মোড়ানো করতে পারেন।

প্রোরেশন মোড কীভাবে ব্যবহার করবেন তার আরও তথ্য এবং উদাহরণের জন্য, প্রেশন মোড সেট করুন দেখুন।