چگونگی ساخت سیستم لایسنسدهی افزونه وردپرس
فروش یک افزونه تجاری وردپرس نیازمند یک سیستم لایسنسدهی است.
شما باید کلیدها را در سایتهای مشتری فعال کنید. باید کلیدها را به دامنههای خاص محدود کنید. باید از اشتراکگذاری یک کلید توسط کاربران در سایتهای متعدد جلوگیری کنید.
بیشتر افراد از Freemius یا EDD استفاده میکنند. این ابزارها خوب کار میکنند، اما سهمی از درآمد شما را برمیدارند. آنها وابستگیهای شخص ثالث هستند و شما مالکیت کامل فرآیند را ندارید.
ما سیستم خودمان را برای RideCab WP ساختیم. در اینجا نحوه ساخت یک سیستم سفارشی از صفر آورده شده است.
این سیستم از دو بخش تشکیل شده است.
۱. سرور لایسنس این بخش روی زیرساخت خودتان اجرا میشود. از یک افزونه must-use وردپرس در سایت بازاریابی خود استفاده کنید. این سرور کلیدها را در یک پایگاه داده ذخیره میکند. از یک REST API برای فعالسازی و اعتبارسنجی استفاده میکند. همچنین یک داشبورد برای مدیریت کلیدها فراهم میکند.
۲. کلاینت (Client) این یک کلاس PHP در داخل افزونه تجاری شماست. یک صفحه تنظیمات اضافه میکند. برای فعالسازی، سرور شما را فراخوانی میکند. نتایج اعتبارسنجی را کش (cache) میکند. و در پسزمینه مجدداً اعتبارسنجی را انجام میدهد.
نیازمندیهای اصلی:
- تولید کلیدهای منحصربهفرد هنگام خرید.
- اجازه فعالسازی کلیدها به مشتریان.
- محدود کردن کلیدها به دامنههای خاص.
- اعتبارسنجی دورهای کلیدها.
- مدیریت غیرفعالسازیها زمانی که مشتریان سایت خود را تغییر میدهند.
- مدیریت خطا به شکلی نرم در صورت از دسترس خارج شدن سرور.
مهمترین قانون این است که سیستم در صورت بروز خطا، باز بماند (fail open).
اگر سرور لایسنس شما از دسترس خارج شد، دسترسی مشتری را قطع نکنید. اگر سیستم را به صورت fail closed طراحی کنید، مشتری با یک سایت خراب مواجه میشود که این موضوع اعتبار شما را تخریب میکند. اما اگر سیستم را fail open طراحی کنید، افزونه همچنان به کار خود ادامه میدهد. ممکن است چند کپیبردار از آن به صورت رایگان استفاده کنند، اما مشتریان پولی شما راضی خواهند ماند.
بهترین روشها:
- استفاده از HTTPS برای تمام فراخوانیهای API.
- کش کردن نتایج اعتبارسنجی برای حفظ عملکرد.
- استفاده از
random_bytes()برای کلیدهای امن. ازrand()استفاده نکنید. - فراهم کردن راهی برای مشتریان تا خودشان کلیدها را غیرفعال کنند.
- اجازه دادن به دامنههای staging یا dev.
این تنظیمات موارد پایه لایسنسدهی را پوشش میدهد. این سیستم شامل نحوه تحویل آپدیتها نیست که در پستهای آینده به آن خواهم پرداخت.