Aller au contenu principal
← Retour à CutOptim ConfiguratorPlateforme sur mesure

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.

ÉtapeCe qui arriveCe que vérifie votre serveur
Le client commande sur la pageL’é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éeUn webhook signé à l’adresse que vous avez enregistréeLa signature, la fenêtre de cinq minutes et l’identifiant de l’événement
Une nouvelle tentative ou un renvoiLe même événement à nouveauRien : 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.

  1. Recevoir la commande

    La page transmet à votre script l’événement cutoptim:order avec la commande et son jeton de devis.

  2. 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.

  3. 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é.

  4. 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.

Code de référence : vérifier un webhook (Node)
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 ?
Non. Une plateforme sur mesure a besoin de deux vérifications sur son serveur, le devis signé et le webhook signé, et les exemples Node et PHP montrent les deux.
Comment savoir qu’un prix n’a pas été modifié dans le navigateur ?
Votre serveur envoie le jeton de devis à /cfg/v1/quote/verify avec votre clé secrète et compare ses déclarations avec la ligne du panier. Un jeton modifié ou expiré est signalé comme non valide. Un jeton qu’une commande a déjà utilisé reste valide mais revient avec redeemed: true : vérifiez les deux champs et tenez votre propre registre.
Que se passe-t-il si mon point de terminaison est indisponible quand une commande arrive ?
CutOptim réessaie la livraison selon un calendrier croissant, jusqu’à six tentatives sur plusieurs heures. Chaque nouvelle tentative porte le même identifiant d’événement : un récepteur qui enregistre les identifiants traite la commande une seule fois.
CutOptim encaisse-t-il le paiement ou héberge-t-il ma boutique ?
Non. Le configurateur chiffre et planifie la découpe, puis remet la commande signée à votre plateforme. Le panier, le paiement et l’exécution restent dans votre propre système.
Quels langages de programmation les exemples couvrent-ils ?
Node et PHP. La signature est du simple HMAC-SHA256 sur le corps brut : les mêmes lignes fonctionnent en Python, Java, C# ou tout autre langage avec une bibliothèque de chiffrement.

Calculateurs, guides et métiers liés

En savoir plus sur le configurateur

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)