Para poder rastrear artículos a través de la API de Royal Mail deberá ser un titular de la cuenta de Royal Mail y haber aprobado el acceso a la API de seguimiento a través del portal de desarrolladores de Royal Mail en https://developer.royalmail.net/
composer require nomisoft/royal-mail-tracking-api
Necesitará el número de referencia de seguimiento del artículo del que desea recuperar detalles, así como su identificación del cliente, secreto del cliente y la identificación de la aplicación (todo disponible en el portal del desarrollador de Royal Mail)
use Nomisoft RoyalMailTrackingApi RoyalMail ;
use Nomisoft RoyalMailTrackingApi RoyalMailException ;
$ rm = RoyalMail :: init ( ' CLIENT_ID ' , ' CLIENT_SECRET ' , ' APP_ID ' );
try {
$ response = $ rm -> getSingleItemSummary ( ' XX12345678XX ' );
} catch ( SoapFault $ e ) {
echo $ e -> getMessage ();
} catch ( RoyalMailException $ e ) {
echo $ e -> getMessage () . ' - ' . $ e -> getCause ();
}
La respuesta devuelta es una matriz que contiene un objeto de fecha y hora, el estado y el texto de resumen
Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 06 - 01 12 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[status] => Delivered
[summary] => Item XX12345678XX was collected and signed for by the addressee on the 2016 - 06 - 01 from Kidderminster DO .
)
use Nomisoft RoyalMailTrackingApi RoyalMail ;
$ rm = RoyalMail :: init ( ' CLIENT_ID ' , ' CLIENT_SECRET ' , ' APP_ID ' );
$ response = $ rm -> getSingleItemHistory ( ' XX12345678XX ' );
La respuesta devuelta es una matriz multidimensional. Cada actualización del estado de entrega contiene un objeto de fecha y hora, la ubicación y el estado
Array
(
[ 0 ] => Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 06 - 01 12 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[location] => Kidderminster DO
[status] => Delivered
)
[ 1 ] => Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 05 - 31 15 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[location] => Kidderminster DO
[status] => We have your item
)
[ 2 ] => Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 05 - 31 12 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[location] => Kidderminster DO
[status] => Delivery attempted
)
[ 3 ] => Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 05 - 28 10 : 00 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[location] => Medway Mail Centre
[status] => It 's on its way.
)
)
use Nomisoft RoyalMailTrackingApi RoyalMail ;
$ rm = RoyalMail :: init ( ' CLIENT_ID ' , ' CLIENT_SECRET ' , ' APP_ID ' );
$ response = $ rm -> getMultiItemSummary ( array ( ' XX12345678XX ' , ' ZZ12345678ZZ ' ));
La respuesta devuelta es una matriz multidimensional con el número de referencia de seguimiento como clave. Cada elemento contiene un objeto de fecha y hora, el estado y el resumen
Array
(
[ XX12345678XX ] => Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 06 - 01 12 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[status] => Delivered
[summary] => Item XX12345678XX was collected and signed for by the addressee on the 2016 - 06 - 01 from Kidderminster DO .
)
[ ZZ12345678ZZ ] => Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 06 - 01 12 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[status] => Delivered
[summary] => We have a record of item ZZ12345678ZZ as being delivered from Fort William DO on 2016 - 06 - 01.
)
)
use Nomisoft RoyalMailTrackingApi RoyalMail ;
$ rm = RoyalMail :: init ( ' CLIENT_ID ' , ' CLIENT_SECRET ' , ' APP_ID ' );
$ response = $ rm -> getProofOfDelivery ( ' XX12345678XX ' );
La respuesta devuelta es una matriz que contiene un objeto de fecha y hora y el nombre de la persona que firmó para el paquete
Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 06 - 01 12 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[name] => Smith
)
Se lanza una excepción de RoyalMailException si se recibe una respuesta de error de la API. Llamar a la función getMessage () devolverá la descripción del error de Royal Mail. También hay una función GetCause () adicional que devolverá el valor del campo 'causa' devuelto por la API
try {
$ response = $ rm -> getSingleItemSummary ( ' XX12345678XX ' );
} catch ( RoyalMailException $ e ) {
echo $ e -> getMessage ();
echo $ e -> getCause ();
}
Si el artículo se entregó hace más de 30 días, es posible que vea lo siguiente impreso del código de muestra anterior
Tracking data are not available for barcode reference XX12345678XX
It is not possible to provide information about events that occurred more than 30 days ago