–Hidden comment

Use attributes in format region_from and region_to= to change the languages showing in language switcher.
Available regions are:
europe_from europe_to
asia_from asia_to
mideast_from mideast_to
america_from america_to

Example:
europe_from=0 europe_to=22 will put all languages (ordered in language switcher settings) from 1 to 21 to Europe region:
asia_from=22 asia_to=25 will put all languages from 23 to 24 (so only 2) into Asia region.

Summer Cart

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

Como la integración del carrito de verano no puede utilizar el seguimiento de las cookies de Flash (sólo se utilizan las cookies del navegador), tendremos que desactivar el seguimiento de las cookies de Flash, añadiendo la siguiente línea al código de seguimiento de los clics:

PostAffTracker.disableTrackingMethod('F');

Debe guardarse justo después de la línea:

PostAffTracker.setAccountId('default1');

en tu código de integración de clics en el archivo footer.tmpl.

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.

Volver a Integraciones Crear cuenta GRATIS

Nuestro sitio web utiliza cookies. Al continuar, asumimos tu permiso para implementar cookies como se detalla en nuestro política de privacidad y cookies.

×

Programa una llamada uno a uno y descubre cómo Post Affiliate Pro puede beneficiar a tu negocio.

Estamos disponibles en varias fechas

Programa una llamada