# Guide de dépannage - Erreur de Nonce

## Problème rencontré

```json
{
  "code": "woocommerce_rest_missing_nonce",
  "message": "Il manque l'en-tête Nonce. Ce point de terminaison requiert un nonce valide.",
  "data": {
    "status": 401
  }
}
```

## Cause du problème

Cette erreur se produisait lors de l'ajout de produits au panier/devis. Le problème était lié à :

1. **Mauvaise URL AJAX** : Le code utilisait `wc_add_to_cart_params.wc_ajax_url` qui nécessite un nonce spécifique
2. **Absence de handler côté serveur** : Pas de fonction PHP pour intercepter l'action AJAX
3. **Dépendances manquantes** : Les scripts WooCommerce nécessaires n'étaient pas chargés correctement

## Solution apportée (v2.1.1)

### 1. Handler AJAX côté serveur
Ajout d'une fonction `ajax_add_to_cart()` dans `class-shop-display.php` qui :
- Intercepte l'action `woocommerce_add_to_cart`
- Valide les données (product_id, quantity)
- Ajoute le produit au panier avec les données personnalisées
- Retourne les fragments du panier pour la mise à jour en temps réel

### 2. Chargement des dépendances WooCommerce
Dans `enqueue_assets()` :
```php
wp_enqueue_script('wc-add-to-cart');
wp_enqueue_script('wc-cart-fragments');
```

### 3. Utilisation de l'URL AJAX WordPress standard
Le JavaScript utilise maintenant `YPW.ajax_url` qui pointe vers `admin-ajax.php` :
```javascript
$.ajax({
    url: YPW.ajax_url,
    type: 'POST',
    data: {
        action: 'woocommerce_add_to_cart',
        product_id: productId,
        quantity: quantity
    }
});
```

### 4. Gestion des fragments du panier
Le code met à jour correctement le mini-panier après ajout :
```javascript
if (response.fragments) {
    $.each(response.fragments, function(key, value) {
        $(key).replaceWith(value);
    });
}
```

## Fichiers modifiés

1. **yacht-provisioning-woo.php** : Version mise à jour à 2.1.1
2. **includes/class-shop-display.php** :
   - Ajout du handler AJAX `ajax_add_to_cart()`
   - Amélioration de `enqueue_assets()`
   - Ajout des hooks AJAX
3. **assets/js/shop.js** :
   - Utilisation de `YPW.ajax_url` au lieu de `wc_add_to_cart_params`
   - Meilleure gestion des fragments du panier
4. **CHANGELOG.md** : Documentation de la correction

## Installation de la version corrigée

1. **Désactiver** l'ancienne version du plugin
2. **Supprimer** l'ancienne version
3. **Télécharger** `yacht-provisioning-woo-v2.1.1.zip`
4. **Installer** et **activer** la nouvelle version
5. **Tester** l'ajout de produits au devis

## Test de validation

Pour vérifier que tout fonctionne :

1. Allez sur la page boutique
2. Ouvrez une catégorie
3. Saisissez une quantité pour un produit
4. Cliquez sur "Ajouter"
5. Vérifiez que :
   - Le produit est ajouté au panier
   - Le mini-panier se met à jour
   - Un message de succès s'affiche
   - Aucune erreur dans la console du navigateur

## Si le problème persiste

1. **Vider le cache** du navigateur
2. **Vider le cache** WordPress (si vous utilisez un plugin de cache)
3. **Vérifier la console** du navigateur (F12) pour d'autres erreurs
4. **Vérifier les logs** PHP pour d'éventuelles erreurs serveur
5. **Désactiver temporairement** les autres plugins pour vérifier les conflits

## Support

Si vous rencontrez toujours des problèmes après avoir installé la version 2.1.1, contactez le support technique.
