Valider la clé de licence d’un client depuis votre serveur : validation, activation par appareil, cache et pannes réseau.
Vous vendez un logiciel, une application ou un accès sur Pulse-Sell. Chaque achat émet une clé de licence. Voici comment votre produit vérifie cette clé de manière sûre.
La validation se fait toujours depuis votre serveur, jamais depuis l’application du client. Votre clé d’API (psk_…) ne doit jamais être dans un code distribué : quelqu’un l’extrairait en quelques minutes. Créez une clé dédiée avec les permissions licenses.read (validation) et licenses.write (activation) seulement.
Si device_activated est faux et activations.remaining est supérieur à 0, activez :
async function activate(key, deviceId, deviceName) { const res = await fetch(`${API}/licenses/${encodeURIComponent(key)}/activate`, { method: "POST", headers, body: JSON.stringify({ device_id: deviceId, device_name: deviceName }), }); if (res.status === 409) return { ok: false, reason: "limit_reached" }; // plus de place if (!res.ok) throw new Error(`Pulse-Sell ${res.status}`); return { ok: true };}
Le même appareil peut être activé plusieurs fois sans conséquence. Quand le quota est atteint, proposez à l’utilisateur de libérer un ancien appareil avec POST /licenses/{clé}/deactivate.
Ne validez pas à chaque lancement si vous pouvez l’éviter :
Mettez en cache le résultat valide côté serveur (par exemple 1 heure) pour réduire vos appels.
Pour une application de bureau, revalidez au moins toutes les 24 heures, et conservez un résultat de validation signé par votre serveur, pas la réponse brute de Pulse-Sell.
Si Pulse-Sell est injoignable (réseau, panne), accordez un délai de grâce de quelques jours à une licence déjà validée. Un paiement ne doit pas bloquer un client honnête parce qu’un réseau est coupé.
N’affichez pas de message d’erreur détaillé qui aiderait un attaquant.