Validation des commandes

La création de produits Snipcart se résume à ajouter un bouton à votre site et à le définir avec des attributs data.

Vous vous demandez peut-être :

"Que se passe-t-il si je modifie les informations sur les produits avec les outils de développement de mon navigateur? Je pourrai trafiquer le prix et passer des commandes frauduleuses."

Notre processus de validation des commandes est la façon dont nous garantissons l'intégrité de la commande tout au long du processus de paiement.

Order validation flowchart

Attribut data-item-url du produit

Lors de la configuration d'un produit, il y a un attribut obligatoire appelé data-item-url.

Avant de compléter une commande, Snipcart fait une requête HTTP à la valeur spécifiée dans cet attribut. Nous nous assurons que le prix et les autres informations importantes n'ont pas été modifiés par les outils de développement des navigateurs.

Vous pouvez en savoir plus à ce sujet dans l'entrée sur la sécurité.

L'URL spécifiée doit être celle où le bouton d'achat Snipcart pour le produit est disponible.

Avis important : Pour les utilisateurs ayant un site web monopage, le champ data-item-url doit uniquement être rempli avec votre nom de domaine racine, tel que www.exemple.com, ou avec une simple barre oblique /.

Domaines autorisés

Avant de commencer à vendre, vous devez autoriser les domaines et sous-domaines où Snipcart peut explorer vos produits. Dans votre tableau de bord, sous Store configurations → Domains & URLs, vous pouvez définir votre nom de domaine par défaut ainsi que les domaines et sous-domaines supplémentaires autorisés.

Par exemple, si la valeur de data-item-url est http://test.monsite.com/produits/1 et votre domaine par défaut est monsite.com, notre validation échouera. Vous devez ajouter test.monsite.com dans les sous-domaines autorisés pour que cela fonctionne.

Si vous le souhaitez, vous pouvez également utiliser une URL relative (/produits/1). Mais nous ne validons le produit que dans votre domaine par défaut. Ainsi, dans l'exemple ci-dessus, si la valeur de data-item-url était /produits/1, nous ferions la requête HTTP pour valider les informations à http://monsite.com/produits/1.

Pour spécifier une URL relative, la valeur de data-item-url doit commencer par un /.

Indexeur JSON

Lorsque Snipcart valide l'intégrité d'une commande, il utilise la valeur spécifiée dans l'attribut data-item-url de chaque produit.

La plupart du temps, la valeur spécifiée pour cet attribut sera l'URL unique où vous vendez l'article. Cependant, les sites des commerçants peuvent parfois exiger des scénarios de validation plus complexes.

Si c'est votre cas, il existe une alternative à notre indexeur HTML par défaut : notre indexeur JSON.

Lorsque Snipcart fait la requête à l'URL, si l'en-tête Content-Type de votre réponse est application/json, nous utiliserons notre validateur JSON au lieu du validateur HTML.

Vous devez nous retourner un JSON ayant les propriétés suivantes.

{
  "id": "20",
  "price": 50.00,
  "url": "https://snipcart.com/products/1.json"
}

Les champs id, price et url sont obligatoires et doivent être les mêmes que ceux que vous avez spécifiés dans la définition du produit dans votre HTML.

Notez que l'objet retourné peut contenir d'autres propriétés, mais seules celles qui affectent le prix de vos produits seront prises en compte.

Si vous utilisez notre fonctionnalité multidevise, la propriété price peut être un hash avec plusieurs devises.

{
  "id": "20",
  "price": {
    "usd": "30",
    "cad": "35"
  },
  "url": "/"
}

Vous pouvez également retourner un array contenant plusieurs objets comme défini ci-dessus.

[
  {
    "id": "20",
    "price": 50.00,
    "url": "https://snipcart.com/products.json"
  },
  {
    "id": "21",
    "price": 100.00,
    "url": "https://snipcart.com/products.json"
  }
]

Cela peut être utile lorsque votre site web est piloté par un API et utilise un framework monopage tel que React ou Vue.

Récupérer des produits à partir d'un document JSON

À partir de notre tableau de bord, vous pouvez récupérer des produits si vous avez besoin de définir un stock d'inventaire, par exemple. Si vous utilisez notre validateur JSON, vous pouvez également utiliser vos documents JSON pour récupérer les produits.

Le document peut être un fichier JSON contenant tous vos produits dans un tableau ou un produit individuellement.

L'exemple suivant représente un seul produit qui peut être récupéré. Veuillez noter que cet exemple définit également des niveaux de stock par défaut.

{
  "id": "JSON_PRODUCT",
  "name":  "JSON Product",
  "url": "/products.json",
  "price": 20.00,
  "image": "http://placehold.it/300x300",
  "inventoryManagementMethod":  "Variant",
  "dimensions": {
    "weight": 300,
    "width": 20,
    "height": 10,
    "length": 30
  },
  "variants": [
    {
      "variation": [
        {
          "name": "Color",
          "option": "Red"
        },
        {
          "name": "Size",
          "option": "Small"
        }
      ],
      "stock": 10,
      "allowOutOfStockPurchases":  true
    }
  ],
  "categories": ["category1", "category2"],
  "customFields": [
    {
      "name": "Size",
      "options": "Small|Medium|Large",
      "type": "dropdown"
    },
    {
      "name": "Color",
      "options": "Red|Blue|Green",
      "type": "dropdown"
    }
  ]
}

Valider la requête

Veuillez vous référer à cette entrée pour apprendre comment sécuriser tous les points de terminaison qui traitent les requêtes de Snipcart.