Interspire Shopping Cart integration
Um software de carrinho de compras rico em recursos que inclui tudo o que você precisa para iniciar, executar e promover sua loja online. Este método de integração da By Dustin Holdiman o ajudará a integrar o PAP ao Interspire Shopping Cart 5.0+.
Para que serve este roteiro?
Esta configuração foi criada para rastrear cada produto e quantidade de produtos encomendados no Interspire Shopping Cart. O que esse script faz é postar cada produto encomendado como uma venda separada para o PAP. Dessa forma, se um usuário comprar 3 produtos diferentes e 2 de cada um desses produtos, 6 vendas serão registradas no PAP e você saberá a comissão correta a pagar ao afiliado.
Como configurar o PAP para trabalhar com este script
Primeiro você precisa criar uma campanha para CADA item que deve ter uma comissão diferente. Por exemplo, o Produto A recebe uma comissão de USD 10, o Produto B é USD 12 e o Produto C é USD 8. Vou criar 3 campanhas e para atribuir o ID do produto a cada campanha que for definida pelo Interspire. Por padrão, você pode encontrar essas informações no banco de dados consultando a tabela isc_products e verificando a célula productid. Depois de configurar suas campanhas, é tudo o que você precisa fazer com o PAP para continuar.
Como configurar o Interspire Shopping Cart
Você precisa editar o arquivo class.order.php. Este script é encontrado no diretório de instalação do Interspire em includes/classes/class.order.php. Role o arquivo até a linha 178. Você está procurando o loop foreach que está comentado. Este é o código:
// Include the conversion tracking code for affiliates
foreach ($this->pendingData['orders'] as $order) {
if (strlen(GetConfig('AffiliateConversionTrackingCode')) > 0) {
......
......
}
Substituindo o código (aplica-se à versão 5.x do Interspire Shopping Cart)
Copie todo o loop foreach e substitua ele pelo seguinte código:
//////////////////////////////////////////////////////////////////////////////////////////////////
foreach ($this->pendingData['orders'] as $order) {
if (strlen(GetConfig('AffiliateConversionTrackingCode')) > 0) {
$converted_code = GetConfig('AffiliateConversionTrackingCode');
$converted_code = str_ireplace('%%ORDER_AMOUNT%%', $order['ordsubtotal'], $converted_code);
$converted_code = str_ireplace('%%ORDER_ID%%', $order['orderid'], $converted_code);
//retreive customer id for the particular order in order to take use of Lifetime Commissions
$query_custid = "SELECT ordcustid FROM isc_orders WHERE orderid='".$order['orderid']."'";
$result_custid = mysql_query($query_custid);
$custid = mysql_fetch_row($result_custid);
$customerid = $custid[0];
$query_proid = "SELECT * FROM isc_order_products WHERE orderorderid='".$order['orderid']."'";
$result_proid = mysql_query($query_proid);
$prod_data = '';
// Setup string to look like PRODUCTID:QUANTITY:PRICE,
while ($row_proid = mysql_fetch_array($result_proid)) {
$prodarr[] = $row_proid['ordprodid'].':'.$row_proid['ordprodqty'].':'.$row_proid['ordprodcost'];
}
$java_arr[] = "<script type=\"text/javascript\">
PostAffTracker.setAccountId('Account_ID');"; // Start javascript array
$prod_count = '1'; // Product Counter
// Separate string by ,
foreach ($prodarr as $value) {
// Split apart string by : (PRODUCTID:QUANTITY:PRICE)
$prod_info = explode(":", $value);
// Not needed but here for referance
//$converted_code = str_ireplace('%%PRODUCT_ID'.$prod_count.'%%',$prod_info[0], $converted_code);
//$converted_code = str_ireplace('%%QUANTITY_ID'.$prod_count.'%%',$prod_info[1], $converted_code);
// Create sale code for each product x the quantity ordered
$quantity = $prod_info[1];
while ($quantity >= 1){
$java_string = "
var sale".$prod_count." = PostAffTracker.createSale();
sale".$prod_count.".setTotalCost('".$prod_info[2]."');
sale".$prod_count.".setOrderID('".$order['orderid']."(".$prod_count.")');
sale".$prod_count.".setProductID('".$prod_info[0]."');
sale".$prod_count.".setData1('".$customerid."');";
$java_arr[] = $java_string;
$img_arr[] = '<img src="https://URL_TO_PostAffiliatePro/scripts/sale.php?TotalCost='.$prod_info[2].'&OrderID='.$order['orderid'].'_'.$prod_count.'&ProductID='.$prod_info[0].'" width="1" height="1">';
$prod_count++; // Increase Product Counter by 1
$quantity = $quantity-1;
}
}
// Image Loop - Returns $img as all img src created in foreach loop
$img = implode("", $img_arr);
// Finish off javascript code
$java_arr[] = "
PostAffTracker.register();
</script>";
// Build string from array created in for each loop
$java = implode("", $java_arr);
$converted_code = str_ireplace('%%JAVA%%', $java, $converted_code); // Simply Insert %%JAVA%% into affiliate tracking section of interspire
$converted_code = str_ireplace('%%IMG_CODE%%', $img, $converted_code); // Simply Insert %%IMG_CODE%% into affiliate tracking section of interspire
$GLOBALS['ConversionCode'] .= $converted_code;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// End Edit
}
Agora é só salvar o arquivo.
Substituindo o código (aplica-se à versão 6.x do Interspire Shopping Cart)
Copie todo o loop foreach e substitua ele pelo seguinte código:
//////////////////////////////////////////////////////////////////////////////////////////////////
foreach ($this->pendingData['orders'] as $order) {
if (strlen(GetConfig('AffiliateConversionTrackingCode')) > 0) {
$converted_code = GetConfig('AffiliateConversionTrackingCode');
$converted_code = str_ireplace('%%ORDER_AMOUNT%%', $order['ordsubtotal'], $converted_code);
$converted_code = str_ireplace('%%ORDER_ID%%', $order['orderid'], $converted_code);
//retreive customer id for the particular order in order to take use of Lifetime Commissions
$query_custid = "SELECT ordcustid FROM ".$GLOBALS['ISC_CFG']["tablePrefix"]."orders WHERE orderid='".$order['orderid']."'";
$result_custid = mysql_query($query_custid);
$custid = mysql_fetch_row($result_custid);
$customerid = $custid[0];
//check if there was a coupon used and get it's code
$query_coupon = 'SELECT ordcouponcode FROM '.$GLOBALS['ISC_CFG']['tablePrefix']."order_coupons WHERE ordcouporderid='".$order['orderid']."'";
$result_coupon = mysql_query($query_coupon);
try {
$couponrow = mysql_fetch_row($result_coupon);
$coupon = $couponrow[0];
}
catch (Exception $e) {
// no coupon found
$coupon = '';
}
$query_proid = "SELECT * FROM ".$GLOBALS['ISC_CFG']["tablePrefix"]."order_products WHERE orderorderid='".$order['orderid']."'";
$result_proid = mysql_query($query_proid);
$prod_data = '';
// Setup string to look like PRODUCTID:QUANTITY:PRICE,
while ($row_proid = mysql_fetch_array($result_proid)) {
$prodarr[] = $row_proid['ordprodid'].':'.$row_proid['ordprodqty'].':'.$row_proid['base_price'].':'.$this->sumDiscountAndCoupon($row_proid['applied_discounts']);
}
$java_arr[] = "<script type=\"text/javascript\">
PostAffTracker.setAccountId('Account_ID');"; // Start javascript array
$prod_count = '1'; // Product Counter
// Separate string by ,
foreach ($prodarr as $value) {
// Split apart string by : (PRODUCTID:QUANTITY:PRICE)
$prod_info = explode(":", $value);
// Not needed but here for referance
//$converted_code = str_ireplace('%%PRODUCT_ID'.$prod_count.'%%',$prod_info[0], $converted_code);
//$converted_code = str_ireplace('%%QUANTITY_ID'.$prod_count.'%%',$prod_info[1], $converted_code);
// Create sale code for each product x the quantity ordered
$totalCost = $prod_info[2]-($prod_info[3]/$prod_info[1]);
$quantity = $prod_info[1];
while ($quantity >= 1){
$java_string = "
var sale".$prod_count." = PostAffTracker.createSale();
sale".$prod_count.".setTotalCost('".$totalCost."');
sale".$prod_count.".setOrderID('".$order['orderid']."(".$prod_count.")');
sale".$prod_count.".setProductID('".$prod_info[0]."');
sale".$prod_count.".setData1('".$customerid."');";
if (!empty($coupon)) $java_string .= "sale".$prod_count.".setCoupon('$coupon');";
$java_arr[] = $java_string;
$img_arr[] = '<img src="https://URL_TO_PostAffiliatePro/scripts/sale.php?TotalCost='.$totalCost.'&OrderID='.$order['orderid']."_".$prod_count.'&ProductID='.$prod_info[0].'&Coupon='.$coupon.'" width="1" height="1" />';
$prod_count++; // Increase Product Counter by 1
$quantity = $quantity-1;
}
}
// Image Loop - Returns $img as all img src created in foreach loop
$img = implode("", $img_arr);
// Finish off javascript code
$java_arr[] = "
PostAffTracker.register();
</script>";
// Build string from array created in for each loop
$java = implode("", $java_arr);
$converted_code = str_ireplace('%%JAVA%%', $java, $converted_code); // Simply Insert %%JAVA%% into affiliate tracking section of interspire
$converted_code = str_ireplace('%%IMG_CODE%%', $img, $converted_code); // Simply Insert %%IMG_CODE%% into affiliate tracking section of interspire
$GLOBALS['ConversionCode'] .= $converted_code;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// End Edit
}
Agora é só salvar o arquivo.
Adicionar funções para cálculo de desconto (aplica-se à versão 6.x do Interspire Shopping Cart)
Você ainda está editando o arquivo class.order.php. Adicione o seguinte código antes da linha: private function ThanksForYourOrder()
//////////////////////////////////////////////////PAP integration functions
//find all occurences of a needle inside a haystack
private function strposall($haystack, $needle){
$s=0;
$i=0;
while (is_integer($i)){
$i = strpos($haystack,$needle,$s);
if (is_integer($i)) {
$aStrPos[] = $i;
$s = $i+strlen($needle);
}
}
if (isset($aStrPos)) {
return $aStrPos;
}
else {
return false;
}
}
private function getDiscountFromPosition($discountsString, $position) {
$substring = substr($discountsString, $position+2);
return substr($discountsString, $position+2, strpos($substring, ';'));
}
private function sumDiscountAndCoupon($discountsString) {
if (is_null($discountsString) || $discountsString == '' || !strstr($discountsString, 'd:')) {
return 0;
}
$sum = 0;
foreach ($this->strposall($discountsString, 'd:') as $position) {
$sum += $this->getDiscountFromPosition($discountsString, $position);
}
return $sum;
}
/////////////////////////////////////////////////end PAP integration functions
Configurando as configurações do Interspire
Abra seu painel de administração no Interspire, vá para Configurações/Configurações de afiliados e cole o seguinte código na textarea:
<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/trackjs.js" type="text/javascript"></script>
%%JAVA%%
Ou se você não deseja usar javascript para reportar ao PAP, você pode usar a tag IMG SRC substituindo %%JAVA%% por %%IMG_CODE%%.
OBSERVAÇÃO: Usando o plugin de integração do PayPal com a integração do Interspire.
Não é recomendado usar a integração do Interspire junto com o plugin de integração do PayPal (ou integração de outro processador de pagamento suportado pelo Interspire). Isso pode levar a transações de rastreamento duplo. Você precisa configurar uma proteção contra fraudes de vendas para evitá-las.
O Interspire está lidando com todas as transações (processa todas as transações, independentemente do método de pagamento) e, por isso, você deve usar apenas esta Integração do Interspire. Se esta integração não for adequada para você, tente uma alternativa.
Qualquer dúvida/comentário/sugestão envie um e-mail para Dustin dmanz013@gmail.com.