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

توی این آموزش قراره از پرداخت درون برنامه توی گیم میکر استودیو ۱ و ۲ استفاده کنیم. کدنویسی هر دو مشابه هم هست فقط قرار دادن دسترسی هر مارکت فرق داره.

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

در صورتی که از گیم میکر استودیو ۱ استفاده می کنید مراحل زیر رو انجام بدید:

  • به محل نصب گیم میکر رفته و وارد مسیر Android\runner\ProjectFiles\src\main\aidl\com\android\vending\billing شوید و فایلی که از قسمت فایل های موردنیاز در قسمت قبل دانلود کردید رو جایگزین کنید.
  • همچنین این فایل رو در مسیر Android\runner\src\com\android\vending\billing هم قرار بدید.

در صورتی که از گیم میکر استودیو ۲ استفاده می کنید مراحل زیر رو انجام بدید:

  • به مسیر C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.1.4.200\android\runner\ProjectFiles\src\main\aidl\com\android\vending\billing رفته و فایلی که از قسمت فایل های موردنیاز در قسمت قبل دانلود کردید رو جایگزین کنید.
  • همچنین این فایل رو در مسیر C:\ProgramData\GameMakerStudio2\Cache\runtimes\runtime-2.1.4.200\android\runner\ProjectFiles\src\main\java\com\android\vending\billing هم قرار بدید.

به پروژه خودتون برید یا یک پروژه جدید بسازید. بر روی قسمت Extensions کلیک راست کنید و گزینه Import Extension رو انتخاب کنید.

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

یک آبجکت برای کنترل عملیات پرداخت بسازید.

یک ایونت از نوع Asynchronous/Social بسازید و کد زیر رو داخلش قرار بدید:

var status=string(ds_map_find_value(async_load, "type" ));

توی ایونت Create این آبجکت کد زیر رو قرار بدید:

iap_init("RSA Key", MARKET_CAFEBAZAAR, false);
  • پارامتر اول باید از پنل بازار یا هر مارکتی استفاده می کنید دریافت کنید. این پارامتر به اسم کلید عمومی ثبت شده.
  • پارامتر دوم مارکت مورد نظرتون هستش. با نوشتن MARKET لیست مارکت ها نشون داده میشه.
  • مقدار سوم فعال یا غیرفعال بودن حالت دیباگ هستش. بهتره توی انتشار نهایی غیرفعال باشه.

برای بررسی کردن اینکه اتصال با مارکت موردنظر انجام شده یا نه می تونید کد زیر رو به آخر ایونت Social اضافه کنید:

if(status == "onInitializeSuccess") {
	show_message_async("آماده سازی انجام شد.");
} else if(status == "onInitializeFailed") {
	var errorCode = string(ds_map_find_value(async_load, "errorCode" ));
	var errorMessage = string(ds_map_find_value(async_load, "errorMessage"));
	show_message_async("آماده سازی انجام نشد.");
}

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

iap_request_payment("Product Id", TYPE_INAPP);
  • پارامتر اول شناسه محصول هستش که در پنل مارکت ثبت کردید.
  • پارامتر دوم نوع محصول هستش. اگه محصول مصرفی باشه TYPE_INAPP و اگه اشتراکی باشه TYPE_SUBS قرار داده میشه. (مارکت ایران اپس از محصول اشتراکی پشتیبانی نمیکنه و فقط محصول مصرفی داره.)

برای دریافت نتیجه پرداخت کد زیر رو به آخر ایونت Social اضافه کنید:

//// اگر محصول مصرفی باشد ////
if(status == "onConsumablePurchased") {
    var productId = string(ds_map_find_value(async_load, "productId" ));
    var purchaseToken = string(ds_map_find_value(async_load, "purchaseToken"));
    
	/// عملیات بعد از پرداخت موفق را اینجا قرار دهید
	
    show_message_async("محصول " + productId + " با موفقیت خریداری شد. توکن: " + purchaseToken);
}
//// اگر محصول اشتراکی باشد ////
else if(status == "onNonConsumablePurchased") {
    var productId = string(ds_map_find_value(async_load, "productId" ));
    var purchaseToken = string(ds_map_find_value(async_load, "purchaseToken"));
    
	/// عملیات بعد از پرداخت موفق را اینجا قرار دهید
	
    show_message_async("محصول " + productId + " با موفقیت خریداری شد. توکن: " + purchaseToken);
}
//// اگر پرداخت انجام نشود ////
else if(status == "onPurchaseFail") {
    var errorCode = string(ds_map_find_value(async_load, "errorCode" ));
    var errorMessage = string(ds_map_find_value(async_load, "errorMessage"));
	
	/// عملیات بعد از پرداخت ناموفق را اینجا قرار دهید
	
    show_message_async("پرداخت انجام نشد.");
}

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

