این نوشته اجزا و ویژگیهای اصلی خرید درونبرنامهای را شرح میدهد که برای اضافه کردن امکانات خرید درونبرنامهای به برنامه خود نیاز به دانستن آنها دارید.
API خرید درونبرنامهای
برنامه شما با استفاده از یک API که مایکت نصب شده روی دستگاه ارائه میدهد، به سرویس خرید درونبرنامهای دسترسی مییابد. بعد از آن برنامه مایکت است که ارتباط بین برنامه شما و سرور مایکت را مدیریت میکند. در عمل، برنامه شما هرگز با سرورهای مایکت مستقیما ارتباط برقرار نمیکند. در عوض، برنامه شما درخواستها را (از طریق IPC که در اندروید فراهم شده) به برنامه مایکت ارسال میکند و از پاسخها را نیز از آن میگیرد. برنامه شما با هیچ ارتباط اینترنتی بین خودش و سرورهای مایکت کاری ندارد.خرید درونبرنامهای فقط در برنامههایی قابل پیادهسازی است که در مایکت منتشر میکنید. برای تکمیل کردن درخواست خرید درونبرنامهای، برنامه مایکت باید بتواند از طرق اینترنت به سرورهای مایکت دسترسی پیدا کند.خرید درونبرنامهای با دامنه وسیعی از دستگاههای اندرویدی سازگاری دارد. خرید درونبرنامهای در دستگاههایی با اندروید 2.1 یا بالاتر (تقریبا تمام دستگاههای اندرویدی فعال) که آخرین نسخه مایکت را دارند پشتیبانی میشود.
ویژگیهای خرید درونبرنامهای
- درخواستها از طریق یک API ساده فرستاده میشوند که به شما این امکان را میدهد مشخصات محصول را بخواهید، محصولی را سفارش دهید، و به راحتی لیست محصولاتی که کاربر صاحب آنهاست را بگیرید.
- تمام خریدها توسط مایکت مدیریت میشوند. یعنی مایکت مالکیت کاربر بر محصولات را ثبت میکند. کاربر نمیتواند صاحب چندین نمونه از یک محصول باشد، در هر نقطهای در زمان تنها یک نمونه را میتوان در اختیار داشت.
- محصولات مصرف شدنی که خریده شدهاند را میتوان مصرف کرد. زمانی که محصولی مصرف شد به وضعیت «بی صاحب» برمیگردد و دوباره میتوان آن را از مایکت خرید.
محصولات درونبرنامهای
محصولات درونبرنامهای کالاهای دیجیتالی هستند که شما از درون برنامه خود برای فروش به کاربر عرضه میکنید. مثالهایی میتوان برای کالاهای دیجیتالی زد مانند پول درون بازی، ارتقاء حساب کاربری به نسخه ویژه، امکانات خاصی درون یک برنامه که در نسخه مجانی نیست، و خرید محتوای جدید برای برنامهتان.شما میتوانید از خرید درونبرنامهای فقط برای فروش محتوای دیجیتالی استفاده کنید. شما نمیتوانید از آن برای فروش کالاهای فیزیکی یا هر چیزی که نیاز به تحویل فیزیکی داشته باشد استفاده کنید.مایکت در قبال محتوای دیجیتالی که برای عرضه قرار میدهید، هیچ مسئولیتی را قبول نمیکند و صاحب برنامه مسئول این محتوا خواهد بود. محصولات درونبرنامهای همیشه مربوط به یک برنامه هستند. یعنی یک برنامه نمیتواند یک محصول را که برای یک برنامه دیگر است بخرد، حتی اگر آن برنامهها برای یک توسعه دهنده باشند. اما میتوانید برای برنامههای دیگری که دارید محصول دیجیتالی دیگری، ایجاد و عرضه کنید.شما میتوانید محصولات را به دو صورت «مصرف شدنی» و «مصرف نشدنی» در پنل توسعهدهندگان تعریف کنید. محصولاتی که کاربر چند بار نیاز دارد بخرد و مزایای موقتی دارند را مصرف شدنی تعریف کنید، محصولاتی که کاربر نیاز دارد تنها یک بار بخرد و اثر دائمی دارند را مصرف نشدنی تعریف کنید. تفاوت در این است که اگر یک درخواصت مصرف برای محصول مصرف نشدنی بفرستید، مایکت محصول را مصرف نمیکند و در پاسخ به برنامه میگوید عملیات ناموفق بوده است. با این کار محصولی که کاربر انتظار دارد تنها یک بار باید بخرد مصرف نمیشود.
پنل مایکت برای توسعهدهندگان
پنل توسعهدهندگان جاییست که شما میتوانید برنامههایتان را منتشر کنید و محصولات دیجیتالی مختلفی را برای فروش درونبرنامهای مدیریت کنید،شما میتوانید به هر تعداد که میخواهید برای برنامهتان کالاهای دیجیتالی تعریف کنید. برای هر محصول شما میتوانید مشخصاتی مانند شناسه محصول (SKU نیز نام دارد(، قیمت، مصرف شدنی بودن، و توضیحات را مشخص کنید.
نحوه خرید در مایکت
کاربر هنگام خرید محصول درونبرنامهای، با همان روند خرید برنامه از درون مایکت مواجه میشود، مایکت از یک روش خرید و پرداخت وجه برای هر دو استفاده میکند تا کاربر یک تجربه ثابت و آشنا داشته باشد.
برای آغاز یک عملیات خرید، برنامه شما یک درخواست خرید برای یک محصول مشخص ارسال میکند، پس از آن مایکت تمام امور از جمله درخواست، تایید فرم پرداخت و پردازش عملیات مالی را اداره میکند.هنگامی که روند پرداخت کامل شد، مایکت جزئیات خرید مانند شماره سفارش، تاریخ و زمان سفارش، و قیمت را به برنامه شما ارسال میکند. در هیچ نقطهای برنامه شما مسئولیتی برای رسیدگی به امور مالی را ندارد و تمام این امور را مایکت انجام خواهد داد.
تغییراتی که در TrivialDrive اعمال کردهایم
برای کمک به شما در راهاندازی خرید درونبرنامهای، ما یک برنامه مثال برای شما آماده کردهایم که نحوه استفاده از خرید درونبرنامهای درون یک بازی را نشان خواهد داد. این برنامه که TrivialDrive نام دارد همان برنامهای است که Google Play برای خرید درونبرنامهای خود به عنوان مثال استفاده میکند، ما تنها دو تغییر کوچک در کد برنامه دادیم تا به جای کار کردن با سرویس Google Play از سرویس خرید درونبرنامهای مایکت استفاده کند. به این ترتیب شما نیز میتوانید کدهای آمادهای که برای کار با سرویس خرید درونبرنامهای Google Play نوشته شدهاند را به سرعت تغییر دهید تا برای کار با مایکت سازگار شوند. در واقع دلیل اصلی که API سرویس خرید درونبرنامهای مایکت مانند Google Play پیادهسازی شده همین است. تغییرات اعمال شده روی برنامه اصلی به این صورت هستند:
تغییر اول: در فایل AndroidManifest.xml این خط را حذف کنید:
</uses-permission android:name="com.android.vending.BILLING">
و به جای آن این خط را قرار دهید:
<uses-permission android:name="ir.mservices.market.BILLING" />
تغییر دوم: در کلاس IabHelper این دو خط را حذف کنید:
Intent serviceIntent = new Intent("com.android.vending.billing.InAppBillingService.BIND"); serviceIntent.setPackage("com.android.vending");
و آنها را با کد دو خط زیر جایگزین کنید:
Intent serviceIntent = new Intent("ir.mservices.market.InAppBillingService.BIND"); serviceIntent.setPackage("ir.mservices.market");
در پروژهای که ما در اختیار شما قرار میدهیم این تغییرات اعمال شده است.بازی TrivialDrive نشان میدهد که چگونه از API خرید درونبرنامهای استفاده کنید و محصولات را برای یک بازی رانندگی بخرید و مصرف کنید. همچنین شامل کلاسهاییست که عملیاتهای خرید درونبرنامهای را آسانتر میکنند مثلا تایید امضای دادهها به صورت خودکار.توصیه: حتما کد برنامه خود را قبل از انتشار Obfuscate (نامفهوم) کنید. میتوانید از ابزار ProGuard که همراه SDK اندروید است برای اینکار استفاده کنید. برای اطلاعات بیشتر، فصل ۹ را ببینید.
کاربر در خواست خرید درونبرنامهای خود را از طریق برنامه شما آغاز میکند. و به صفحه پرداخت مایکت منتقل میشود، مایکت هم به این درخواست ارسال شده جواب میدهد. زمانی که پرداخت انجام شد صفحهی تایید خرید دیده میشود و در نهایت به ادامه برنامه بر میگردید.