API de licence personnalisée
Launch prend en charge Licentivo et les services de licence personnalisés. Choisissez un fournisseur pour toute la boutique dans Paramètres système → Système de licence.
Les produits à licence personnalisée utilisent le service de licence et le SDK du marchand. Launch gère les ventes, la confirmation des paiements, la synchronisation des achats et les demandes de livraison.
- Configurez séparément les connexions, les clés de signature et les correspondances de produits et d'offres pour sandbox et live. Vérifiez la connexion avant de publier les offres.
- Une connexion ayant des commandes ne peut pas être remplacée directement. Migrez les commandes avant de changer de fournisseur, puis republiez les offres.
- Vérifiez achats, renouvellements, changements d'offre, remboursements et reprise après incident dans l'environnement de test avant de publier la configuration de production.
Interfaces du service de licence du marchand
Ces quatre interfaces sont implémentées par le service de licence du marchand et appelées par le serveur Launch. N'envoyez pas ces requêtes à www.licentivo.com.
| API | Usage |
|---|---|
GET /launch/v1/capabilities | Déclarer le protocole, la connexion, l'environnement et les types d'achat et de livraison pris en charge. |
POST /launch/v1/events | Recevoir l'instantané complet de l'achat et renvoyer un accusé après l'enregistrement durable de l'événement. |
GET /launch/v1/events/{event_id} | Consulter l'accusé de l'événement initial. Seul applied confirme que la modification de licence est terminée. |
GET /launch/v1/entitlements/{entitlement_ref}/delivery | Lire la livraison existante de la version actuelle de l'achat sans émettre une autre licence. |
Les instantanés contiennent la version de l'achat, son état et ses dates de validité absolues ; valid_until=null indique un achat perpétuel. Un achat de base peut subsister après un remboursement : recalculez les droits à partir de l'instantané complet.
{
"schema": "launch-external-licensing-v1",
"event_id": "7bf84b91-2749-4b01-a6a7-bd527c488ee8",
"connection_ref": "merchant-01-sandbox",
"environment": "sandbox",
"type": "entitlement.snapshot",
"change_reason": "purchase",
"account_ref": "customer_opaque_001",
"entitlement_ref": "purchase_opaque_001",
"launch_product_id": "c6dd463e-50f7-4b76-8239-0a8ec6fc304b",
"launch_plan_version_id": "5459a073-9362-4b46-949d-9b0c5d84421a",
"product_ref": "desktop-editor",
"plan_ref": "professional-yearly-v1",
"version": 1,
"desired_state": "active",
"valid_from": "2026-10-26T00:00:00Z",
"valid_until": "2027-10-26T00:00:00Z"
}Signatures et nouvelles tentatives
Utilisez une clé HMAC-SHA256 distincte d'au moins 32 octets aléatoires par connexion. Chaque requête contient l'identifiant de clé, un horodatage Unix en secondes, un nonce aléatoire et une signature. Vérifiez la signature, une fenêtre de 300 secondes et la protection contre la réutilisation du nonce.
v1
<key_id>
<timestamp>
<nonce>
<UPPERCASE HTTP METHOD>
<encoded full path and raw query>
<lowercase SHA-256 of the exact request body>N'ajoutez pas de saut de ligne final aux données signées. X-Launch-Signature contient v1= puis la signature base64url sans remplissage. Le corps des requêtes GET est vide.
Les nouvelles tentatives conservent l'identifiant d'événement et le corps exact, avec un nouveau nonce. Après un délai dépassé, consultez l'événement initial. Une ancienne version ne doit pas remplacer une nouvelle ; 202 ne confirme pas la fin de l'attribution de licence.
Interfaces d'administration et client de Launch
Ces interfaces se trouvent sur le site Launch du marchand. Les administrateurs utilisent une session web et X-CSRF-Token. Les clients ne peuvent lire que leurs propres achats actuellement valides.
PUT /api/v1/admin/licensing/provider | {"provider":"custom_http"} |
GET/POST /api/v1/admin/licensing/connections | GET/POST |
PUT /api/v1/admin/licensing/connections/{id} | POST /api/v1/admin/licensing/connections/{id}/check |
PUT /api/v1/admin/products/{id}/licensing | environment + connection_id + mappings |
GET /api/v1/me/products/{id}/delivery?environment=sandbox | pending / ready / unavailable |
La livraison peut contenir une clé de licence, un lien d'activation HTTPS ou des instructions en texte brut. La synchronisation réussie ne remplace pas les contrôles d'autorisation du client à l'exécution.
Protocole complet et exemples · Télécharger OpenAPI · Exemple de récepteur Python