osCommerce integration
Um programa de loja online gratuito com histórico de pedidos, carrinhos de compras, capacidade de pesquisas completas, análises de produtos, transações seguras, listas de mais vendidos e itens relacionados.
A integração com osCommerce é feita colocando o script de rastreamento de vendas na página de confirmação. Para obter os valores de OrderID e TotalSale, o snippet se conecta ao banco de dados do osCommerce e recupera os valores de lá.
Encontre o arquivo checkout_success.php
Encontre e abra o arquivo checkout_success.php nos arquivos de origem do osCommerce.
Localize o lugar certo para integração
Dentro do arquivo encontre esta linha:
if ($global['global\_product\_notifications'] != '1') {...
Deve estar em algum lugar após esta linha:
<! DOCTYPE ........>
Adicione o código de integração
Insira o seguinte código logo acima dessa linha:
//--------------------------------------------------------------------------
// integration code
//--------------------------------------------------------------------------
// get order id
$sql = "select orders_id from ".TABLE_ORDERS.
" where customers_id='".(int)$customer_id.
"' order by date_purchased desc limit 1";
$pap_orders_query = tep_db_query($sql);
$pap_orders = tep_db_fetch_array($pap_orders_query);
$pap_order_id = $pap_orders['orders_id'];
// get total amount of order
$sql = "select value from ".TABLE_ORDERS_TOTAL.
" where orders_id='".(int)$pap_order_id.
"' and class='ot_subtotal'";
$pap_orders_total_query = tep_db_query($sql);
$pap_orders_total = tep_db_fetch_array($pap_orders_total_query);
$pap_total_value = $pap_orders_total['value'];
//get product ids
$sql = "select products_id from " .TABLE_ORDERS_PRODUCTS.
" where orders_id=".(int)$pap_order_id;
$pap_orders_products_query = tep_db_query($sql);
$pap_orders_products = '';
while ($row = tep_db_fetch_array($pap_orders_products_query)) {
$pap_orders_products .= $row['products_id'] . ',';
}
$pap_orders_products = substr($pap_orders_products, 0, -1);
// draw invisible image to register sale
if($pap_total_value != "" && $pap_order_id != "")
{
print '<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/trackjs.js" type="text/javascript"></script>
'."<script type=\"text/javascript\">PostAffTracker.setAccountId('Account_ID');
var sale = PostAffTracker.createSale();
sale.setTotalCost('$pap_total_value');
sale.setOrderID('$pap_order_id');
sale.setProductID('$pap_orders_products');
PostAffTracker.register();
</script>";
}
//--------------------------------------------------------------------------
// END of integration code
//--------------------------------------------------------------------------
A integração está concluída
Agora está integrado. Toda vez que o cliente entra na página de confirmação do pedido, o código de rastreamento é chamado e ele registrará uma venda para o afiliado indicado.
Outra integração
Se você planeja dividir produtos em mais campanhas, provavelmente precisará de outra integração, que divida toda a venda em vendas de um único produto.
//--------------------------------------------------------------------------
// integration code
//--------------------------------------------------------------------------
// get order id
$sql = "select orders_id from ".TABLE_ORDERS.
" where customers_id='".(int)$customer_id.
"' order by date_purchased desc limit 1";
$pap_orders_query = tep_db_query($sql);
$pap_orders = tep_db_fetch_array($pap_orders_query);
$pap_order_id = $pap_orders['orders_id'];
//get variables for script
$sql = "select products_id,products_price,products_quantity from " .TABLE_ORDERS_PRODUCTS.
" where orders_id=".(int)$pap_order_id;
$pap_products_total_query = tep_db_query($sql);
$k = 0;
while ($row = tep_db_fetch_array($pap_products_total_query)) {
$pap_products_total[$k+1] = $row['products_price'] * $row['products_quantity'];
$pap_products[$k+1] = $row['products_id'];
$k++;
}
// draw invisible image to register sale
if($pap_order_id != "")
{
?>
<script id="pap_x2s6df8d" src="https://URL_TO_PostAffiliatePro/scripts/trackjs.js" type="text/javascript"></script>
<script type="text/javascript">
PostAffTracker.setAccountId('Account_ID'); <?php
for ($j=1; $j<=$k; $j++){
echo "var sale".$j." = PostAffTracker.createSale();\n".
"sale".$j.".setTotalCost('". $pap_products_total[$j]."');\n".
"sale".$j.".setOrderID('".$pap_order_id."');\n".
"sale".$j.".setProductID('".$pap_products[$j]."');\n\n";
}
?>
PostAffTracker.register();
</script>;
<?php
}
//--------------------------------------------------------------------------
// END of integration code
//--------------------------------------------------------------------------
Integração direta do PayPal com osCommerce
Se você quiser confiar no IPN do PayPal (já que isso é seguro e 100% de certeza de que a transação será registrada), você pode editar diretamente o modelo de botão do PayPal no osCommerce. Faça login no seu FTP e navegue até catalog/includes/modules/payment/ e edite o arquivo paypal_standard.php.
Encontre a função process_button e role para baixo até o final. Você deve encontrar este bloco de código:
} else {
reset($parameters);
while (list($key, $value) = each($parameters)) {
$process_button_string .= tep_draw_hidden_field($key, $value);
}
}
return $process_button_string;
// --------------------------------------------
// change this whole block of code to this block:
} else {
reset($parameters);
while (list($key, $value) = each($parameters)) {
if ($key == "custom") {
$tofix = tep_draw_hidden_field($key, $value);
$process_button_string .= substr($tofix,0,-1) .' id="pap_ab78y5t4a" >';
}
else {
$process_button_string .= tep_draw_hidden_field($key, $value);
}
}
}
$process_button_string .= '<script type="text/javascript">';
$process_button_string .= 'document.write(unescape("%3Cscript id=%27pap_x2s6df8d%27 src=%27" + (("https:" == document.location.protocol) ? "https://" : "http://") + "URL_TO_PostAffiliatePro/scripts/trackjs.js%27 type=%27text/javascript%27%3E%3C/script%3E"));';
$process_button_string .= '</script><script type="text/javascript">PostAffTracker.setAccountId(\'default1\');';
$process_button_string .= 'PostAffTracker.setAppendValuesToField(\'||\');';
$process_button_string .= 'PostAffTracker.writeCookieToCustomField(\'pap_ab78y5t4a\');</script>';
return $process_button_string;
Isso adicionará o script de rastreamento diretamente ao botão do paypal e inserirá o valor adequado no parâmetro personalizado.
Agora, você também deve reenviar o IPN do osCommerce para o PAP. Veja o próximo passo.
Redirecionamento do PayPal para PAP
Quando há uma venda, o PayPal envia o IPN para o seu osCommerce. Você tem que reenviar para o PAP para salvar a transação. Navegue até catalog/ext/modules/payment/paypal/ em seu FTP e modifique o arquivo standard_ipn.php . Insira o seguinte código no início do arquivo:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://URL_TO_PostAffiliatePro/plugins/PayPal/paypal.php");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST);
curl_exec($ch);
A última etapa é modificar o ID do cliente salvo no campo personalizado para o valor sem o ID do visitante PAP. Encontrar linha:
if ($result == 'VERIFIED') {
e adicione o seguinte código acima da linha:
$separator = '||';
if ($_POST['custom'] != '') {
$explodedCustomValue = explode($separator, $_POST['custom'], 2);
if (count($explodedCustomValue) == 2) {
$_REQUEST['custom'] = $_POST['custom'] = $explodedCustomValue[0];
$HTTP_POST_VARS['custom'] = $explodedCustomValue[0];
}
}
Não se esqueça de integrar seu site com o código de rastreamento de cliques.