iap_get_sku_details("productId1,productId2,productId3,...")
  • در صورتی که می خواهید مشخصات بیش از یک محصول رو دریافت کنید بین شناسه محصولات , قرار بدید.

نتیجه این درخواست رو می تونید با قرار دادن کد زیر به آخر ایونت Social دریافت کنید:

//// اگر دریافت اطلاعات انجام شد ////
if (status == "onGetInventorySuccess") {
    var details = string(ds_map_find_value(async_load, "details" ));
    var detailsMap = json_decode(details);
	
	/*** عملیات مربوط به دریافت اطلاعات محصولات را اینجا قرار دهید ***/
}
//// اگر دریافت اطلاعات انجام نشد ////
else if (status == "onGetInventoryFailed") {
    var errorCode = string(ds_map_find_value(async_load, "errorCode" ));
    var errorMessage = string(ds_map_find_value(async_load, "errorMessage"));
    show_message_async("دریافت اطلاعات انجام نشد.");
}
  • متغیر details در کد بالا یک رشته با فرمت جیسون هستش که توی خط پایینش اونو تبدیل به ds_map کردیم.

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

iap_get_owned_products();

برای دریافت نتیجه کد زیر رو به آخر ایونت Social اضافه کنید:

//// اگر دریافت محصولات خریداری شده انجام شد ///
if (status == "onGetOwnedProductsSuccess") {
    var products = string(ds_map_find_value(async_load, "products" ));
    var productsMap = json_decode(products);
    
	/*** عملیات مربوط به دریافت محصولات خریداری شده را اینجا قرار دهید ***/
}
//// اگر دریافت محصولات خریداری شده انجام نشد ///
else if (status == "onGetOwnedProductsFailed") {
    var errorCode = string(ds_map_find_value(async_load, "errorCode" ));
    var errorMessage = string(ds_map_find_value(async_load, "errorMessage"));
    show_message_async("دریافت محصولات خریداری شده انجام نشد.");
}
  • متغیر products در کد بالا یک رشته با فرمت جیسون هستش که توی خط پایینش اونو تبدیل به ds_map کردیم.

 

افزودن دسترسی مارکت ها

گیم میکر استودیو ۱

بر روی افزونه دوبار کلیک کنید:

به تب اندروید رفته و ذر قسمت Android Permissions دسترسی پیش فرض (پیش فرض دسترسی بازار هستش) رو حذف کنید و دسترسی مارکت موردنظرتون رو قرار بدید. لیست دسترسی ها آخر این پست قرار داره.

 

گیم میکر استودیو ۲

بر روی افزونه دوبار کلیک کنید:

بر روی اندروید در قسمت ۱ کلیک کنید و ذر قسمت Android Permissions دسترسی پیش فرض (پیش فرض دسترسی بازار هستش) رو حذف کنید و دسترسی مارکت موردنظرتون رو قرار بدید. لیست دسترسی ها آخر این پست قرار داره.

 

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

com.farsitel.bazaar.permission.PAY_THROUGH_BAZAAR

دسترسی مایکت:

ir.mservices.market.BILLING

دسترسی ایران اپس:

ir.tgbs.iranapps.permission.BILLING

دسترسی پارس هاب، چارخونه و گوگل پلی استور:

com.android.vending.BILLING

میلاد محمدی رضاگاه 21 مقاله نوشته است

2 دیدگاه در “آموزش پرداخت درون برنامه برای گیم میکر استودیو

انصراف از پاسخ

ارسال پاسخ به میلاد محمدی رضاگاه

ایمیل شما منتشر نخواهد شد. قسمت های ضروری با * مشخص شده اند

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>