راه اندازی

 

۱- برای راه اندازی کافیست SDK  مربوط به پلاگین یونیتی بازار را از اینجا دانلود کرده و وارد پروژه خود کنید.

 

۲- به دلیل اینکه این پلاگین از کتابخانه‌های Gradle  استفاده می‌کند، باید آخرین نسخه‌ی External Dependency Manager  را از اینجا دانلود کرده و وارد پروژه خود کنید.

 

۳- در منوی Toolbar  بر روی گزینه‌ی CafeBazaar کلیک کرده و زیر منوی Config  را انتخاب کنید تا صفحه تنظیمات پلاگین باز شود.

 

۴- از قسمت پرداخت درون برنامه‌ای پنل پیشخان، کد RSA  مربوط به بازی خود را کپی کرده و در قسمت تنظیمات SDK  قرار دهید.

 

۵- در انتها برای اینکه کتابخانه‌های مربوط به Gradle  دریافت شوند از مسیر زیر بر روی دکمه Force Resolve  کلیک کنید.

Assets> External Dependency Manager> Android Resolver> Force Resolve
 

توابع

 

پلاگین موجود از دو قسمت مجزا تشکیل شده است. بخش مربوط به انجام پرداخت‌های درون برنامه‌ای، بخش لاگین و حافظه‌ی بازار.

قسمت اول همانطور که از نامش مشخص است برای انجام عملیات‌های مربوط به خرید درون‌برنامه‌ای مورد استفاده قرار می‌گیرد. بخش دوم که مربوط به بخش لاگین و حافظه درون‌برنامه‌ای است برای انجام فرایند ورود کاربر با حساب بازار و نیز ذخیره و بازیابی اطلاعات بر روی سرورهای بازار به کار می‌رود.

۱- پرداخت درون برنامه ای

راه اندازی

ابتدا namespace مربوطه به پرداخت بازار را به شکل زیر وارد می‌کنیم:

using CafeBazaar.Billing;

 

برای راه اندازی پرداخت درون برنامه ای بازار ضروری است ابتدا به‌صورت زیر آن‌را فعال‌سازی کنید:

BazaarBilling.Init((result) =>
{
	if (result.Successful)
	{
		Debug.Log("BazaarBilling is inited.");
	}
	else
	{
		Debug.Log("BazaarBilling Can't init !");
	}
});

 

خرید یک محصول مصرفی

با استفاده از کد زیر می‌توانید درخواست خرید یک SKU را به بازار ارسال کنید:

BazaarBilling.Purchase([SKU],(result) =>
{
	if (result.Successful)
       {
		Purchase purchase = result.Body;

		Debug.Log("Purchase info :");
		Debug.Log("   ProductId         : " + purchase.ProductId);
		Debug.Log("   OrderId           : " + purchase.OrderId);
		Debug.Log("   PurchaseToken     : " + purchase.PurchaseToken);
		Debug.Log("   PurchaseTime      : " + purchase.PurchaseTime);
		Debug.Log("   DeveloperPayload  : " + purchase.DeveloperPayload);
		Debug.Log("   State             : " + purchase.State.ToString());
		Debug.Log("   ProductType       : " + purchase.ProductType.ToString());
	}
	else
	{
		Debug.Log("Purchase Failed :" + result.Message);
	}
});

 

نکته: SKU، نام بسته‌هایی است که شما در پنل پیشخان برنامه خود در بازار اضافه می‌کنید. مانند: Gem1 

مصرف کردن یک محصول

برای مصرف کردن یک محصول مثل Gem1 از دستور زیر استفاده کنید. خریدهایی که انجام می‌شوند به داخل Inventory خواهند رفت که اگر محصول مصرفی باشد باید بعد موفقیت فرآیند خرید آن را با استفاده از تابع زیر مصرف کنید:

 

BazaarBilling.Consume("Gem1", (result) =>
{
	if (result.Successful)
		Debug.Log("Consume Gem1 Successful");
	else
		Debug.Log("Consume Gem1 Failed :" + result.Message);

});

 

خرید محصول اشتراکی

برای خرید محصول اشتراکی از کد زیر استفاده کنید، این نوع خرید قابل مصرف کردن نیست و تا اتمام زمان آن در اختیار کاربر قرار خواهد گرفت:

BazaarBilling.Subscribe( [SKU] , "Payload", (result) =>
{
	if (result.Successful)
	{
		Purchase purchase = result.Body;
		Debug.Log("Subscribe purchase info :");
		Debug.Log("   ProductId         : " + purchase.ProductId);
		Debug.Log("   OrderId           : " + purchase.OrderId);
		Debug.Log("   PurchaseToken     : " + purchase.PurchaseToken);
		Debug.Log("   PurchaseTime      : " + purchase.PurchaseTime);
		Debug.Log("   DeveloperPayload  : " + purchase.DeveloperPayload);
		Debug.Log("   State             : " + purchase.State.ToString());
		Debug.Log("   ProductType       : " + purchase.ProductType.ToString());
	}
	else
	{
		Debug.Log("Subscribe Failed :" + result.Message);
	}

});

 

دریافت لیست خرید ها

برای دریافت لیست خرید های مصرف نشده و محصولات اشتراکی از دستور زیر استفاده کنید:

