Interspire Shopping Cart (specialmente per Google Checkout) integration
Un software di carrello degli acquisti ricco di funzionalità che include tutto il necessario per avviare, eseguire e promuovere il tuo negozio online.
Questo metodo di integrazione ti aiuterà a integrare Post Affiliate Pro con Interspire Shopping Cart 6.0+ nel caso in cui i clienti non vengono riportati sulla pagina di ringraziamento di Interspire dopo il pagamento con Google Checkout.
A cosa serve questo script?
Questo setup è stato creato per tracciare i prodotti ordinati in InterspireShopping Cart e pagati con Google Checkout. Questo script può pubblicare ogni prodotto diverso ordinato come una vendita separata a PAP4 oppure può pubblicare l’intero carrello come una vendita unica. Viene utilizzato per il tracciamento delle vendite di PAP e per il tracciamento delle API.
Aggiungi il campo visitorId nel modello ProductAddToCart
Modifica il file /templates/__master/Snippets/ProductAddToCart.html (se l’hai cambiato nel tuo modello è nella directory: /templates/[used template]/Snippets/)
Aggiungi questa riga nel modulo:
<input value="" name="product-private-data" type="hidden" id="pap_dx8vc2s5">
dopo la riga:
<input type="hidden" name="currency_id" value="" />
e dopo la fine del tag del modulo “” aggiungi:
<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/notifysale.php" type="text/javascript">
</script>
Il codice qui sotto mostra l’intero file ProductAddToCart.html dopo le modifiche:
%%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 (specialmente per 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%%
Aggiungi il parametro visitorId nei link Add To Cart
Modifica tutti i file del modello in cui è usato il link “aggiungi al carrello”. Aggiungi l’attributo id=”affCookieLinkId” nel tag <a> in <div class=”ProductActionAdd”>.
E in click tracking code aggiungi:
PostAffTracker.writeCookieToLink('affCookieLinkId', 'product-private-data');
dopo la linea:
PostAffTracker.track();
Ecco qui sotto il codice dopo le modifiche:
<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
<a href="%%GLOBAL_ProductURL%%" id="affCookieLinkId">%%GLOBAL_ProductAddText%%</a>
</div>
Elenco dei file che devi modificare nella 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
Modifica il file class.cart.api.php
Modifica il file /includes/classes/class.cart.api.php.
Trova la linea:
public function AddItem
e aggiungi alla fine dei parametri un nuovo parametro $productPrivateData=null.
Ecco come dovrebbe essere:
public function AddItem($productId, $quantity=1, $variationDetails=null, $configurableOptions=array(), $cartItemId=null, $options=array(), $parentId=null, $reorder=false, $productPrivateData=null)
Poi trova l’array cartProduct (linea 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,
);
aggiungi qui:
product_private_data' => $productPrivateData
Ecco come dovrebbe essere:
$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
);
Modifica il file class.cart.php
Modifica il file /includes/classes/class.cart.php.
Trova la linea:
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false);
cambiala in questo modo:
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false, $productPrivateData);
E aggiungi questo all’inizio:
$productPrivateData = '';
if(isset($_REQUEST['product-private-data'])) {
$productPrivateData = $_REQUEST['product-private-data'];
}
Ecco come dovrebbe essere dopo le modifiche:
...
...
$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) {
...
...
Aggiungi il codice di monitoraggio della vendita nel file class.handler.php nel metodo googlecheckout
Modifica il file /modules/checkout/googlecheckout/class.handler.php.
Trova questo codice intorno alla linea 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;
}
e aggiungici il codice qui sotto:
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++;
}
Questo metodo di monitoraggio sta usando l’API di PAP. Pertanto è necessario avere il file PapApi.class.php nella directory /modules/checkout/googlecheckout/.
(Puoi scaricarlo dal tuo merchant panel > avvia > strumenti > integrazione > integrazione api > Scarica API di PAP).