وقتی دومین محصول منتشر میشود، کپیکردن منطق لایسنس داخل هر افزونه به اختلاف رفتار و خطای نگهداری میرسد. طراحی ماژولار قرارداد ثابتی برای فعالسازی، بررسی، غیرفعالسازی و دریافت بهروزرسانی میسازد؛ در حالی که هر محصول فقط شناسه، نسخه و سیاست دوره خود را اعلام میکند.
قرارداد API را پیش از کد تعریف کنید
نام Endpoint، فیلدهای لازم، کد وضعیت، کد خطای ماشینی و رفتار Retry باید مستند باشند. متن فارسی برای کاربر مفید است، اما افزونه باید براساس کد ثابت مانند license_expired تصمیم بگیرد. تغییر متن نباید منطق کلاینت را بشکند.
حداقل داده لازم
کلید لایسنس، شناسه محصول، دامنه نرمالشده و نسخه افزونه معمولاً کافیاند. رمز مدیریت، فهرست کاربران یا محتوای سایت به اعتبارسنجی ارتباطی ندارد. هدف هر فیلد و مدت نگهداری لاگ را مشخص کنید.
نرمالسازی و محدودیت دامنه
http و https، www، حروف بزرگ، پورت محلی و مسیر نباید یک سایت را چند دامنه نشان دهند. قاعده نرمالسازی در سرور و کلاینت هماهنگ باشد. انتقال دامنه، Staging و توسعه محلی سیاست جدا و قابل مدیریت داشته باشند تا مشتری مجبور به تماس بیدلیل نشود.
امنیت ارتباط
- فقط HTTPS و اعتبارسنجی گواهی؛
- ذخیره هش یا نسخه رمزنگاریشده کلید در محل مناسب؛
- Rate Limit براساس کلید و منبع، نه فقط IP؛
- پاسخ بدون اطلاعات اضافی درباره مشتری دیگر؛
- ثبت رویداد فعالسازی و تغییر وضعیت بدون ذخیره رازهای غیرضروری؛
- Header جلوگیری از کش برای پاسخ اعتبارسنجی.
وقتی سرور موقتاً در دسترس نیست
قطع شبکه نباید بلافاصله سایت مشتری را خراب کند. آخرین پاسخ معتبر را برای مدت محدود نگه دارید و تفاوت «نامعتبر» با «قابل بررسی نبودن» را حفظ کنید. قابلیت اصلی میتواند با مهلت کوتاه ادامه یابد، اما دریافت نسخه تازه تا تأیید بعدی متوقف شود.
تحویل بهروزرسانی
Metadata نسخه، حداقل PHP و وردپرس، Changelog و نشانی بسته را فقط برای محصول درست برگردانید. لینک دانلود کوتاهعمر و امضاشده باشد و بسته با Hash یا امضای قابل کنترل عرضه شود. انقضای لایسنس نباید باعث نصب نسخه ناقص یا حذف افزونه شود.
عملیات تکرارپذیر
ارسال دوباره فعالسازی همان دامنه باید نتیجه پایدار بدهد و Callback پرداخت تکراری نباید دوره را دوبار افزایش دهد. برای عملیات مالی و تمدید شناسه یکتا ثبت کنید. پاسخ و تغییر وضعیت باید قابل Audit باشند.
سیستم لایسنس خوب مزاحم کاربر قانونی نیست؛ مرز استفاده را روشن میکند و زیرساخت امن تحویل ارزش بعد از خرید را میسازد.



