TigerZF
🌐Español

64.29. Zend_Service_StrikeIron

Zend_Service_StrikeIron proporciona un cliente PHP 5 para los servicios web de StrikeIron. Consulte las siguientes secciones:

64.29.1. Resumen

StrikeIron ofrece cientos de servicios de datos comerciales ("Data as a Service") como impuesto sobre ventas en línea, tipos de cambio, cotizaciones bursátiles, geocódigos, verificación de direcciones global, páginas amarillas/blancas, indicaciones de conducción de MapQuest, comprobación de crédito comercial de Dun & Bradstreet, y mucho, mucho más.

Cada servicio web de StrikeIron comparte una API SOAP (y REST) estándar, lo que facilita integrar y gestionar múltiples servicios. StrikeIron también gestiona la facturación de clientes de todos los servicios en una única cuenta, lo que resulta ideal para proveedores de soluciones. Comience con servicios web gratuitos en http://www.strikeiron.com/sdp.

Los servicios de StrikeIron pueden utilizarse a través de la extensión SOAP de PHP 5 por sí sola. Sin embargo, usar StrikeIron de esta manera no ofrece una interfaz ideal al estilo PHP. El componente Zend_Service_StrikeIron proporciona una capa ligera sobre la extensión SOAP para trabajar con los servicios de StrikeIron de una manera más conveniente y al estilo PHP.

[Note] Nota

La extensión SOAP de PHP 5 debe estar instalada y habilitada para usar Zend_Service_StrikeIron.

El componente Zend_Service_StrikeIron proporciona:

  • Un único punto para configurar sus credenciales de autenticación de StrikeIron que puede usarse en muchos servicios de StrikeIron.

  • Una forma estándar de recuperar la información de su suscripción a StrikeIron, como el estado de la licencia y el número de peticiones restantes para un servicio.

  • La posibilidad de usar cualquier servicio de StrikeIron a partir de su WSDL sin crear una clase envoltorio PHP, y la opción de crear un envoltorio para una interfaz más conveniente.

  • Envoltorios para tres servicios populares de StrikeIron.

64.29.2. Registro en StrikeIron

Antes de poder comenzar con Zend_Service_StrikeIron, debe primero registrarse para obtener una cuenta de desarrollador de StrikeIron.

Después de registrarse, recibirá un nombre de usuario y contraseña de StrikeIron. Estos se usarán al conectarse a StrikeIron mediante Zend_Service_StrikeIron.

También necesitará suscribirse al servicio web Super Data Pack de StrikeIron.

Ambos pasos de registro son gratuitos y pueden realizarse con relativa rapidez a través del sitio web de StrikeIron.

64.29.3. Primeros pasos

Una vez que se haya registrado para una cuenta de StrikeIron y se haya suscrito al Super Data Pack, estará listo para comenzar a usar Zend_Service_StrikeIron.

StrikeIron consta de cientos de servicios web diferentes. Zend_Service_StrikeIron puede usarse con muchos de estos servicios pero proporciona envoltorios compatibles para tres de ellos:

La clase Zend_Service_StrikeIron proporciona una manera sencilla de especificar la información de su cuenta de StrikeIron y otras opciones en su constructor. También tiene un método de fábrica que devolverá clientes para los servicios de StrikeIron:

$strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
                                                'password' => 'your-password'));

$taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));

El método getService() devolverá un cliente para cualquier servicio de StrikeIron por el nombre de su clase envoltorio PHP. En este caso, el nombre 'SalesUseTaxBasic' hace referencia a la clase envoltorio Zend_Service_StrikeIron_SalesUseTaxBasic. Se incluyen envoltorios para tres servicios y se describen en Servicios incluidos.

El método getService() también puede devolver un cliente para un servicio de StrikeIron que aún no tenga un envoltorio PHP. Esto se explica en Uso de servicios mediante WSDL.

64.29.4. Realizando su primera consulta

Una vez que haya usado el método getService() para obtener un cliente de un servicio de StrikeIron en particular, puede utilizar ese cliente llamando a sus métodos como cualquier otro objeto PHP.

$strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
                                                'password' => 'your-password'));

// Get a client for the Sales & Use Tax Basic service
$taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));

// Query tax rate for Ontario, Canada
$rateInfo = $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
echo $rateInfo->province;
echo $rateInfo->abbreviation;
echo $rateInfo->GST;

En el ejemplo anterior, el método getService() se usa para devolver un cliente para el servicio Impuesto sobre ventas y uso básico. El objeto cliente se almacena en $taxBasic.

A continuación se llama al método getTaxRateCanada() en el servicio. Se usa un array asociativo para suministrar parámetros con nombre al método. Esta es la manera en que se llaman todos los métodos de StrikeIron.

El resultado de getTaxRateCanada() se almacena en $rateInfo y tiene propiedades como province y GST.

Muchos de los servicios de StrikeIron son tan sencillos de usar como el ejemplo anterior. Consulte Servicios incluidos para obtener información detallada sobre tres servicios de StrikeIron.

