𝗛𝗼𝘄 𝘁𝗼 𝗕𝘂𝗶𝗹𝗱 𝗮 𝗪𝗼𝗿𝗱𝗣𝗿𝗲𝘀𝘀 𝗣𝗹𝘂𝗴𝗶𝗻 𝗟𝗶𝗰𝗲𝗻𝘀𝗶𝗻𝗴 𝗦𝘆𝘀𝘁𝗲𝗺
ఒక కమర్షియల్ WordPress ప్లగిన్ను విక్రయించడానికి లైసెన్సింగ్ సిస్టమ్ అవసరం.
మీరు కస్టమర్ సైట్లలో కీలను యాక్టివేట్ చేయాలి. కీలను నిర్దిష్ట డొమైన్లకు లాక్ చేయాలి. ఒకే కీని అనేక సైట్లలో పంచుకోకుండా వినియోగదారులను మీరు అడ్డుకోవాలి.
చాలా మంది Freemius లేదా EDD ఉపయోగిస్తారు. ఈ సాధనాలు బాగా పనిచేస్తాయి. అయితే, అవి మీ ఆదాయంలో కొంత వాటాను తీసుకుంటాయి. ఇవి థర్డ్-పార్టీ డిపెండెన్సీలు (third-party dependencies). ఈ ప్రక్రియపై మీకు పూర్తి నియంత్రణ ఉండదు.
మేము RideCab WP కోసం మా స్వంత సిస్టమ్ను నిర్మించాము. సున్నా నుండి (from scratch) ఒక కస్టమ్ సిస్టమ్ను ఎలా నిర్మించాలో ఇక్కడ ఉంది.
ఈ సిస్టమ్లో రెండు భాగాలు ఉన్నాయి.
లైసెన్స్ సర్వర్ (The License Server) ఇది మీ స్వంత ఇన్ఫ్రాస్ట్రక్చర్పై నడుస్తుంది. మీ మార్కెటింగ్ సైట్లో WordPress must-use ప్లగిన్ను ఉపయోగించండి. ఇది డేటాబేస్లో కీలను నిల్వ చేస్తుంది. యాక్టివేషన్ మరియు వాలిడేషన్ కోసం ఇది REST APIని ఉపయోగిస్తుంది. కీలను నిర్వహించడానికి ఇది ఒక డాష్బోర్డ్ను అందిస్తుంది.
క్లయింట్ (The Client) ఇది మీ కమర్షియల్ ప్లగిన్ లోపల ఉండే ఒక PHP క్లాస్. ఇది ఒక సెట్టింగ్స్ పేజీని జోడిస్తుంది. యాక్టివేట్ చేయడానికి ఇది మీ సర్వర్ను పిలుస్తుంది. ఇది వాలిడేషన్ ఫలితాలను క్యాష్ (cache) చేస్తుంది. ఇది బ్యాక్గ్రౌండ్లో మళ్ళీ వాలిడేట్ చేస్తుంది.
ప్రధాన అవసరాలు (Core Requirements):
- కొనుగోలు సమయంలో ప్రత్యేకమైన కీలను రూపొందించడం.
- కస్టమర్లు కీలను యాక్టివేట్ చేయడానికి అనుమతించడం.
- కీలను నిర్దిష్ట డొమైన్లకు అనుసంధానించడం.
- కీలను క్రమ పద్ధతిలో వాలిడేట్ చేయడం.
- కస్టమర్లు సైట్లను మార్చినప్పుడు డీయాక్టివేషన్లను నిర్వహించడం.
- మీ సర్వర్ డౌన్ అయినప్పుడు సమస్య లేకుండా (fail gracefully) నిర్వహించడం.
అత్యంత ముఖ్యమైన నియమం ఏమిటంటే 'fail open' పద్ధతిని అనుసరించడం.
మీ లైసెన్స్ సర్వర్ డౌన్ అయినప్పుడు, కస్టమర్ను బ్లాక్ చేయవద్దు. మీరు 'fail closed' పద్ధతిని పాటిస్తే, కస్టమర్కు సైట్ పనిచేయకుండా కనిపిస్తుంది. ఇది మీ ప్రతిష్టను దెబ్బతీస్తుంది. మీరు 'fail open' పద్ధతిని పాటిస్తే, ప్లగిన్ పనిచేస్తూనే ఉంటుంది. కొందరు పైరేట్లు దీనిని ఉచితంగా ఉపయోగించుకోవచ్చు, కానీ మీ డబ్బు చెల్లించే కస్టమర్లు సంతోషంగా ఉంటారు.
ఉత్తమ పద్ధతులు (Best Practices):
- అన్ని API కాల్స్ కోసం HTTPS ఉపయోగించండి.
- పనితీరును మెరుగుపరచడానికి వాలిడేషన్ ఫలితాలను క్యాష్ చేయండి.
- సురక్షితమైన కీల కోసం
random_bytes()ఉపయోగించండి.rand()ఉపయోగించవద్దు. - కస్టమర్లు స్వయంగా కీలను డీయాక్టివేట్ చేసుకునే సౌకర్యాన్ని కల్పించండి.
- స్టేజింగ్ (staging) లేదా డెవ్ (dev) డొమైన్లకు అనుమతి ఇవ్వండి.
ఈ సెటప్ లైసెన్సింగ్కు సంబంధించిన ప్రాథమిక అంశాలను నిర్వహిస్తుంది. ఇందులో అప్డేట్ డెలివరీ (update delivery) చేర్చబడలేదు. దాని గురించి నేను భవిష్యత్తు పోస్ట్లో వివరిస్తాను.