Summer Cart integration
Un panier d’achat PHP complet et facile à utiliser.
Summer Cart dispose de tous les outils et de toutes les fonctionnalités permettant aux commerçants en ligne de créer facilement une boutique fonctionnelle de fond en comble. Que vous vendiez une douzaine de spécialités de niche ou que vous répertoriez des centaines de produits de masse, vous obtiendrez une grande visibilité et popularité de votre opération grâce à une boutique conçue de main de maître.
L’intégration de Post Affiliate Pro avec Summer Cart nécessitera de modifier non seulement le pied de page de votre boutique (pour ajouter le code de suivi des clics), mais aussi 2 classes du panier d’achat. Voir les détails de cette intégration ci-dessous.
Intégration des clics
Le code de suivi des clics doit être stocké dans le fichier skins//customer/footer.tmpl
Si vous ne disposez pas de ce fichier dans votre skin, il suffit de le copier du répertoire squelette vers le répertoire de votre thème et d’ajouter le code de suivi des clics, qui est préparé pour vous dans Post Affiliate Pro (menu Tools -> Integration -> Click tracking)
Ajoutez ce code avant la balise
Intégration des ventes
L’intégration des ventes se fera en 2 étapes et l’intégration se fait en appelant les requêtes PAP API à Post Affiliate Pro directement à partir du code php de votre panier.
Dans un premier temps, une transaction sera créée dans Post Affiliate Pro (statut Pending) et plus tard, lorsque la commande sera livrée à votre client, la transaction dans Post Affiliate Pro passera au statut Approved.
Ajouter une étape de transaction
Votre panier créera la commande au moment où le visiteur sera redirigé vers le processeur de paiement (par exemple Paypal). Dans le même temps, une transaction est créée dans Post Affiliate Pro (statut Pending).
Ouvrez le fichier du panier d’achat : /include/sc/util/order/OrdersInProgress.php
afin que nous puissions y placer le code de suivi des ventes juste à la fin de la classe scOrdersInProgress
Afin de suivre la totalité de la commande comme une seule transaction (commission) dans Post Affiliate Pro (même si plusieurs articles sont achetés au cours de la commande particulière), utilisez le code suivant :
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();
}
Si vous souhaitez que chaque article acheté pendant la commande soit suivi comme une transaction distincte (commission) dans Post Affiliate Pro, utilisez le code suivant :
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();
}
IMPORTANT : cette méthode doit être stockée avant la fin de la classe, c’est-à-dire avant le dernier } du fichier /include/sc/util/order/OrdersInProgress.php
IMPORTANT : N’oubliez pas de remplacer le chemin d’accès au fichier PapApi.class.php par le chemin correct.
Le fichier PapApi.class.php peut être téléchargé depuis votre installation Post Affiliate Pro dans le menu Tools-> Integration -> Api Integration
Copiez-le sur votre serveur, où est installé votre boutique et définissez le chemin correct.
Ajouter une étape de transaction
Maintenant nous devons utiliser la méthode registerNewPostAffiliateProTransaction, que nous avons ajoutée à l’étape précédente.
Veuillez ajouter la ligne de code suivante dans la méthode createOrder, juste avant la dernière ligne.
return $this->_lastOrderId;
$this->registerNewPostAffiliateProTransaction($order);
Changez le statut de la transaction
Le statut des transactions existantes dans Post Affiliate Pro peut être contrôlé en changeant le statut dans votre panier.
Le code suivant changera le statut de la transaction PAP en Approuvé, si votre panier d’achat a le statut Livré.
Et la transaction PAP aura le statut Declined, si votre panier d’achat a le statut Cancelled, Failed ou Returned.
Modifiez votre fichier de panier /include/sc/domainobj/Order.php et à la fin de la classe Order ajoutez la méthode suivante :
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;
}
IMPORTANT : cette méthode doit être stockée avant la fin de la classe, c’est-à-dire avant le dernier } du fichier /include/sc/domainobj/Order.php
IMPORTANT : N’oubliez pas de remplacer le chemin d’accès correct au fichier PapApi.class.php. Le fichier PapApi.class.php peut être téléchargé depuis votre installation de Post Affiliate Pro dans le menu Tools-> Integration -> Api Integration.
Copiez-le sur votre serveur, où est installé votre boutique et définissez le chemin correct.
IMPORTANT : Utilisez votre nom d’utilisateur marchand et votre mot de passe. La demande d’API utilisera vos informations d’identification pour accéder aux transactions de votre installation Post Affiliate Pro.
Changez le statut de la transaction
Maintenant, nous devons utiliser la méthode que nous avons ajoutée à la classe Order.
Ajoutez la ligne de code suivante (trouvée dans la boîte ci-dessous) dans le fichier /include/sc/domainobj/Order.php à la toute fin des méthodes updateOrderStatus et setOrderStatus.
$this->updatePostAffiliateProTransaction();
Statuts de commande personnalisés
Si vous prévoyez d’utiliser des statuts de commande personnalisés dans votre panier d’été, vous devez adapter la méthode updatePostAffiliateProTransaction dans le fichier de votre panier d’achat /include/sc/domainobj/Order.php
dans la fonction switch, vous devez ajouter de nouvelles déclarations de cas, où la valeur sera l’ID de votre statut personnalisé.