Page tree
Skip to end of metadata
Go to start of metadata

مقدمه

شرکت Anywhere software پلتفرمی با نام Basic4Android جهت تولید و توسعه ساده‌تر برنامه‌های قابل اجرا بر روی سیستم عامل اندروید ارائه کرده است. در این پلتفورم از زبان برنامه‌سازی Basic استفاده می‌شود. Anywhere software برای اتصال به سرویس پرداخت‌ درون‌برنامه‌ای گوگل‌پلی، ماژولی را در اختیار کاربران خود قرار داده است. با توجه به اینکه API پرداخت درون‌برنامه‌ای مایکت دقیقا مانند گوگل پلی است، با تغییراتی اندک این ماژول را برای اتصال به مایکت آماده کرده‌ایم. در ادامه با فرایند اضافه کردن این ماژول به برنامه خود آشنا می‌شوید.

 

تعاریف پرداخت درون‌برنامه‌ای در B4A

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

 

مراحل اضافه کردن ماژول مایکت

برای اضافه کردن کتابخانه سرویس خرید درون‌برنامه مایکت در B4A کافی است، مراحل زیر را انجام دهید:

۱. کتابخانه خرید درون برنامه مایکت در B4A را از اینجا دریافت نمایید.

 ۲. دو فایل MyketIAP.jar و MyketIAP.xml را در پوشه کتابخانه‌های Basic4Android کپی نمایید.

 ۳. در پنل سمت راست B4A، تب libs را انتخاب و Refresh نمایید تا کتابخانه MyketIAP نمایان شود.

 ۴. با استفاده از Manifest Editor  (واقع در منوی Project) کد زیر را به Manifest برنامه خود اضافه کنید:

معرفی API در B4A

 

کلاس BillingManager3

BillingManager3 رابط B4A با سرویس خرید درون برنامه مایکت است. برای استفاده از این کلاس کافی است در  Process_Globals برنامه خود، این کلاس را تعریف نمایید:

از BillingManager3 برای دریافت اطلاعات محصولات خریده‌شده، خرید یک محصول (فروشی یا اشتراکی) و مصرف کردن آن استفاده می‌شود. در ادامه با نحوه استفاده از متد‌های BillingManager3 آشنا می‌شوید:

 

متد Initialize

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

پارامتر اول EventName است و ابتدای نام CallBack‌های BillingManager3 را مشخص می کند. که در این مستند فرض بر این است که پارامتر EventName را "BillingManager" مقدار‌دهی نموده‌ایم.

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

 

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

چک کردن پشتیبانی از سرویس درون‌خرید مایکت

این Callback، پس از اتمام عملیات متد Initialize صدا زده می شود مشخص می‌کند که آیا دستگاه کاربر از سرویس درون خرید مایکت پشتیبانی می‌کند یا خیر. در صورتی که مقدار Supported برابر True باشد، دستگاه کاربر از خرید درون‌برنامه‌ای مایکت پشتیبانی می‌کند.

متد RequestPayment

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

پارامتر اول نام محصول است که در پنل برنامه‌نویسان مایکت وارد نموده اید. پارامتر دوم نوع محصول را مشخص می‌کند. که برای محصولات فروشی مقدار "inapp" و برای محصولات اشتراکی مقدار "subs" را می‌پذیرد. پارامتر سوم اطلاعات اضافی یا Developer Payload می‌باشد. این فیلد شامل رشته‌ای است که مقدار‌دهی آن اختیاری است و در پردازش مایکت تاثیری ندارد. مقداری که به این پارامتر تخصیص داده می‌شود عینا در CallBack اتمام خرید (که در ادامه توضیح داده می‌شود)، باز‌می‌گردد. برای آشنایی بیشتر با مفهوم Developer Payload به اینجا مراجعه نمایید.


اتمام فرایند خرید 

این Callback، پس از اتمام عملیات متد RequestPayment صدا زده می‌شود و وضعیت خرید Product را مشخص می‌کند. درصورتی که Success برابر True باشد خرید با موفقیت انجام شده است. اگر محصول خریداری‌ شده از نوع فروشی و مصرف‌شدنی بود، باید این محصول را با استفاده از متد ConsumeProduct در سرور مایکت مصرف نمود. در صورتی که محصول از نوع فروشی و مصرف‌نشدنی و یا از نوع اشتراکی بود، نباید متد ConsumeProduct صدا زده شود.


