Jump to content

Ajouter un produit dans un panier d'une boutique en particulier ( par le code )


Recommended Posts

Bonjour à tous,

 

J'ai besoin d'aide pour un problème sur Prestashop 1.6

 

Configuration:

 

 Multi boutique

 API mobile 

 

J'ai créer une api mobile pour une boutique, avec Prestashop 1.6

 

Elle me permets de :

  Naviguer dans les catégories

  Naviguer dans les produits

  Rechercher des produits

  Ajouter au panier (avec vérifications)

  Retirer un produit du panier

  Commander

  Changer de boutique

  Se connecter (avec jeton de sécurité en plus du token de Prestashop )

  ++

 

Le problème que j'ai c'est que, lorsque mon application qui utilise l'API change de la boutique 1 à la boutique 4, et que je demande l'ajout d'un produit au panier de la boutique courante soit la 4, il est toujours ajouté au panier de la boutique 1.

 

NB:

* Première connexion sur la boutique 1

* Pas de déconnexion au changement de boutique.

 

voici comment j'ajoute au panier

$_shop = new Shop(_PS_SHOP_SELECTED_ID); //_PS_SHOP_SELECTED_ID = 4
$isAdded = $cart->updateQty((int)$product->quantity, (int)$producToAdd->id, $id_product_attribute, FALSE, 'up', 0,$_shop);

Voici comment je récupère mon panier ou créer

	
$context = Context::getContext(); 
if (!$context->cart->id) { 
  $context->cart->add(TRUE, FALSE, TRUE,_PS_SHOP_SELECTED_ID);
  $context->cookie->id_cart = $context->cart->id;
  $cart = new Cart($context->cart->id); 
  $cart->id_customer = (int)UserApi::getIdAuthUser();
  $cart->id_lang = _PS_APP_MOBILE_LANG_ID; 
  $cart->id_currency = (int)Context::getContext()->currency->id;
  $cart->id_carrier = 1; $cart->recyclable = 0; $cart->gift = 0; 
} 

$cart = new Cart($context->cart->id); 

Je remercie d'avance toute personne pour son aide.

  

Link to comment
Share on other sites

Merci à tous ceux qui m'ont apporté leur aide.

 

J'ai finalement trouvé un moyen propre et facile de changer la boutique dans mon contexte.

Après des heures de recherches dans le code Prestashop, j'ai trouvé que le shop du contexte est défini dans config.inc.php

Mais la valeur est retournée par La classe Search de Prestashop.

 

Donc pour changer de façon sécurisée votre shop dans le contexte, il faut faire un override de la classe Shop:

 

Shop::initialize();

 

Car par défaut il se base soit sur l'identifiant de la boutique en paramètre de la requête (id_shop) ou sur l'url si rien de trouvé,

il affecte la boutique par défaut.
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...