پرداخت درون برنامه‌ای بازار در Unity

برای دریافت آخرین نسخه پلاگین پرداخت درون برنامه‌ای بازار در Unity به این لینک در github مراجعه کنید.

راه اندازی

برای راه اندازی پرداخت درون برنامه‌ای در Unity فقط کافیست بسته مربوطه را دانلود و وارد پروژه ی خود کنید. بعد از آن باید درون فایل AndroidManifest.xml خود تغییرات جزیی انجام دهید.

 

اجازه ی دسترسی به اینترنت و خرید از کافه بازار

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR" />

 

و اضافه کردن Activity های مربوط به پلاگین در قسمت Application

<meta-data android:name="billing.service" android:value="bazaar.BazaarIabService" />
<activity android:name="com.bazaar.BazaarIABProxyActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />

 

نیازی به اضافه کردن هیچ Prefab یا Script خاصی نیست، پلاگین به طور خودکار یک شی با نام BazaarIABPlugin می سازد که دارای یک فرزند به نام BazaarPlugin.IABEventManager که نباید در طول برنامه پاک یا تغییر نام داده شوند.

 

توابع

توابع موجود در کلاس BazaarIAB

public static void init(string publicKey)

قبل از این که سعی کنید از هر یک از توابع این کتابخانه استفاده کنید باید این تابع را یک بار فراخوانی کنید. ورودی این تابع همان کلیدی است که برای برنامه ی شما در قسمت پرداخت درون برنامه ای کافه بازار ساخته شده است. در صورت موفقیت رخداد billingSupportedEvent فراخوانی می شود و در صورت عدم موفقیت رخداد billingNotSupportedEvent فراخوانی خواهد شد.

 

public static void enableLogging(bool shouldEnable)

از این تابع می توانید برای فعال سازی اطلاعات فراخوانی توابع در زمان اشکال زدایی استفاده کنید.

 

public static void unbindService()

زمانی که کارتان با پرداخت درون برنامه ای تمام شد این تابع را فراخوانی کنید

 

public static bool areSubscriptionsSupported()

برای بررسی این که خرید اشتراک های ماهانه و سالانه پشتیبانی می شود یا خیر از این تابع استفاده کنید

 

public static void queryInventory(string[] skus)

برای گرفتن اطلاعات محصولاتی که در پنل پرداخت درون برنامه ای تعریف کرده اید مثل قیمت، عنوان و … باید از این تابع استفاده کنید. همچنین لیست تمام محصولات خریداری شده‌ای که هنوز مصرف نشده‌اند نیز توسط این تابع برگردانده می‌شود(محصولات درون Inventory). دقت داشته باشید که قسمتی از اطلاعات بازگشتی توسط این تابع مربوط به کاربری هست که در برنامه‌ی بازار لاگین است بنابراین برای استفاده از این تابع کاربر باید لاگین کرده باشد در غیر این صورت خطای شماره‌ی ۶ دریافت می‌کنید.

 

public static void querySkuDetails(string[] skus)

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

 

public static void purchaseProduct(string sku)
public static void purchaseProduct(string sku, string developerPayload)

برای خرید محصول باید از این تابع استفاده کنید. بعد از تلاش برای خرید دو رخداد فراخوانی خواهد شد یکی purchaseSucceededEvent است که زمانی که خرید موفقیت آمیز بود فراخوانی می شود یا زمانی که تلاش می‌کنید محصولی که قبلا خریده‌اید ولی مصرف نکرده‌اید را دوباره بخرید.

اگر هم خرید ناموفق باشد رخداد purchaseFailedEvent  فراخوانی خواهد شد.

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

 

public static void consumeProduct(string sku)
public static void consumeProducts(string[] skus)

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

رخدادها

رخدادها از طریق کلاس BazaarIABEventManager قابل دسترس هستند:

public static event Action billingSupportedEvent;

زمانی که پرداخت درون برنامه ای روی دستگاه پشتیبانی شود فراخوانی می شود.

 

public static event Action<string> billingNotSupportedEvent;

بعد از فراخوانی تابع init اگر خرید درون برنامه ای ممکن نباشد این رخداد فراخوانی می شود.

 

public static event Action<List<BazaarPurchase>, List<BazaarSkuInfo>> queryInventorySucceededEvent;

در صورتی که فراخوانی تابع queryInventory موفقیت آمیز باشد این رخداد فراخوانی می شود.

 

public static event Action<string> queryInventoryFailedEvent;

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

 

public static event Action<BazaarPurchase> purchaseSucceededEvent;

زمانی که خرید موفقیت آمیز باشد فراخوانی می‌شود.

 

public static event Action<string> purchaseFailedEvent;

زمانی که خرید موفقیت آمیز نباشد فراخوانی می‌شود.

 

public static event Action<BazaarPurchase> consumePurchaseSucceededEvent;

اگر تلاش برای مصرف یک محصول خریداری شده موفق باشد فراخوانی می‌شود.

 

public static event Action<string> consumePurchaseFailedEvent;

اگر تلاش برای مصرف یک محصول خریداری شده نا موفق باشد فراخوانی می‌شود.