Summer Cart integration
Um carrinho de compras PHP completo e fácil de usar.
O Summer Cart tem todas as ferramentas e recursos para permitir que os comerciantes online construam facilmente uma loja funcional por completo. Quer você venda uma dúzia de especialidades de nicho ou liste centenas de produtos em massa, obterá alta visibilidade e popularidade de sua operação por meio de uma loja perfeitamente montada.
A integração do Post Affiliate Pro com o Summer Cart exigirá a modificação não apenas do rodapé da sua loja (para adicionar o código de rastreamento de cliques), mas também de 2 classes de carrinho de compras. Veja detalhes dessa integração abaixo.
Integração de cliques
O código de rastreamento de cliques deve ser armazenado no arquivo skins//customer/footer.tmpl.
Se você não tiver este arquivo em sua skin, basta copiá-lo do diretório esqueleto para o diretório do tema e adicionar o código de rastreamento de cliques, que é preparado para você no Post Affiliate Pro (menu Ferramentas -> Integração -> Rastreamento de cliques)
Adicione este código antes da tag
Integração de vendas
A integração da venda funcionará em 2 etapas e a integração é feita chamando as solicitações da API PAP para o Post Affiliate Pro diretamente do código php do seu carrinho de compras.
Na primeira etapa será criada a transação no Post Affiliate Pro (status Pendente) e posteriormente, quando o pedido for entregue ao seu cliente, a transação no Post Affiliate Pro mudará de status para Aprovado.
Adicione a etapa da transação
Seu carrinho de compras criará o pedido a tempo, quando o visitante for redirecionado para o processador de pagamento (por exemplo, Paypal). Ao mesmo tempo é criada a transação no Post Affiliate Pro (status Pendente)
Abra o arquivo do carrinho de compras: /include/sc/util/order/OrdersInProgress.php
para que possamos colocar o código de acompanhamento da venda no final da classe scOrdersInProgress .
Para rastrear todo o pedido como 1 transação (comissão) no Post Affiliate Pro (mesmo que vários itens sejam comprados durante o pedido específico), use o seguinte código:
private function registerNewPostAffiliateProTransaction($order) {
include_once('<PATH_TO_PAP_API>/PapApi.class.php');
$saleTracker = new Pap_Api_SaleTracker('https://URL_TO_PostAffiliatePro/scripts/sale.php');
$productIDs = '';
$items = $order->getOrderItems();
foreach($items as $item) {
$productIDs .= $item->get('OrderItemProductCode').',';
}
$sale = $saleTracker->createSale();
$papOrderDetails = $order->getOrderTotalLines();
$sale->setTotalCost($papOrderDetails[0]->get('OrderTotalLineCustomerCurrencyAmount'));
$sale->setOrderID($order->getPK());
$sale->setProductID($productIDs);
$saleTracker->register();
}
Se você deseja que cada item comprado durante o pedido seja rastreado como uma transação separada (comissão) no Post Affiliate Pro, use o seguinte código:
private function registerNewPostAffiliateProTransaction($order) {
include_once('<PATH_TO_PAP_API>/PapApi.class.php');
$saleTracker = new Pap_Api_SaleTracker('https://URL_TO_PostAffiliatePro/scripts/sale.php');
$items = $order->getOrderItems();
foreach($items as $item) {
$sale = $saleTracker->createSale();
$sale->setTotalCost($item->get('OrderItemTotal'));
$sale->setOrderID($order->getPK());
$sale->setProductID($item->get('OrderItemProductCode'));
}
$saleTracker->register();
}
IMPORTANTE: este método deve ser armazenado antes do final da classe, ou seja, antes do último } no arquivo /include/sc/util/order/OrdersInProgress.php
IMPORTANTE: Não esqueça de substituir pelo caminho correto para o arquivo PapApi.class.php.
O arquivo PapApi.class.php pode ser baixado da instalação do Post Affiliate Pro no menu Ferramentas -> Integração -> Integração via API.
Copie ele para o seu servidor, onde está instalada sua loja e defina o caminho correto no lugar do .
Adicione a etapa da transação
Agora devemos usar o método registerNewPostAffiliateProTransaction, que adicionamos na etapa anterior.
Por favor, adicione a seguinte linha de código no método createOrder antes da última linha
return $this->_lastOrderId;
$this->registerNewPostAffiliateProTransaction($order);
Alterar status da transação
O status das transações existentes no Post Affiliate Pro pode ser controlado alterando o status em seu carrinho de compras.
O código a seguir mudará o status da transação PAP para Aprovado, se você definir o pedido do carrinho de compras para o status Entregue.
E ele definirá a transação PAP para o status Recusado, se você definir o pedido do carrinho de compras para o status Cancelado, Reprovado ou Devolvido.
Edite o arquivo do seu carrinho de compras /include/sc/domainobj/Order.php e no final da classe Pedido adicione o seguinte método:
private function updatePostAffiliateProTransaction() {
try {
include_once('<PATH_TO_PAP_API>/PapApi.class.php');
$session = new Gpf_Api_Session("https://URL_TO_PostAffiliatePro/scripts/server.php");
if(!$session->login("<MERCHANT_USERNAME>","<MERCHANT_PASSWORD>")) {
return false;
}
$request = new Pap_Api_TransactionsGrid($session);
$request->addFilter("orderid", Gpf_Data_Filter::LIKE, $this->getPK());
$request->addFilter("rtype", Gpf_Data_Filter::EQUALS, 'S');
try {
$request->sendNow();
$grid = $request->getGrid();
$recordset = $grid->getRecordset();
} catch (Exception $e) {
return false;
}
foreach($recordset as $rec) {
$transaction = new Pap_Api_Transaction($session);
$transaction->setTransid($rec->get('transid'));
try {
if(!$transaction->load()) {
return false;
} else {
if ($transaction->getStatus() != 'D') {
$newStatus = '';
switch($this->get('OrderStatus')) {
case scOrderStatus::ORDER_STATUS_UNFINISHED:
case scOrderStatus::ORDER_STATUS_PAYMENT_PENDING:
case scOrderStatus::ORDER_STATUS_NEW:
case scOrderStatus::ORDER_STATUS_IN_PROGRESS:
case scOrderStatus::ORDER_STATUS_ON_HOLD:
case scOrderStatus::ORDER_STATUS_QUEUED:
$newStatus = 'P';
break;
case scOrderStatus::ORDER_STATUS_RETURNED:
case scOrderStatus::ORDER_STATUS_PAYMENT_FAILED:
case scOrderStatus::ORDER_STATUS_CANCELLED:
$newStatus = 'D';
break;
case scOrderStatus::ORDER_STATUS_DELIVERED:
$newStatus = 'A';
break;
default:
return false;
}
// changing the status of a transaction
if (strlen($newStatus) && $transaction->getStatus() != $newStatus) {
$transaction->setStatus($newStatus);
$transaction->save();
}
}
}
} catch (Exception $e) {
return false;
}
}
} catch (Exception $e) {
return false;
}
return true;
}
IMPORTANTE: este método deve ser armazenado antes do final da classe, ou seja, antes do último } no arquivo /include/sc/domainobj/Order.php
IMPORTANTE: Não esqueça de substituir com o caminho correto para o arquivo PapApi.class.php. O arquivo PapApi.class.php pode ser baixado da instalação do Post Affiliate Pro no menu Ferramentas -> Integração -> Integração via API.
Copie ele para o seu servidor, onde está instalada sua loja e defina o caminho correto no lugar do .
IMPORTANTE: No lugar de use seu nome de usuário de comerciante e no lugar de use sua senha. A solicitação de API usará suas credenciais de usuário para acessar transações em sua instalação do Post Affiliate Pro.
Alterar status da transação
Agora devemos usar o método, que adicionamos à classe Pedido.
Adicione a seguinte linha de código (encontrada na caixa abaixo) no arquivo /include/sc/domainobj/Order.php no final dos métodos updateOrderStatus e setOrderStatus.
$this->updatePostAffiliateProTransaction();
Status de pedido personalizado
Caso você planeje usar status de pedidos personalizados em seu Summer Cart, você deve adaptar o método updatePostAffiliateProTransaction em seu arquivo de carrinho de compras /include/sc/domainobj/Order.php.
na função trocar você deve adicionar novas declarações de caso, onde valor será o ID do seu status customizado.