Sincroniza tus clientes desde Magento.
Uno de los problemas habituales que nos encontramos cuando tenemos que gestionar un e-commerce, es la sincronización de datos entre el e-commerce y nuestra aplicación de gestión.
En el siguiente ejemplo, os mostramos como sincronizar los clientes desde Magento con un pequeño módulo en PHP. En nuestro ejemplo, nuestra aplicación de gestión utiliza una base de datos MySQL. Utilizamos las API de Magento (Versión 1), para recuperar la información de cliente guardada en Magento.
Actualización Clientes desde Magento:
<?php
//*** Definición de Constantes
DEFINE(‘DB_HOST_MAGENTO’, ‘Your_Magento_Host’);
//*** Definición Acceso a Base de Datos Magento
DEFINE(‘DB_NAME_MAGENTO’, ‘Your_Magento_DB’)
DEFINE(‘DB_USER_MAGENTO’, ‘Your_Magento_DB_User’);
DEFINE(‘DB_PASS_MAGENTO’, ‘Your_Magento_DB_Password’);
//>>> Definición Acceso a API Magento.
DEFINE(‘API_MAGENTO’, ‘http://www.your_web.com/index.php/api/?wsdl’);
DEFINE(‘USER_API’, ‘Your_API_User’);
DEFINE(‘PASS_API’, ‘Your_API_Password’);
try {
//*** Url de conexión a API Versión 1
$customer_soapclient = new SoapClient(API_MAGENTO, array(‘trace’ => 1, ‘connection_timeout’ => 120));
//*** Login. Recuperamos valores de sesión. Se debe tener definido en Magento el usuario y contraseña API!
$session = $customer_soapclient ->login(USER_API, PASS_API);
//*** Accedemos a los registros de cliente de Magento directamente por MySQL.
//*** Conexión a la Base de Datos de Magento.
$mage_conn = mysql_connect(DB_HOST_MAGENTO, DB_USER_MAG, DB_PASS_MAG) or trigger_error(mysql_error(),E_USER_ERROR);
//*** Accedemos a la Base de Datos de Magento.
$db_selected = mysql_select_db(DB_NAME_MAGENTO);
if (!$db_selected) {
die (‘Can\’t use foo : ‘ . mysql_error());
}
//*** Seleccionamos la tabla de Clientes de Magento
$WhereMag = ‘select * from customer_entity’;
$Customer_Mag = mysql_query($WhereMag);
if (!$Customer_Mag) {
echo ‘Could not run query: ‘ . mysql_error();
exit;
}
//*** Preparamos una nueva instancia de la tabla de clientes de nuestra base de datos de MySQL.
$MySQL_Customer = new MySQL_Customer();
$Updated = False;
//*** Recorremos la tabla de clientes de Magento y actualizamos registros en nuestra tabla de clientes MySQL
while ($arrobjCustomer_Mag = mysql_fetch_row($Customer_Mag))
{
//*** Obtenemos Registro Clientes Magento
$MagCustomer_Record = $customer_soapclient ->call($session, “customer.info”,$arrobjCustomer_Mag[0]);
//*** Actualizamos los valores del registro en un array (campos de ejemplo!).
$NewArray = array(“MySQL_Mag_Customer_Id” => $MagCustomer_Record[“customer_id”],
“MySQL_Created_At” => $MagCustomer_Record[“created_at”],
“MySQL_Updated_At” => $MagCustomer_Record[“updated_at”],
“MySQL_Store_Id” => $MagCustomer_Record[“store_id”],
“MySQL_Website_Id” => $MagCustomer_Record[“website_id”],
“MySQL_Email” => $MagCustomer_Record[“email”],
“MySQL_Firstname” => $MagCustomer_Record[“firstname”],
“MySQL_Gender” => $MagCustomer_Record[“gender”],
“MySQL_Lastname” => $MagCustomer_Record[“lastname”],
“MySQL_Middlename” => $MagCustomer_Record[“middlename”]);
//*** Actualizamos o insertamos registro en BD MySQL.
//*** Utilizamos 2 métodos predefinidos: Update y Insert. Se pueden sustituir por 2 consultas MySQL!
$WhereMySQLGet = ‘ WHERE MySQL_Customer_Id = ‘.$MagCustomer_Record[“customer_id”];
$MySQL_Customer->Select($WhereMySQLGet);
foreach ($MySQL_Customer->record as $key => $arroMySQL_Customer)
{
$MySQL_Customer->Update($NewArray);
$Updated = True;
}
If ($Updated == False)
{
$MySQL_Customer->Insert($NewArray);
}
}//*** End While
//*** Logout
$customer_soapclient ->endSession($session);
echo _(“Actualitzación Clientes Magento Finalizada”);
} catch (Exception $e) {
echo ‘<h1>Error</h1>’;
echo ‘<p>’ . $e->getMessage() . ‘</p>’;
}
?>