متد ConsumeProduct 

برای محصولات مصرف‌شدنی باید حتما پس از خرید، متد ConsumeProduct فراخوانی شود تا این محصول در سرور مایکت مصرف شود. برای این کار کافی است:


این متد Object محصولی که باید مصرف شود را در تنها پارامتر ورودی خود می‌گیرد. (این object در callback اتمام خرید ارسال شده است.)

 

اتمام عملیات مصرف شدن محصول

این Callback، پس از اتمام عملیات متد ConsumeProduct صدا زده می‌شود و در صورتی که پارامتر Success برابر True باشد،  باید محصول را به کاربر تحویل داد.


متد GetOwnedProducts

این متد در اول برنامه پس از Initialize شدن BillingManager صدا زده می‌شود. هدف از این کار دریافت محصولات فروشی که در سرور مایکت مصرف نشده‌اند و محصولات اشتراکی می‌باشد. بعد از اتمام کار، این متد در Callback دریافت محصولات کاربر لیستی از محصولات برمی‌گرداند.

به عنوان مثال زمانی که کاربر در برنامه شما اکانت ویژه (Premium Account) خریداری می‌کند همیشه این محصول در Callback‌ برگردانده می‌شود.

برای صدا زدن این متد کافی است:

دریافت محصولات کاربر

این Callback، پس از فراخوانی متد GetOwnedProducts صدا زده می شود و لیست purchases شامل محصولات مصرف‌نشدنی کاربر و محصولات مصرف‌شدنی که در سرور مایکت مصرف نشده‌اند می‌باشد.

فعال و غیرفعال کردن Log

برای فعال یا غیر‌فعال کردن Log کتابخانه سرویس خرید درون‌برنامه‌ای مایکت، کافیست مقدار True/False را به متد DebugLogging بدهید:

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

پروژه تستی

این پروژه همان پروژه Trivial Drive گوگل تغییر یافته است. می‌توانید این پروژه را از اینجا دانلود کنید و یا روی GitHub ببینید.

در این پروژه سه نوع محصول وجود دارد:

محصول مصرف شدنی(gas)

 محصول مصرف نشدنی(premium)

 محصول اشتراکی(infinity)


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

این پروژه شامل چهار دکمه خرید بنزین، استفاده بنزین، خرید اکانت ویژه و خرید اکانت اشتراکی است. که در زیر به اختصار توضیح داده شده است:

 

 

خرید بنزین یا Buy Gas

بنزین در این مثال در دسته‌ی محصولات فروشی و مصرف‌شدنی است. با فشردن این دکمه در صورتی که مخزن بنزین پر نباشد برنامه به خرید درون‌برنامه‌ای مایکت وصل شده و بعد از پرداخت هزینه مورد نظر تعداد ۱۰ واحد به مخزن بنزین اضافه می‌شود.

 

استفاده بنزین یا Use Gas

در صورتی که تعداد بنزین ذخیره بیشتر از ۱۰ واحد باشد، ۱۰ واحد بنزین مصرف می‌شود.

 

خرید اکانت ویژه یا Buy Premium

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

 

خرید اکانت اشتراکی یا Get Inifite Gas

این اکانت به صورت زمان‌دار است که کاربر با پرداخت هزینه می‌تواند اکانت (ماهانه، هفتگی و یا سالانه) را خریداری کند. توجه داشته باشید که کاربر با خریدن اکانت ویژه می‌تواند به صورت نامحدود بنزین مصرف کند بدیهی است که در این مدت زمان کاربر نباید بنزین خریداری کند و همچنین نمی‌تواند اکانت زمان‌دار دیگری نیز بخرد به همین دلیل دکمه اکانت نامحدود مخفی شده و خرید بنزین نیز غیرفعال می‌شود.

ویدئو آموزشی

در این ویدئو نحوه اضافه کردن ماژول مایکت در B4A و فرایند استفاده از سرویس خرید درون‌برنامه‌ای آموزش داده شده است. این ویدئو را می‌توانید از اینجا دانلود کنید و یا در آپارات مشاهده نمایید.

  • No labels