Summer Cart integration
Un carrello degli acquisti PHP completo e facile da utilizzare.
Summer Cart ha tutti gli strumenti e le funzionalità per permettere ai commercianti online di costruire facilmente un negozio funzionante da cima a fondo. Che tu venda una dozzina di specialità di nicchia, o che elenchi centinaia di prodotti di massa, otterrai alta visibilità e popolarità della tua operazione attraverso un negozio realizzato con maestria.
L’integrazione di Post Affiliate Pro con Summer Cart richiederà di modificare non solo il piè di pagina del tuo negozio (per aggiungere il codice di tracciamento dei clic), ma anche 2 classi di carrello. Vedi i dettagli di questa integrazione qui sotto.
Integrazione dei clic
Il codice di tracciamento dei clic dovrebbe essere memorizzato in un file skins//customer/footer.tmpl.
Se non hai questo file nella tua interfaccia, basta copiarlo dallo skeleton directory nella directory del tuo tema e aggiungere il codice di tracciamento dei clic, che è preparato per te in Post Affiliate Pro (Menu degli Strumenti-> Integrazione -> Monitoraggio dei clic)
Aggiungi questo codice prima del tag
Integrazione della vendita
L’integrazione della vendita funzionerà in 2 passaggi attraverso le richieste PAP API a Post Affiliate Pro direttamente dal codice php del tuo carrello.
Nel primo passaggio verrà creata una transazione in Post Affiliate Pro (stato “in Sospeso”) e più tardi, quando l’ordine sarà consegnato al tuo cliente, la transazione in Post Affiliate Pro cambierà lo stato in Approvato.
Aggiungi la fase della transazione
Il tuo carrello degli acquisti creerà l’ordine in tempo, quando il visitatore viene reindirizzato al processore di pagamento (per esempio Paypal). Nello stesso tempo viene creata la transazione in Post Affiliate Pro (stato “in Sospeso”)
Apri il file del carrello degli acquisti: /include/sc/util/order/OrdersInProgress.php
in modo che possiamo metterci il codice di tracciamento della vendita proprio alla fine della classe scOrdersInProgress .
Al fine di tracciare l’intero ordine come 1 transazione (commissione) in Post Affiliate Pro (anche se più articoli sono acquistati durante l’ordine particolare) utilizza il seguente codice:
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 desideri che ogni articolo acquistato durante l’ordine sia tracciato come una transazione separata (commissione) in Post Affiliate Pro, allora usa il seguente codice:
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: questo metodo dovrebbe essere memorizzato prima della fine della classe, cioè prima dell’ultimo } nel file /include/sc/util/order/OrdersInProgress.php
IMPORTANTE: Non dimenticarti di sostituire con il percorso corretto del file PapApi.class.php.
Il file PapApi.class.php può essere scaricato dalla tua installazione di Post Affiliate Pro nel menu Strumenti-> Integrazione -> Integrazione Api.
Copialo sul tuo server, dove è installato il tuo negozio e imposta il percorso corretto al posto di .
Aggiungi la fase della transazione
Ora dovremmo usare il metodo registerNewPostAffiliateProTransaction, che abbiamo aggiunto nel passaggio precedente.
Aggiungi la seguente linea di codice nel metodo createOrder subito prima dell’ultima linea
return $this->_lastOrderId;
$this->registerNewPostAffiliateProTransaction($order);
Cambia lo status della transazione
Lo stato delle transazioni esistenti in Post Affiliate Pro può essere controllato cambiando lo stato nel tuo carrello.
Il codice seguente cambierà lo stato della transazione PAP in Approvata, se si imposta l’ordine del carrello degli acquisti allo stato Consegnato.
E imposterà la transazione PAP allo stato Declinato, se imposterai il tuo ordine del carrello degli acquisti allo stato Annullato, Fallito o Restituito.
Modifica il tuo file del carrello degli acquisti /include/sc/domainobj/Order.php e alla fine della classe Ordine aggiungi il seguente metodo:
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: il suo metodo dovrebbe essere memorizzato prima della fine della classe, cioè prima dell’ultimo } nel file /include/sc/domainobj/Order.php
IMPORTANTE: Non dimenticare di sostituire con il percorso corretto del file PapApi.class.php. Il file PapApi.class.php può essere scaricato dalla tua installazione di Post Affiliate Pro nel menu Strumenti-> Integrazione -> Integrazione Api.
Copialo sul tuo server, dove è installato il tuo negozio e imposta il percorso corretto al posto di .
IMPORTANTE: Ricordati il tuo username del commerciante e la tua password. La richiesta API utilizzerà le tue credenziali utente per accedere alle transazioni nella tua installazione Post Affiliate Pro.
Cambia lo status della transazione
Ora dovremmo usare il metodo che abbiamo aggiunto alla classe Ordine.
Aggiungi la seguente linea di codice (che si trova nel riquadro sottostante) nel file /include/sc/domainobj/Order.php alla fine dei metodi updateOrderStatus e setOrderStatus.
$this->updatePostAffiliateProTransaction();
Stati di Ordine Personalizzati
Se hai intenzione di usare degli stati d’ordine personalizzati nel tuo Summer Cart, dovresti adattare il metodo updatePostAffiliateProTransaction nel file del tuo carrello /include/sc/domainobj/Order.php.
nella funzione switch dovresti aggiungere delle nuove dichiarazioni di caso, dove il valore sarà l’ID del tuo stato personalizzato.