Interspire Shopping Cart (en particulier pour Google Checkout) integration
Un logiciel de panier d’achat riche en fonctionnalités qui comprend tout ce dont vous avez besoin pour lancer, gérer et promouvoir votre boutique en ligne.
Cette méthode d’intégration vous aidera à intégrer Post Affiliate Pro avec Interspire Shopping Cart 6.0+ dans le cas où les clients ne sont pas renvoyés sur la page de remerciement d’Interspire après un paiement avec Google Checkout.
A quoi sert ce script ?
Cette configuration a été créée pour suivre les produits commandés dans Interspire Shopping Cart et payés avec Google Checkout. Ce script affiche chaque produit commandé comme une vente distincte dans PAP4 ou dans le panier entier comme une seule vente. Pour le suivi des ventes, on utilise le suivi PAP API.
Ajout du champ visitorId dans le modèle ProductAddToCart
Éditez le fichier /templates/__master/Snippets/ProductAddToCart.html (si vous l’avez modifié dans votre propre modèle, il se trouve dans le répertoire : /templates/[used template]/Snippets/)
Ajoutez cette ligne dans le formulaire :
<input value="" name="product-private-data" type="hidden" id="pap_dx8vc2s5">
après la ligne :
<input type="hidden" name="currency_id" value="" />
et après la balise de fin de formulaire “” ajoutez :
<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/notifysale.php" type="text/javascript">
</script>
Le code ci-dessous montre le fichier ProductAddToCart.html dans son intégralité après les modifications :
%%GLOBAL_AddToCartButtonControlScript%%
<form method="post" action="%%GLOBAL_CartLink%%" onsubmit="return check_add_to_cart(this, %%GLOBAL_ProductOptionRequired%%)" enctype="multipart/form-data">
<input type="hidden" name="action" value="add" />
<input type="hidden" name="product_id" value="%%GLOBAL_ProductId%%" />
<input type="hidden" name="variation_id" class="CartVariationId" value="" />
<input type="hidden" name="currency_id" value="" />
<input value="" name="product-private-data" type="hidden" id="pap_dx8vc2s5">
<div class="ProductDetailsGrid ProductAddToCart">
%%SNIPPET_ProductFieldsList%%
<div class="ProductOptionList">
%%SNIPPET_VariationList%%
</div>
%%SNIPPET_EventDate%%
<div class="DetailRow" style="display: %%GLOBAL_DisplayAdd%%">
<div class="Label QuantityInput" style="display: %%GLOBAL_DisplayAddQty%%">%%LNG_QuantityFull%%:</div>
<div class="Value AddCartButton">
<span class="FloatLeft" style="display: %%GLOBAL_DisplayAddQty%%;">
%%GLOBAL_AddToCartQty%%
</span>
<div class="BulkDiscount">
%%GLOBAL_AddToCartButtonOptimizerScriptTag%%
<input type="image" src="%%GLOBAL_IMG_PATH%%/%%GLOBAL_SiteColor%%/AddCartButton.gif" alt="Interspire Shopping Cart (en particulier pour Google Checkout)"/>
%%GLOBAL_AddToCartButtonOptimizerNoScriptTag%%
<div class="BulkDiscountLink" style="display: %%GLOBAL_HideBulkDiscountLink%%;">
<a href="#" onclick="$.iModal({data: $('#ProductDetailsBulkDiscountThickBox').html(), width: 600}); return false;">
%%LNG_BulkDiscountLink%%
</a>
</div>
</div>
</div>
</div>
</div>
</form>
<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/notifysale.php" type="text/javascript">
</script>
<div class="OutOfStockMessage">
%%SNIPPET_SideAddItemSoldOut%%
</div>
%%GLOBAL_ProductBulkDiscountThickBox%%
<script type="text/javascript">
lang.OptionMessage = "%%GLOBAL_OptionMessage%%";
lang.VariationSoldOutMessage = "%%LNG_VariationSoldOutMessage%%";
lang.InvalidQuantity = "%%LNG_InvalidQuantity%%";
lang.EnterRequiredField = "%%LNG_EnterRequiredField%%";
lang.InvalidFileTypeJS = "%%LNG_InvalidFileTypeJS%%";
var ShowAddToCartQtyBox = "%%GLOBAL_ShowAddToCartQtyBox%%";
</script>
%%GLOBAL_EventDateJavascript%%
Ajout du paramètre visitorId dans les liens Ajout au panier
Modifiez tous les fichiers template où est utilisé le lien d’ajout au panier. Ajoutez l’attribut id=”affCookieLinkId” dans la balise <a> dans <div class=”ProductActionAdd”>
Et dans le code de suivi des clics, ajoutez :
PostAffTracker.writeCookieToLink('affCookieLinkId', 'product-private-data');
après la ligne :
PostAffTracker.track();
Le code ci-dessous illustre les changements effectués :
<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
<a href="%%GLOBAL_ProductURL%%" id="affCookieLinkId">%%GLOBAL_ProductAddText%%</a>
</div>
Liste des fichiers que vous devez éditer dans la section directory /templates/__master/Snippets/:
- BrandProductsItem.html
- CategoryProductsItem.html
- HomeFeaturedProductsItem.html
- HomeNewProductsItem.html
- HomeSaleProductsItem.html
- ProductVendorsOtherProductsItem.html
- SearchResultProductGrid.html
- SideCategoryNewProducts.html
- SideCategoryPopularProducts.html
- SideCategoryTopSellers.html
- SideNewProducts.html
- SideRecentlyViewedProducts.html
- SideTopSellers.html
- SideTopSellersFirst.html
- TagProductsItem.html
- VendorFeaturedItemsItem.html
- VendorProductsItem.html
Edition du fichier class.cart.api.php
Editez le fichier/includes/classes/class.cart.api.php.
Recherchez la ligne :
public function AddItem
et ajoutez à la fin des paramètres un nouveau paramètre $productPrivateData=null
Cela ressemblera à :
public function AddItem($productId, $quantity=1, $variationDetails=null, $configurableOptions=array(), $cartItemId=null, $options=array(), $parentId=null, $reorder=false, $productPrivateData=null)
Trouvez ensuite le tableau cartProduct (ligne 1319) :
$cartProduct = array(
'product_id' => $productId,
'variation_id' => $variation,
'options' => $variationOptions,
'quantity' => $quantity,
'product_name' => $product['prodname'],
'product_code' => $productCode,
'product_price' => $productPrice,
'original_price' => $originalPrice,
'default_currency' => $defaultCurrency['currencyid'],
'customer_group' => $customerGroup,
);
ajoutez-y :
product_private_data' => $productPrivateData
cela ressemblera à :
$cartProduct = array(
'product_id' => $productId,
'variation_id' => $variation,
'options' => $variationOptions,
'quantity' => $quantity,
'product_name' => $product['prodname'],
'product_code' => $productCode,
'product_price' => $productPrice,
'original_price' => $originalPrice,
'default_currency' => $defaultCurrency['currencyid'],
'customer_group' => $customerGroup,
'product_private_data' => $productPrivateData
);
Edition du fichier class.cart.php
Éditez le fichier /includes/classes/class.cart.php.
Recherchez la ligne :
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false);
changez-la en :
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false, $productPrivateData);
Et ajoutez ceci avant :
$productPrivateData = '';
if(isset($_REQUEST['product-private-data'])) {
$productPrivateData = $_REQUEST['product-private-data'];
}
Vous obtiendrez ceci après les changements:
...
...
$options['EventName'] = $eventName;
}
$productPrivateData = '';
if(isset($_REQUEST['product-private-data'])) {
$productPrivateData = $_REQUEST['product-private-data'];
}
// Actually add the product to the cart
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false, $productPrivateData);
$this->newCartItem = $cartItemId;
if($cartItemId === false) {
...
...
Ajoutez le code de suivi des ventes dans le fichier class.handler.php dans la méthode googlecheckout
Éditez le fichier /modules/checkout/googlecheckout/class.handler.php
Trouvez ce code autour de la ligne 925 :
if (!$completed) {
$GLOBALS['ISC_CLASS_LOG']->LogSystemError($this->logtype, sprintf(GetLang('GoogleCheckoutCantCompleteOrder'), isc_html_escape($pendingToken), isc_html_escape(var_export($completed, true))));
return;
}
ajoutez le code suivant juste en dessous :
include 'PapApi.class.php';
$saleTracker = new Pap_Api_SaleTracker('URL_TO_PostAffiliatePro/scripts/sale.php');
$prod_count = '1'; // Product Counter
foreach($cartContent[$vendorId][0] as $cartItemId => $product) {
$productid = $product['data']['productid'];
$productPrivateData = $product['product_private_data'];
$price = $product['quantity'] * $product['product_price'];
if (strlen($productPrivateData) == 40) {
$accountId = substr($productPrivateData, 0, 8);
$visitorId = substr($productPrivateData, 8, 32);
} else {
$visitorId = $productPrivateData;
$accountId = 'default1';
}
$saleTracker->setAccountId($accountId);
$saleTracker->setCookieValue($visitorId);
$sale = $saleTracker->createSale();
$sale->setTotalCost($price);
$sale->setOrderID($order['orderid'] . "($prod_count)");
$sale->setProductID($productid);
$saleTracker->register();
$prod_count++;
}
Cette méthode de suivi utilise l’API PAP. Par conséquent, vous devez disposer de votre fichier PapApi.class.php actuel dans le répertoire /modules/checkout/googlecheckout/.
(Vous pouvez le télécharger à partir de votre panneau marchand > démarrer > outils > intégration > intégration api > Télécharger PAP API)