راه اندازی
۱- برای راه اندازی کافیست SDK مربوط به پلاگین یونیتی بازار را از اینجا دانلود کرده و وارد پروژه خود کنید.
۲- به دلیل اینکه این پلاگین از کتابخانههای Gradle استفاده میکند، باید آخرین نسخهی External Dependency Manager را از اینجا دانلود کرده و وارد پروژه خود کنید.
۳- در منوی Toolbar بر روی گزینهی CafeBazaar کلیک کرده و زیر منوی Config را انتخاب کنید تا صفحه تنظیمات پلاگین باز شود.
۴- از قسمت پرداخت درون برنامهای پنل پیشخان، کد RSA مربوط به بازی خود را کپی کرده و در قسمت تنظیمات SDK قرار دهید.
۵- در انتها برای اینکه کتابخانههای مربوط به Gradle دریافت شوند از مسیر زیر بر روی دکمه 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);
}
});
مصرف کردن یک محصول
برای مصرف کردن یک محصول مثل 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);
savedGameClient.DeleteKey([key]);
savedGameClient.Clear();
bool isSynced = savedGameClient.IsSynced;
اگر مقدار دستور فوق true باشد یعنی اطلاعات با موفقیت همگام شده است.
-keep class com.farsitel.bazaar.** { *; }