Magento API: directory_region

Hoy vamos a revisar la segunda entidad con la cual podemos trabajar dentro del módulo Mage_Directory. En este caso es, como bien se deduce del título del post: directory_region.

Si bien las posibilidades en este caso son iguales a la del uso de directory_country, ya que sólo permite listar las regiones (entiéndase por regiones, la denominación de estados o provincias, según el país) y devuelve un array con los valores; hay algunos detalles en cuanto a la operatoria que nos harán el código unas líneas más interesante.

El método posible para ésta entidad es list. A diferencia de lo que ya vimos, éste método necesita de un argumento para poder ejecutarse.

Dicho argumento es el código del país que queremos consultar en formato ISO2 o ISO3. En caso de no estar seguros, pueden obtener dichos códigos usando la consulta de la entidad directory_country.

Nuevamente, es tiempo de ejemplos.

<?php
//Url de la conexión
$client = new SoapClient("http://www.dominio.com.ar/index.php/api/?wsdl");
 
//Login
$session = $client->login("usuario", "contraseña");
 
try {
 
    //Listado de regiones de Estados Unidos
    $regions = $client->call($session, "directory_region.list", "us");
 
    //Impresión
    print_r($regions);
 
} catch (SoapFault $exception) {
 
    echo "<h1>Se produjo un error</h1>";
    echo "<p>Código: " . $exception->faultcode . "</p>";
    echo "<p>Mensaje: " . $exception->faultstring . "</p>";
 
}
 
//Logout
$client->endSession($session);
?>

En éste ejemplo, como novedad de lo poco que ya vimos, estoy usando Excepciones. El motivo es que el método es capaz de devolvernos una excepción en el caso de no encontrar el país que estamos consultando.

El código del error es 101, y la leyenda que nos devuelve es “Country not exists.”.

Si no hay error, deberían ver un array como el siguiente (otra vez, dejo sólo un registro de los 65 posibles).

Array
(
    [0] => Array
        (
            [region_id] => 1
            [code] => AL
            [name] => Alabama
        )
)
Tweet about this on TwitterShare on Google+Email this to someoneShare on FacebookShare on LinkedIn