Intégrer les commandes de découpe à votre propre boutique ou ERP
Le CutOptim Configurator se relie à une boutique ou à un ERP développé sur mesure par deux vérifications sur votre serveur : le devis signé et le webhook signé. Les deux sont du simple HMAC-SHA256, vérifiable dans n’importe quel langage, et des exemples de référence en Node et PHP montrent comment.
En bref
Pour recevoir les commandes du configurateur dans votre propre plateforme, votre serveur fait deux choses. Il vérifie le devis signé avant qu’une ligne n’entre dans le panier, et il vérifie le webhook signé avant d’enregistrer une commande. CutOptim n’encaisse aucun paiement et n’héberge aucune boutique : le panier, le paiement et la fiche de commande restent chez vous.
Deux vérifications, toutes deux sur votre serveur
Une plateforme sur mesure n’a pas de plug-in sur lequel s’appuyer, la confiance repose donc sur deux signatures. Le navigateur peut afficher un prix, mais seul votre serveur décide de le croire.
| Étape | Ce qui arrive | Ce que vérifie votre serveur |
|---|---|---|
| Le client commande sur la page | L’événement cutoptim:order avec la commande et son devis signé | Le jeton de devis, avec votre clé secrète sur /cfg/v1/quote/verify |
| La commande est passée | Un webhook signé à l’adresse que vous avez enregistrée | La signature, la fenêtre de cinq minutes et l’identifiant de l’événement |
| Une nouvelle tentative ou un renvoi | Le même événement à nouveau | Rien : l’identifiant est déjà enregistré |
Vérifier le devis avant le panier
Le jeton de devis est la promesse de prix. Votre serveur demande à CutOptim s’il est authentique, non expiré et pas encore utilisé, puis compare ce qu’il déclare avec la ligne du panier.
Recevoir la commande
La page transmet à votre script l’événement cutoptim:order avec la commande et son jeton de devis.
Interroger CutOptim
Votre serveur envoie le jeton à /cfg/v1/quote/verify avec votre clé secrète. La réponse indique s’il est valide, si une commande l’a déjà utilisé et quelles déclarations il porte.
Comparer les déclarations
Le locataire, la devise, l’expiration et l’empreinte des lignes chiffrées doivent correspondre à la ligne que vous allez ajouter. Tout le reste est refusé.
Ajouter ou refuser
Seul un jeton qui passe arrive dans le panier. Un prix modifié dans le navigateur échoue ici.
La clé de signature n’est jamais remise aux boutiques. Contrôler localement la forme et l’expiration d’un jeton évite un aller-retour, mais seul /cfg/v1/quote/verify peut confirmer la signature.
Recevoir la commande par webhook
Quand une commande est passée, CutOptim l’envoie à l’adresse que vous avez enregistrée, signée pour que vous puissiez savoir qu’elle vient de nous.
- — L’en-tête CutOptim-Signature porte un horodatage t et une signature v1 : un HMAC-SHA256 de l’horodatage, d’un point et du corps brut.
- — Vérifiez les octets bruts exactement comme reçus ; un corps analysé puis réécrit ne correspond plus.
- — Refusez un horodatage à plus de cinq minutes d’écart et comparez les signatures en temps constant.
- — Enregistrez l’identifiant de l’événement et répondez par un succès pour un identifiant déjà vu : une nouvelle tentative le répète.
Code de référence en Node et en PHP
Deux petits exemples font exactement cela, sans framework ni dépendance : un module Node et un seul fichier PHP. Copiez celui qui convient, remplacez le stockage en mémoire par une table à clé unique sur l’identifiant de l’événement.
import { createWebhookReceiver } from './cutoptim-verify.mjs';
const receive = createWebhookReceiver({
secrets: [process.env.WEBHOOK_SECRET], // whsec_... from the admin route, never in the repository
async onEvent(event) { /* store event.data.order, keyed by event.id */ },
});
// in your HTTP handler - the RAW body, not parsed JSON:
const { status } = await receive({ rawBody, headers: req.headers });
res.writeHead(status).end();Ce qui reste chez vous
Le configurateur chiffre et planifie la découpe ; votre plateforme garde tout ce qui vient après.
- — Le panier, la caisse et le paiement : CutOptim n’encaisse aucun paiement.
- — La fiche de commande et son exécution, dans votre base de données ou votre ERP.
- — Vos clients et les pages de votre boutique : il n’y a pas de boutique hébergée.
Démarrez un bac à sable gratuit dans la console pour obtenir vos clés et votre secret de webhook. Exemples de référence à télécharger ici.
Où cela s’intègre
Tout système capable de recevoir une requête HTTPS et de calculer un HMAC peut prendre ces commandes : boutique développée en interne, vitrine headless, outil de devis ou ERP. Pour le seul moteur de découpe, sans écran de commande, l’Engine API s’en charge.
Questions fréquentes
Faut-il un plug-in pour relier ma propre plateforme ?
Comment savoir qu’un prix n’a pas été modifié dans le navigateur ?
Que se passe-t-il si mon point de terminaison est indisponible quand une commande arrive ?
CutOptim encaisse-t-il le paiement ou héberge-t-il ma boutique ?
Quels langages de programmation les exemples couvrent-ils ?
Calculateurs, guides et métiers liés
En savoir plus sur le configurateur
Le configurateur de découpe sur mesure pour votre boutique en ligne : plan de coupe et prix en direct, commandes directement dans votre boutique.
Saisissez des pièces dans une boutique de démonstration et regardez le plan de coupe et le prix évoluer à chaque saisie.
Une ligne de code ; dans la page, en fenêtre contextuelle, en panneau latéral ou sur sa propre page, à votre image.
Au panneau, au m², au mètre de coupe, chant, usinages, TVA et minimums : vos tarifs, en direct.
Partez d’un caisson, d’une étagère ou d’un dressing : les pièces, le plan et le prix suivent les dimensions.
Négociants en panneaux, ateliers de découpe et boutiques de plaques : les clients commandent en ligne, avec un plan en direct et vos prix.
Un bouton de découpe sur mesure sur vos produits WooCommerce ; seul un devis vérifié devient une ligne de panier.
Les vérifications côté serveur pour une boutique ou un ERP sans plug-in.
Vous n’avez besoin que du moteur de découpe ? Voir l’Engine API
Mentions légalesConditions du configurateur (EN) ·Accord de traitement des données (EN) ·Notice de confidentialité pour les acheteurs ·Licences tierces (EN)