Summer Cart integration
Un carrito de la compra PHP fácil de usar y con todas las funciones.
Summer Cart tiene todas las herramientas y funciones para que los comerciantes online puedan construir fácilmente una tienda que funcione de arriba a abajo. Tanto si vendes una docena de especialidades de nicho, como si haces una lista de cientos de productos masivos, conseguirás una gran visibilidad y popularidad de tu operación a través de una tienda magistralmente elaborada.
La integración de Post Affiliate Pro con Summer Cart requerirá modificar no sólo el pie de página de tu tienda (para añadir el código de seguimiento de clics), sino también 2 clases del carrito de la compra. Consulta los detalles de esta integración a continuación.
Integración del clic
El código de seguimiento de clics debe almacenarse en un archivo skins//customer/footer.tmpl.
Si no tienes este archivo en tu skin, sólo tienes que copiarlo del directorio del esqueleto al directorio de tu tema y añadir el código de seguimiento de clics, que está preparado para ti en Post Affiliate Pro (menú Herramientas -> Integración -> Seguimiento de clics).
Añade este código antes de la etiqueta
Integración de la venta
La integración de la venta funcionará en 2 pasos y la integración se realiza llamando a las peticiones de la API de Post Affiliate Pro directamente desde el código php de tu carrito de la compra.
En el primer paso se creará la transacción en Post Affiliate Pro (estado Pendiente) y más tarde, cuando el pedido sea entregado a tu cliente, la transacción en Post Affiliate Pro cambiará el estado a Aprobado.
Añadir paso de transacción
Tu carro de la compra creará el pedido en el momento en que el visitante sea redirigido al procesador de pagos (por ejemplo, Paypal). Al mismo tiempo se crea la transacción en Post Affiliate Pro (estado Pendiente)
Abre el archivo de carro de la compra:/include/sc/util/order/OrdersInProgress.php
para que podamos colocar allí el código de seguimiento de la venta justo al final de la clase scOrdersInProgress .
Para hacer un seguimiento de todo el pedido como 1 transacción (comisión) en Post Affiliate Pro (incluso si se compran varios artículos durante el pedido concreto) utiliza el siguiente 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();
}
Si deseas que cada artículo comprado durante el pedido sea rastreado como una transacción separada (comisión) en Post Affiliate Pro, entonces utiliza el siguiente 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 debe guardarse antes del final de la clase, es decir, antes del último } del archivo /include/sc/util/order/OrdersInProgress.php
IMPORTANTE: No olvides reemplazar con la ruta correcta al archivo PapApi.class.php.
El archivo PapApi.class.php se puede descargar desde tu instalación de Post Affiliate Pro en el menú Herramientas-> Integración -> Integración Api.
Cópialo en tu servidor, donde está instalada tu tienda y establece la ruta correcta en lugar de .
Añadir paso de transacción
Ahora debemos utilizar el método registerNuevoPostAffiliateProTransaction, que hemos añadido en el paso anterior.
Por favor, añade la siguiente línea de código en el método createOrder justo antes de la última línea
return $this->_lastOrderId;
$this->registerNewPostAffiliateProTransaction($order);
Cambiar el estado de la transacción
El estado de las transacciones existentes en Post Affiliate Pro se puede controlar cambiando el estado en tu carro de la compra.
El siguiente código cambiará el estado de la transacción de PAP a Aprobado, si se establece el estado del pedido de la cesta de la compra como Entregado.
Y establecerá la transacción de PAP en el estado Rechazado, si se establece el pedido de la cesta de la compra en el estado Cancelado, Fallido o Devuelto.
Edita el archivo de tu carrito de la compra /include/sc/domainobj/Order.php y al final de la clase Order añade el siguiente 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 debe guardarse antes del final de la clase, es decir, antes del último } del archivo /include/sc/domainobj/Order.php
IMPORTANTE: No olvides reemplazar con la ruta correcta el archivo PapApi.class.php. El archivo PapApi.class.php se puede descargar desde tu instalación de Post Affiliate Pro en el menú Herramientas-> Integración -> Integración Api.
Cópialo en tu servidor, donde está instalada tu tienda y establece la ruta correcta en lugar de .
IMPORTANTE: En el lugar de uso tu nombre de usuario de comerciante y en el lugar de uso tu contraseña. La solicitud de la API utilizará tus credenciales de usuario para acceder a las transacciones en tu instalación de Post Affiliate Pro.
Cambiar el estado de la transacción
Ahora debemos utilizar el método que hemos añadido a la clase Orden.
Añade la siguiente línea de código (que se encuentra en el cuadro de abajo) en el archivo /include/sc/domainobj/Order.php al final de los métodos updateOrderStatus y setOrderStatus.
$this->updatePostAffiliateProTransaction();
Estados de pedidos personalizados
En caso de que planees utilizar estados de pedido personalizados en tu Carrito de Verano, debes adaptar el método updatePostAffiliateProTransaction en el archivo de tu carrito de la compra /include/sc/domainobj/Order.php.
en la función switch debes añadir nuevas sentencias case, donde el valor será el ID de tu estado personalizado.
Descubre cómo integrar fácilmente X-Cart con Post Affiliate Pro para rastrear ventas y pedidos. Aprovecha el complemento gratuito o el script de seguimiento para obtener un seguimiento detallado por producto y soporte técnico completo. Mejora la eficiencia de tu e-commerce con esta potente solución de integración. ¡Visítanos para más información y empieza tu prueba gratuita hoy!