1. Backend Implementation (Node.js)
const axios = require('axios');
class SunLicenseValidator {
constructor(licenseKey, productId, version = '1.0.0') {
this.licenseKey = licenseKey;
this.productId = productId;
this.version = version;
this.apiUrl = 'YOUR_API_URL/api/v1/validate';
}
async validate() {
try {
const payload = {
licenseKey: this.licenseKey,
productId: this.productId,
productVersion: this.version,
hwid: this.getHWID(), // Optional
operatingSystem: process.platform,
operatingSystemVersion: process.version
};
const response = await axios.post(this.apiUrl, payload, {
headers: { 'Content-Type': 'application/json' }
});
return response.status === 200;
} catch (error) {
throw new Error(`License validation failed: ${error.message}`);
}
}
getHWID() {
// Implement your HWID generation logic here
return 'YOUR-HWID';
}
}
// Usage example
const validator = new SunLicenseValidator('YOUR-LICENSE-KEY', YOUR_PRODUCT_ID);
validator.validate()
.then(() => console.log('License valid!'))
.catch(error => console.error(error));
2. Frontend Implementation (Browser)
class SunLicenseValidator {
constructor(licenseKey, productId, version = '1.0.0') {
this.licenseKey = licenseKey;
this.productId = productId;
this.version = version;
this.apiUrl = 'YOUR_API_URL/api/v1/validate';
}
async validate() {
try {
const payload = {
licenseKey: this.licenseKey,
productId: this.productId,
productVersion: this.version,
operatingSystem: navigator.platform,
operatingSystemVersion: navigator.userAgent
};
const response = await fetch(this.apiUrl, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(payload)
});
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return true;
} catch (error) {
throw new Error(`License validation failed: ${error.message}`);
}
}
}
3. Integration with Popular Frameworks
function licensingMiddleware(licenseKey, productId) {
const validator = new SunLicenseValidator(licenseKey, productId);
return async (req, res, next) => {
try {
await validator.validate();
next();
} catch (error) {
res.status(403).json({ error: 'Invalid license' });
}
};
}
// Usage in Express app
app.use(licensingMiddleware('YOUR-LICENSE-KEY', YOUR_PRODUCT_ID));
import React, { useState, useEffect } from 'react';
function LicenseProtectedApp({ licenseKey, productId, children }) {
const [isValid, setIsValid] = useState(false);
const [error, setError] = useState(null);
useEffect(() => {
const validator = new SunLicenseValidator(licenseKey, productId);
validator.validate()
.then(() => setIsValid(true))
.catch(err => setError(err.message));
}, [licenseKey, productId]);
if (error) return <div>License Error: {error}</div>;
if (!isValid) return <div>Validating license...</div>;
return children;
}
Common Issues and Solutions