BazaarBilling.GetPurchases(
(result) =>
{
          if (result.Successful)
          {
             List<Purchase> purchases = result.Body;
          }
          else
          {
             Debug.Log("Failed :" + result.Message);
          }
});

 

برای دریافت اطلاعات مربوط به محصولات فروشگاه از دستور زیر استفاده کنید:

BazaarBilling.GetSkuDetails(new string[] { "Gem1", "Gem2" },
(result) =>
        {
        if (result.Successful)
        {
            List<Product> products = result.Body;
        }
        else
        {
            Debug.Log("Failed :" + result.Message);
        }
 });

 

۲- ورود با بازار و حافظه‌ی درون برنامه‌ای:

ابتدا namespace  های زیر را به کلاس خود اضافه کنید:

using CafeBazaar.Games;
using CafeBazaar.Games.BasicApi;

 

سپس آبجکت config را ایجاد کنید:

var config = new BazaarGamesClientConfiguration.Builder().Build();

 

در صورتی که بخواهید از سرویس حافظه درون‌برنامه‌ای هم استفاده کنید کانفیگ را به صورت زیر ایجاد کنید:

var config = new 
BazaarGamesClientConfiguration.Builder().EnableSavedGames().Build();

 

و در ادامه BazaarGamesPlatfotrm رو به صورت زیر پیکربندی کنید:

BazaarGamesPlatform.InitializeInstance(config);
BazaarGamesPlatform.Activate();

ورود با بازار

برای Login کاربر در بازار و استفاده از Storage از دستور زیر استفاده کنید:

BazaarGamesPlatform.Instance.Authenticate(SilentMode, response =>
{
	if (response)
		Debug.Log("SignedIn to bazaar AccountId : " + 
        BazaarGamesPlatform.Instance.GetUserId());

	else
		Debug.Log("SignedIn error " );

});

 

SilentMode یک متغیر از نوع bool است که در‌ صورتی که مقدار آن True  باشد، عملیات Login در بک‌گراند انجام خواهد شد. در غیر این‌صورت رابط کاربری مربوط به ورود با بازار نمایش داده می‌شود.

بعد از ورود به بازار از دستور زیر برای بررسی وضعیت Login بودن کاربر استفاده کنید:

 bool state = BazaarGamesPlatform.Instance.IsAuthenticated();

 

و برای دریافت شناسه کاربر در بازار به ازای هر بازی از دستور زیر استفاده کنید:

string userId = BazaarGamesPlatform.Instance.GetUserId();

 

ذخیره‌سازی در بازار

ذخیره‌سازی در این پلاگین مشابه کلاس PlayerPrefs  خود یونیتی به صورت Key value pair بوده و با استفاده از کدهای زیر می‌توانید نسبت به ذخیره و بازیابی اطلاعات بازی خود اقدام کنید:

var savedGameClient = BazaarGamesPlatform.Instance.SavedGame;

 

برای ذخیره‌سازی، متناسب با نوع داده‌ای که می خواهید ذخیره کنید از دستورات زیر استفاده کنید:

نکته: پارامتر اول کلید و پارامتر دوم مقدار آن است.
مقدار متنی :
savedGameClient.SetString([key],[string value]);

 

مقدار صحیح:

savedGameClient.SetInt([key],[int value]);

 

مقادیر اعشاری:

savedGameClient.SetFloat([key],[float value]);

 

مقدار منطقی:(true/false)

savedGameClient.SetBool([key][bool value]);

 

مثال :

savedGameClient.SetString("Key1", value1);
savedGameClient.SetInt ("Key2", value2);

 

 همچنین برای بازیابی مقادیر از دستورات زیر استفاده کنید:

نکته: پارامتر اول کلید و پارامتر دوم مقدار پیش‌فرض است و مقداردهی آن اجباری نیست.
var savedGameClient = BazaarGamesPlatform.Instance.SavedGame;
string value1 = savedGameClient.GetString([key],[alter]);
int value2 = savedGameClient.GetInt([key],[alter]);
float value3 = savedGameClient.GetFloat([key],[alter]);
bool value4 = savedGameClient.GetBool([key],[alter]);

 

مثال :
string value1 = savedGameClient.GetString("Key1");
int value2 = savedGameClient.GetInt("Key2");

 

مثال مقدار پیش‌فرض:
 
string nickName = savedGameClient.GetString("NickName","Guest");
int age = savedGameClient.GetInt("Age",20);
 
در مثال بالا اگر nickName مقداردهی نشده باشد به صورت پیش‌فرض Guest در نظر گرفته می‌شود.
برای حذف یک کلید از دستور زیر استفاده کنید:
 
savedGameClient.DeleteKey([key]);
 
دستور زیر تمامی کلیدها را حذف می‌کند:
 
savedGameClient.Clear();
 
نکته مهم: بدیهی است همگام‌سازی مقادیر با بازار اندکی طول بکشد. برای اطمینان از این فرایند از دستور زیر استفاده کنید.
bool isSynced = savedGameClient.IsSynced;


اگر مقدار دستور فوق true باشد یعنی اطلاعات با موفقیت همگام شده است.

نکته: در صورتی که برای پروژه خود از proguard استفاده می‌کنید خط زیر را به فایل proguard خود اضافه کنید:
-keep class com.farsitel.bazaar.** { *; }