Interspire Shopping Cart (especialmente para Google Checkout) integration
Un software de carrito de compras rico en funciones que incluye todo lo que necesitas para iniciar, ejecutar y promocionar tu tienda en línea.
Este método de integración te ayudará a integrar Post Affiliate Pro con Interspire Shopping Cart 6.0+ en caso de que los clientes no regresen a la página de agradecimiento de Interspire después del pago con Google Checkout.
¿Para qué es este script?
Esta configuración se creó para realizar un seguimiento de los productos pedidos en InterspireShopping Cart y pagados con Google Checkout. Lo que hace este script es que publica cada producto diferente pedido como una venta separada en PAP4 o el carrito completo como una venta única. Se utiliza el seguimiento de ventas PAP API.
Agregar el campo de visitanteId a la plantilla ProductAddToCart
Edita el archivo /templates/__master/Snippets/ProductAddToCart.html (si lo has cambiado en tu propia plantilla, está en el directorio: / templates / [used template] / Snippets / )
Agrega esta fila en el formulario:
<input value="" name="product-private-data" type="hidden" id="pap_dx8vc2s5">
después de la fila:
<input type="hidden" name="currency_id" value="" />
y después de la etiqueta de fin de formulario “” agrega:
<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/notifysale.php" type="text/javascript">
</script>
El código siguiente muestra el archivo ProductAddToCart.html completo después de los cambios:
%%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 (especialmente para 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%%
Agregar el parámetro de visitanteId en los enlaces Agregar al carrito
Edita todos los archivos de plantilla donde se usa el enlace Agregar al carrito. Añade el atributo id=”affCookieLinkId” en la etiqueta <a> en <div class=”ProductActionAdd” & gt ;.
Y en el código de seguimiento de clics agrega:
PostAffTracker.writeCookieToLink('affCookieLinkId', 'product-private-data');
después de la línea:
PostAffTracker.track();
El siguiente código muestra que después de los cambios:
<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
<a href="%%GLOBAL_ProductURL%%" id="affCookieLinkId">%%GLOBAL_ProductAddText%%</a>
</div>
Lista de archivos que debes editar en directorio / 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
Edit file class.cart.api.php
Edita el archivo /includes/classes/class.cart.api.php .
Busca línea:
public function AddItem
y agrega al final de los parámetros el nuevo parámetro $productPrivateData=null .
Se verá así:
public function AddItem($productId, $quantity=1, $variationDetails=null, $configurableOptions=array(), $cartItemId=null, $options=array(), $parentId=null, $reorder=false, $productPrivateData=null)
Después buscar cartProduct array (línea 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,
);
añade ahí:
product_private_data' => $productPrivateData
se verá así:
$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
);
Editar archivo class.cart.php
Edita archivo /includes/classes/class.cart.php.
Busca línea:
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false);
cámbiala como:
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false, $productPrivateData);
Y agrega esto antes:
$productPrivateData = '';
if(isset($_REQUEST['product-private-data'])) {
$productPrivateData = $_REQUEST['product-private-data'];
}
Se ocupará de los cambios:
...
...
$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) {
...
...
Agrega el código de seguimiento de la venta en el archivo class.handler.php en el método googlecheckout
Edita archivo /modules/checkout/googlecheckout/class.handler.php.
Encuentra este código alrededor de la línea 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;
}
agrega el siguiente código justo debajo:
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++;
}
Este método de seguimiento utiliza la API PAP. Por lo tanto, debes tener tu archivo PapApi.class.php real en el directorio /modules/checkout/googlecheckout / .
(Puedes descargarlo desde tu panel de comerciantes > inicio > herramientas > integración > integración de api > Descargar API de PAP).