پرش به مطلب اصلی

آشنایی با مفاهیم پرداخت درون‌برنامه‌ای

آماده‌سازی برنامه برای پرداخت درون‌برنامه‌ای​

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

انواع محصولات درون‌برنامه‌ای​

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

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

  • شناسه یکتای محصول (SKU)
  • عنوان محصول
  • توضیحات محصول
  • قیمت محصول

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

محصولات مصرف‌شدنی (Consumable)​

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

  • سکه یا الماس (Gem) در بازی‌ها
  • انرژی یا سوخت در بازی‌ها
  • آیتم‌ها و قابلیت‌های موقت

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

محصولات مصرف‌نشدنی (Non-Consumable)​

محصولات مصرف‌نشدنی، محصولاتی هستند که کاربر تنها یک بار آن‌ها را خریداری می‌کند و دسترسی به آن‌ها دائمی است.

نمونه‌هایی از این محصولات عبارت‌اند از:

  • حذف دائمی تبلیغات
  • ارتقای برنامه از نسخه آزمایشی به نسخه کامل
  • باز کردن دائمی مراحل یا قابلیت‌های ویژه

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

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

در حال حاضر، سرویس پرداخت درون‌برنامه‌ای مایکت از محصولات اشتراکی پشتیبانی نمی‌کند. برای دریافت اطلاعات بیشتر می‌توانید با پشتیبانی توسعه‌دهندگان مایکت از طریق ایمیل developer@myket.ir در ارتباط باشید.

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

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

شناسه محصول (SKU)​

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

نکات مهم:

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

توکن خرید (purchaseToken)​

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

اطلاعات اضافی توسعه‌دهنده (Developer Payload)​

اطلاعات اضافی توسعه‌دهنده یا Developer Payload یک رشته اختیاری است که می‌توانید هنگام ارسال درخواست خرید به مایکت ارائه کنید.

این مقدار برای نگهداری اطلاعات تکمیلی مرتبط با درخواست خرید استفاده می‌شود و پس از انجام فرآیند پرداخت، همراه اطلاعات خرید در کلاس Purchase به برنامه بازگردانده می‌شود. همچنین هنگام دریافت مجدد اطلاعات خرید، مقدار ثبت‌شده Developer Payload نیز در اطلاعات مربوط به خرید قابل دسترسی است.

برای استفاده صحیح از این قابلیت، نکات زیر را رعایت کنید:

  • از یک مقدار قابل شناسایی برای ارتباط دادن درخواست خرید با کاربر یا سفارش استفاده کنید.
  • پس ز دریافت پاسخ پرداخت، مقدار Developer Payload را با مقدار ارسال‌شده در درخواست اولیه مقایسه کنید.
  • برای افزایش امنیت، اعتبارسنجی اطلاعات خرید را در سرور خود انجام دهید.
  • از Developer Payload به‌تنهایی به‌عنوان مدرک معتبر بودن خرید استفاده نکنید.
نکته

توجه کنید که مقدار طول رشته‌ی developerPayload نمی‌تواند بیش‌تر از ۸۰۰ کاراکتر باشد.

نکته امنیتی: اطلاعات بازگشتی از کلاینت، از جمله Developer Payload، نباید بدون اعتبارسنجی مورد اعتماد قرار گیرند. برای جلوگیری از سوءاستفاده، اعتبار خرید و ارتباط آن با کاربر باید به‌صورت مستقل بررسی شود.

کلید عمومی پرداخت (Public Key)​

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

مصرف کردن خرید (Consume Purchase)​

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

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

تأمین محصول (Provisioning)​

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

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

مراحل خرید و مصرف محصولات مصرف‌شدنی​

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

۱. فرآیند خرید محصول را آغاز کنید.
۲. نتیجه فرآیند خرید و اطلاعات مربوط به تراکنش را دریافت کنید.
۳. در صورت موفقیت خرید، اطلاعات دریافتی را اعتبارسنجی کنید. (کتابخانه‌ی مایکت این کار را در کلاینت انجام می‌دهد)
۴. خرید را به سرور خود بفرستید و صحت‌سنجی خرید را انجام بدهید و در صورت تایید خرید، محصول را برای کاربر فعال کنید.
۵. محصول را مصرف (Consume) کنید که مایکت متوجه شود فرایند تحویل به کاربر کامل انجام شده است.
۶. پس از تأیید مصرف موفق، محصول خریداری‌شده را در برنامه به کاربر تحویل دهید.

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

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

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

روند پیشنهادی به این صورت است:

۱. با فراخوانی متد queryInventory، فهرست خریدهای فعال کاربر را دریافت کنید.
۲. اطلاعات خریدها را اعتبارسنجی کرده و وضعیت پردازش آن‌ها را در سیستم خود بررسی کنید.
۳. برای خریدهای مصرف‌شدنی که هنوز مصرف نشده‌اند، پیدا کنید.
۴. نتیجه فرآیند خرید و اطلاعات مربوط به تراکنش را دریافت کنید.
۵. در صورت موفقیت خرید، اطلاعات دریافتی را اعتبارسنجی کنید. (کتابخانه‌ی مایکت این کار را در کلاینت انجام می‌دهد)
۶. خرید را به سرور خود بفرستید و صحت‌سنجی خرید را انجام بدهید و در صورت تایید خرید، محصول را برای کاربر فعال کنید.
۷. محصول را مصرف (Consume) کنید که مایکت متوجه شود فرایند تحویل به کاربر کامل انجام شده است.
۸. پس از تأیید مصرف موفق، محصول خریداری‌شده را در برنامه به کاربر تحویل دهید.

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

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