64.29.5. Examinando resultados

Al aprender o depurar los servicios de StrikeIron, a menudo resulta útil volcar el resultado devuelto por una llamada a un método. El resultado siempre será un objeto que es una instancia de Zend_Service_StrikeIron_Decorator. Este es un pequeño objeto decorador que envuelve los resultados de la llamada al método.

La forma más sencilla de examinar un resultado del servicio es usar las funciones integradas de PHP como print_r():

<?php
$strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
                                                'password' => 'your-password'));

$taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));

$rateInfo = $taxBasic->getTaxRateCanada(array('province' => 'ontario'));
print_r($rateInfo);
?>

Zend_Service_StrikeIron_Decorator Object
(
    [_name:protected] => GetTaxRateCanadaResult
    [_object:protected] => stdClass Object
        (
            [abbreviation] => ON
            [province] => ONTARIO
            [GST] => 0.06
            [PST] => 0.08
            [total] => 0.14
            [HST] => Y
        )
)

En la salida anterior, vemos que el decorador ($rateInfo) envuelve un objeto llamado GetTaxRateCanadaResult, el resultado de la llamada a getTaxRateCanada().

Esto significa que $rateInfo tiene propiedades públicas como abbreviation, province, y GST. Se accede a ellas como $rateInfo->province.

[Tip] Consejo

Las propiedades de resultado de StrikeIron a veces comienzan con una letra mayúscula, como Foo o Bar, mientras que la mayoría de las propiedades de objetos PHP normalmente comienzan con una letra minúscula, como en foo o bar. El decorador realizará automáticamente esta inflexión, de modo que puede leer una propiedad Foo como foo.

Si alguna vez necesita obtener el objeto original o su nombre a partir del decorador, use los métodos respectivos getDecoratedObject() y getDecoratedObjectName().

64.29.6. Manejo de errores

Los ejemplos anteriores son ingenuos, es decir, no se mostró manejo de errores. Es posible que StrikeIron devuelva un fallo durante una llamada a un método. Eventos como credenciales de cuenta incorrectas o una suscripción caducada pueden hacer que StrikeIron genere un fallo.

Se lanzará una excepción cuando ocurra tal fallo. Debe anticipar y capturar estas excepciones al realizar llamadas a métodos del servicio:

$strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
                                                'password' => 'your-password'));

$taxBasic = $strikeIron->getService(array('class' => 'SalesUseTaxBasic'));

try {

  $taxBasic->getTaxRateCanada(array('province' => 'ontario'));

} catch (Zend_Service_StrikeIron_Exception $e) {

  // error handling for events like connection
  // problems or subscription errors

}

Las excepciones lanzadas siempre serán Zend_Service_StrikeIron_Exception.

Es importante entender la diferencia entre las excepciones y las llamadas a métodos fallidas normales. Las excepciones ocurren en condiciones excepcionales, como que la red se caiga o que su suscripción caduque. Las llamadas a métodos fallidas que son un evento habitual, como que getTaxRateCanada() no encuentre la province que suministró, no producirán una excepción.

[Note] Nota

Cada vez que realice una llamada a un método de un servicio de StrikeIron, debe comprobar la validez del objeto de respuesta y también estar preparado para capturar una excepción.

64.29.7. Comprobación de su suscripción

StrikeIron proporciona muchos servicios diferentes. Algunos de ellos son gratuitos, algunos están disponibles en régimen de prueba, y otros son de solo suscripción de pago. Al usar StrikeIron, es importante conocer el estado de su suscripción para los servicios que está usando y comprobarlo regularmente.

Cada cliente de StrikeIron devuelto por el método getService() tiene la capacidad de comprobar el estado de la suscripción para ese servicio usando el método getSubscriptionInfo() del cliente:

// Get a client for the Sales & Use Tax Basic service
$strikeIron = new Zend_Service_StrikeIron(array('username' => 'your-username',
                                                'password' => 'your-password'));

$taxBasic = $strikeIron->getService(array('class => 'SalesUseTaxBasic'));

// Check remaining hits for the Sales & Use Tax Basic service
$subscription = $taxBasic->getSubscriptionInfo();
echo $subscription->remainingHits;

El método getSubscriptionInfo() devolverá un objeto que típicamente tiene una propiedad remainingHits. Es importante comprobar el estado de cada servicio que esté usando. Si se realiza una llamada a un método a StrikeIron después de que se hayan agotado los aciertos restantes, ocurrirá una excepción.

Comprobar su suscripción a un servicio no usa ningún acierto restante del servicio. Cada vez que se realiza una llamada a un método del servicio, el número de aciertos restantes se almacenará en caché y este valor en caché será devuelto por getSubscriptionInfo() sin conectarse de nuevo al servicio. Para forzar a getSubscriptionInfo() a anular su caché y consultar la información de suscripción de nuevo, use getSubscriptionInfo(true).