Interspire Shopping Cart (szczególnie dla Google Checkout) integration
Bogate w funkcje oprogramowanie dla Twojego koszyka zakupowego, które zawiera wszystko, czego potrzebujesz, aby rozpocząć, uruchomić i promować swój sklep internetowy.
Ta metoda integracji pomoże Ci zintegrować Post Affiliate Pro z Interspire Shopping Cart 6.0+ w przypadku, gdy klienci nie powracają na stronę z podziękowaniami od Interspire po dokonaniu płatności za pomocą Google Checkout.
Do czego służy ten skrypt?
Ta konfiguracja została stworzona do śledzenia produktów zamówionych w InterspireShopping Cart i zapłaconych za pomocą Google Checkout. Ten skrypt umieszcza każdy inny zamówiony produkt jako oddzielną sprzedaż do PAP4 lub traktuje cały koszyk jako jedną sprzedaż. Do śledzenia sprzedaży używane jest API od PAP.
Dodanie pola visitorId do szablonu ProductAddToCart
Edytuj plik /templates/__master/Snippets/ProductAddToCart.html
(jeśli zmieniłeś go we własnym szablonie, znajduje się on w katalogu: /templates/[used template]/Snippets/)
Dodaj ten wiersz do formularza:
<input value="" name="product-private-data" type="hidden" id="pap_dx8vc2s5">
po nim:
<input type="hidden" name="currency_id" value="" />
i po zakończeniu tagu formularza “” dodaj:
<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/notifysale.php" type="text/javascript">
</script>
Poniższy kod pokazuje cały plik ProductAddToCart.html po zmianach:
%%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 (szczególnie dla 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%%
Dodawanie parametru visitorId do linków Add To Cart
Edytuj wszystkie pliki szablonów, w których użyty jest link add to cart. Dodaj atrybut id=”affCookieLinkId” do tagu <a> w <div class=”ProductActionAdd”>.
I do kodu śledzenia kliknięć dodaj:
PostAffTracker.writeCookieToLink('affCookieLinkId', 'product-private-data');
po tym:
PostAffTracker.track();
Poniższy kod pokazuje, że po zmianach:
<div class="ProductActionAdd" style="display:%%GLOBAL_HideActionAdd%%;">
<a href="%%GLOBAL_ProductURL%%" id="affCookieLinkId">%%GLOBAL_ProductAddText%%</a>
</div>
Lista plików, które należy edytować w katalogu /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
Edytuj plik /includes/classes/class.cart.api.php.
Znajdź wiersz:
public function AddItem
i dodaj na końcu parametrów nowy parametr $productPrivateData=null.
Będzie to wyglądało tak:
public function AddItem($productId, $quantity=1, $variationDetails=null, $configurableOptions=array(), $cartItemId=null, $options=array(), $parentId=null, $reorder=false, $productPrivateData=null)
Następnie znajdź tablicę cartProduct (wiersz 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,
);
dodaj tam
product_private_data' => $productPrivateData
będzie to wyglądało tak
$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
);
Edytuj plik class.cart.php
Edytuj plik /includes/classes/class.cart.php.
Znajdź wiersz:
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false);
zmień go:
$cartItemId = $this->api->AddItem($product_id, $qty, $variation, $configurableFields, null, $options, null, false, $productPrivateData);
I dodaj to przed nim:
$productPrivateData = '';
if(isset($_REQUEST['product-private-data'])) {
$productPrivateData = $_REQUEST['product-private-data'];
}
Po zmianach będzie wyglądał tak:
...
...
$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) {
...
...
Dodaj kod śledzenia sprzedaży do pliku class.handler.php w metodzie googlecheckout
Edytuj plik /modules/checkout/googlecheckout/class.handler.php.
Znajdź ten kod w okolicach wierszu 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;
}
dodaj kolejny kod tuż poniżej:
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++;
}
Ta metoda śledzenia używa PAP API. Dlatego musisz mieć swój rzeczywisty plik PapApi.class.php w katalogu /modules/checkout/googlecheckout/.
(Możesz go pobrać ze swojego panelu sprzedawcy > start > narzędzia > integracja > integracja api > pobierz API PAP).