نسخه چاپی


یونیتی در آخرین نسخه پرداخت رسمی درون برنامه‌ای خود امکان پرداخت در اکثر استورهای موجود نظیر گوگل، اپ‌استور، آمازون و فروشگاه‌های دیگر را ارائه داده است. بازار نیز امکان پرداخت خود را به آن اضافه نموده تا توسعه‌دهندگان با کمترین تغییر در کد خود از این امکان بهره‌مند شوند.

وارد کردن پکیج مخصوص بازار برای پرداخت درون برنامه‌ای
پکیج را از اینجا دانلود کرده و وارد یونیتی کنید. توجه داشته باشید، اگر از پکیج پرداخت رسمی یونیتی استفاده می‌کنید آن را قبل‌تر در تنظیمات یونیتی، غیر فعال کنید. در ضمن تمام مثال‌های زیر به صورت آزمایش شده و صحنه‌های جداگانه در پکیج وجود دارد.

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

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

پیاده‌سازی بدون نیاز به کد

مرحله اول: اضافه کردن دکمه پرداخت و آیتم‌های خرید
IAP catalog

۱. دکمه پرداخت درون برنامه‌ با نام IAP Button را به صحنه اضافه کنید.
۲. در پنل سمت راست با زدن روی دکمه IAP Catalog به پنل مربوطه وارد شوید.
۳. اولین محصول خود را وارد کنید (لازم است ابتدا محصول خود در پیشخان تعریف کنید).
۴. تعیین کنید محصول شما از چه نوعی است (مصرفی، ماندگار و اشتراکی).
۵. می‌توانید عنوان و توضیح را جایگزین توضیحی که در پیشخان است کنید. اگر شناسه محصول شما در مارکت‌های مختلف متفاوت است آن را جایگزین کنید در غیر این‌صورت آن را خالی بگذارید.
۶. تمام محصولات خود را مطابق با موارد ۳ تا ۶ وارد کنید.
۷. Automatically initialize را فعال کنید.
۸. پنل IAP Catalog را ببندید.

مرحله دوم: اتصال متن‌ و متد به دکمه‌ها
butttons

۱. روی دکمه پرداخت، شناسه محصول را انتخاب کنید.
۲. برای دکمه خود عنوان، توضیح و قیمت پیاده‌سازی کنید و آن را به دکمه وصل کنید.
۳. برای دکمه متدهای خطا و موفقیت را تعیین کنید.
۴. مراحل ۱ تا ۳ را تا اضافه کردن دکمه همه محصولات تکرار کنید.

پیاده‌سازی از طریق کد

۱. ساخت کلاس پرداخت:

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

public class ThroughCodeShop : MonoBehaviour, IStoreListener
{
  void OnInitialized(IStoreController controller, IExtensionProvider extensions);
  void OnInitializeFailed(InitializationFailureReason error);
  PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs purchaseEvent);
  void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason);
}

‌‌

۲. معرفی محصولات به سیستم پرداخت

var builder = ConfigurationBuilder.Instance(StandardPurchasingModule.Instance());
//Your products IDs. They should match the ids of your products in your store.
//Add products that will be purchasable and indicate its type.
builder.AddProduct("gas", ProductType.Consumable);
builder.AddProduct("premium", ProductType.NonConsumable);
builder.AddProduct("infinite_gas_monthly", ProductType.Subscription);

UnityPurchasing.Initialize(this, builder);

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

public void OnInitialized(IStoreController controller, IExtensionProvider extensions)
{
  Debug.Log("In-App Purchasing successfully initialized");
  m_StoreController = controller;
  // Create shop items
  foreach (var product in controller.products.all)
  {
    Instantiate<ShopItem>(shopItemTemplate, transform).Init(product);
  }
}

public void OnInitializeFailed(InitializationFailureReason error)
{
  Debug.Log($"In-App Purchasing initialize failed: {error}");
}

۳. خرید محصول:

با زدن روی دکمه خرید هر آیتم متد m_StoreController.InitiatePurchase(productId) را فراخوانی کنید. نتیجه فرآیند خرید را از طریق متدهای زیر دریافت خواهید کرد.

public PurchaseProcessingResult ProcessPurchase(PurchaseEventArgs args)
{
  //Retrieve the purchased product
  var product = args.purchasedProduct;
  Debug.Log($"Purchase Complete - Product: {product.definition.id}");

  //We return Complete, informing IAP that the processing on our side is done and   the transaction can be closed.
  return PurchaseProcessingResult.Complete;
}

public void OnPurchaseFailed(Product product, PurchaseFailureReason failureReason)
{
  Debug.Log($"Purchase failed - Product: '{product.definition.id}', PurchaseFailureReason: {failureReason}");
}

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

تعیین شناسه بازی

در مسیر زیر شناسه بازی را تعیین کنید:
Edit -> Project Settings -> Player -> Other Settings -> Override Default Package Name


override packagename

تعیین مارکت
در پوشه Resources که بصورت خودکار تولید شده است و فایل BillingMode در آن قرار دارد مقدار androidStore را از Google به Cafebazaar تغییر دهید.

{"androidStore":"Cafebazaar"}

توجه داشته باشید برای نسخه‌های ۲۰۱۹ و قدیمی‌تر یونیتی، فایل bazaar-purchasing.aar را در پوشه Bazaar\Purchasing\Plugins\UnityPurchasing\Android پیدا کنید و تگ queries  را از فایل AndroidManifest.xml که داخل فایل aar وجود دارد، حذف کنید.


بیشتر بخوانید:

به مطالب ارائه شده چه امتیازی می‌دهید؟
محل نوشتن دیدگاه ...

اگر در مورد محتوا نظر یا پیشنهادی دارید لطفا برای ما بنویسید.

زمان انتشار: ۱۴۰۰-۰۸-۰۱ ۱۱:۵۷

آخرین به‌روزرسانی: ۱۴۰۱-۰۲-۲۹ ۰۶:۲۴