Чтобы иметь возможность отслеживать предметы через API Royal Mail, вам нужно стать владельцем учетной записи Royal Mail, и вы получите доступ к API отслеживания через портал разработчиков Royal Mail по адресу https://developer.royalmail.net/
composer require nomisoft/royal-mail-tracking-api
Вам понадобится ссылка на отслеживание элемента, который вы хотите получить, а также ваш идентификатор клиента, секрет клиента и идентификатор приложения (все доступны на портале Developer 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 ();
}
Возвращенный ответ - это массив, содержащий объект DateTime, статус и краткий текст
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 ' );
Возвращенный ответ является многомерным массивом. Каждое обновление статуса доставки содержит объект DateTime, местоположение и статус
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 ' ));
Возвращенный ответ представляет собой многомерный массив с номером отслеживания в качестве ключа. Каждый элемент содержит объект DateTime, статус и резюме
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 ' );
Возвращенный ответ - это массив, содержащий объект DateTime, и имя человека, подписавшего для посылки
Array
(
[datetime] => DateTime Object
(
[date] => 2016 - 06 - 01 12 : 30 : 00
[timezone_type] => 3
[timezone] => Europe / London
)
[name] => Smith
)
Исключение RoyalMailException бросается, если от API получен ответ на ошибку. Вызов функции getMessage () вернет описание ошибки Royal Mail. Есть также дополнительная функция getCause (), которая вернет значение поля «причины», возвращаемого API
try {
$ response = $ rm -> getSingleItemSummary ( ' XX12345678XX ' );
} catch ( RoyalMailException $ e ) {
echo $ e -> getMessage ();
echo $ e -> getCause ();
}
Если предмет был доставлен более 30 дней назад, вы можете увидеть следующее напечатано из приведенного выше примера кода
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