Jump to content

[Résolu] Ajout automatique d'un produit dans le panier


Recommended Posts

Bonjour,

Dans le cadre du développement d'un site n'ayant qu'un seul produit, je souhaiterais créer un script permettant de faire un ajout automatique du produit dans le panier.

Le processus se ferait ainsi :

1) Clic d'un lien dans le menu principal (Ex: Commandez le produit)
2) Création panier + ajout du produit
3) Redirection automatique vers la page "commande rapide" ou il rentre ses informations (Nom, prénom, adresse...)


J'ai essayé via les webservices avec le code suivant :
 


<?php

define('DEBUG', true);

define('PS_SHOP_PATH', 'xxx');

define('PS_WS_AUTH_KEY', 'xxx');

require_once($_SERVER['DOCUMENT_ROOT'].'/_pn/PSWebServiceLibrary.php');

$psXML = <<<XML

<prestashop>

<cart>

<id/>

<id_address_delivery>0</id_address_delivery>

<id_address_invoice>0</id_address_invoice>

<id_currency>2</id_currency>

<id_customer>0</id_customer>

<id_guest>0</id_guest>

<id_lang>5</id_lang>

<id_carrier>1</id_carrier>

<recyclable>1</recyclable>

<gift>0</gift>

<gift_message/>

<associations>

<cart_rows>

<cart_row>

<id_product>16</id_product>

<id_product_attribute>0</id_product_attribute>

<quantity>1</quantity>

</cart_row>

</cart_rows>

</associations>

</cart>

</prestashop>

XML;



try {

$webService = new PrestaShopWebservice(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG);

$xml = new SimpleXMLElement($psXML);

$opt = array( 'resource' => 'carts' );

$opt['postXml'] = $xml->asXML();

$xml = $webService->add( $opt );

}

catch (PrestaShopWebserviceException $ex)

{

echo 'Other error: <br />' . $ex->getMessage();

}

?>

Cependant après cela, il n'y a pas de panier créé et je ne sais pas s'il y a une autre étape avec les webservices ou une erreur de ma part.

Merci d'avance.

 

Edited by djidi (see edit history)
Link to comment
Share on other sites

Bonjour,

Je pense qu'il y a beaucoup plus simple.

Le panier est déjà créé de base. Il suffit d'utiliser le même bouton que pour l'ajout au panier d'une fiche produit et rediriger le client à l'étape 2.

A voir avec la fonction add d'ajax-cart.js du module blockcart.

Link to comment
Share on other sites

  • 1 month later...

Salut,

 

Merci à Webpulser pour la réponse et les indications de départ, ca m'avait permis de résoudre mon pb.

Voici le code avec en commentaire les modifications à faire.

var quantity		= 1; // Quantité de produits à insérer dans le panier.
var idProduct		= 16; // Changer par l'identifiant du produit.
var idCombination	= 0;

$.ajax({
	type: 'POST',
	headers: { "cache-control": "no-cache" },
	url: baseUri + '?rand=' + new Date().getTime(),
	async: true,
	cache: false,
	dataType : "json",
	data: 'controller=cart&add=1&ajax=true&qty=' + ((quantity && quantity != null) ? quantity : '1') + '&id_product=' + idProduct + '&token=' + static_token + ( (parseInt(idCombination) && idCombination != null) ? '&ipa=' + parseInt(idCombination): ''),
	success: function(jsonData,textStatus,jqXHR) {
		// Action à effectuer une fois le produit ajouté.
	},
	error: function(XMLHttpRequest, textStatus, errorThrown) {}
});
Edited by djidi (see edit history)
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...