Levante um problema no repositório GitHub, se puder; caso contrário, sinta-se à vontade para entrar em contato comigo.
Solicitações pull para correções de bugs ou possíveis alterações são bem-vindas!
No final deste leia-me há uma lista de alguns dos códigos de eventos e sua definição aproximada.
É necessário PHP 8.1 ou superior.
Para instalar o pacote via Composer:
composer require elliotjreed/royal-mail-tracking
Estão disponíveis três meios de obter dados de rastreamento:
Events
: para informações detalhadas e histórico completo de um único número de rastreamento;Signature
: os dados da assinatura (incluindo dados de imagem - PNG codificado em base64 ou SVG);Summary
: para o evento mais recente para vários números de rastreamento.Os detalhes de cada um estão descritos abaixo, com exemplos incluídos.
As informações sobre o tratamento de erros são fornecidas abaixo das informações Events
, Signature
e Summary
(e vale a pena ler, pois os erros Summary
são tratados de maneira diferente dos erros Events
e Summary
).
$ tracking = ( new ElliotJReed RoyalMail Tracking Events (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 ' ,
true , // Optional, when true (default: true) exceptions will be thrown for tracking errors
true , // Optional, when true (default: true) exceptions will be thrown for technical (eg. 500 HTTP response) errors
' https://api.royalmail.net/mailpieces/v2 ' // Optional , when set the default API endpoint can be overridden (default: ' https://api.royalmail.net/mailpieces/v2 ' )
));
$ signature = ( new ElliotJReed RoyalMail Tracking Signature (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 ' ,
true , // Optional, when true (default: true) exceptions will be thrown for tracking errors
true , // Optional, when true (default: true) exceptions will be thrown for technical (eg. 500 HTTP response) errors
' https://api.royalmail.net/mailpieces/v2 ' // Optional , when set the default API endpoint can be overridden (default: ' https://api.royalmail.net/mailpieces/v2 ' )
));
$ summary = ( new ElliotJReed RoyalMail Tracking Summary (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 ' ,
true , // Optional, when true (default: true) exceptions will be thrown for tracking errors
true , // Optional, when true (default: true) exceptions will be thrown for technical (eg. 500 HTTP response) errors
' https://api.royalmail.net/mailpieces/v2 ' // Optional , when set the default API endpoint can be overridden (default: ' https://api.royalmail.net/mailpieces/v2 ' )
));
O comportamento da operação de eventos é fornecer um histórico de rastreamentos para um único item de correio.
Retorna o resumo, metadados de assinatura, janela de entrega estimada e eventos para um número de rastreamento fornecido.
$ tracking = ( new ElliotJReed RoyalMail Tracking Events (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 '
));
$ mailPieces = $ tracking -> setTrackingNumber ( ' AB1234567890GB ' )-> getResponse ()-> getMailPieces ();
$ mailPieces -> getMailPieceId (); // 090367574000000FE1E1B
$ mailPieces -> getCarrierShortName (); // RM
$ mailPieces -> getCarrierFullName (); // Royal Mail Group Ltd
$ summary = $ mailPieces -> getSummary ();
$ summary -> getUniqueItemId (); // 090367574000000FE1E1B
$ summary -> getOneDBarcode (); // FQ087430672GB
$ summary -> getProductId (); // SD2
$ summary -> getProductName (); // Special Delivery Guaranteed
$ summary -> getProductDescription (); // Our guaranteed next day service with tracking and a signature on delivery
$ summary -> getProductCategory (); // NON-INTERNATIONAL
$ summary -> getDestinationCountryCode (); // GBR
$ summary -> getDestinationCountryName (); // United Kingdom of Great Britain and Northern Ireland
$ summary -> getOriginCountryCode (); // GBR
$ summary -> getOriginCountryName (); // United Kingdom of Great Britain and Northern Ireland
$ summary -> getLastEventCode (); // EVNMI
$ summary -> getLastEventName (); // Forwarded - Mis-sort
$ summary -> getLastEventDateTime (); // new DateTimeImmutable('2016-10-20T10:04:00+01:00')
$ summary -> getLastEventLocationName (); // Stafford DO
$ summary -> getStatusDescription (); // It is being redirected
$ summary -> getStatusCategory (); // IN TRANSIT
$ summary -> getStatusHelpText (); // The item is in transit
$ summary -> getSummaryLine (); // Item FQ087430672GB was forwarded to the Delivery Office on 2016-10-20.
$ internationalPostalProvider = $ summary -> getInternationalPostalProvider ();
$ internationalPostalProvider -> getUrl (); // https://www.royalmail.com/track-your-item
$ internationalPostalProvider -> getTitle (); // Royal Mail Group Ltd
$ internationalPostalProvider -> getDescription (); // Royal Mail Group Ltd
$ signature = $ mailPieces -> getSignature ();
$ signature -> getRecipientName (); // Elliot
$ signature -> getSignatureDateTime (); // new DateTimeImmutable('2016-10-20T10:04:00+01:00')
$ signature -> getImageId (); // 001234
$ estimatedDelivery = $ mailPieces -> getEstimatedDelivery ();
$ estimatedDelivery -> getDate (); // new DateTimeImmutable('2017-02-20T00:00:00+00:00')
$ estimatedDelivery -> getStartOfEstimatedWindow (); // new DateTimeImmutable('2017-02-20T08:00:00+01:00')
$ estimatedDelivery -> getEndOfEstimatedWindow (); // new DateTimeImmutable('2017-02-20T11:00:00+01:00')
$ events = $ mailPieces -> getEvents ();
$ event = $ events [ 0 ];
$ event -> getEventCode (); // EVNMI
$ event -> getEventName (); // Forwarded - Mis-sort
$ event -> getEventDateTime (); // new DateTimeImmutable('2016-10-20T10:04:00+01:00')
$ event -> getLocationName (); // Stafford DO
$ linkSummary = $ mailPieces -> getLinks ()-> getSummary ();
$ linkSummary -> getHref (); // /mailpieces/v2/summary?mailPieceId=090367574000000FE1E1B
$ linkSummary -> getTitle (); // Summary
$ linkSummary -> getDescription (); // Get summary
$ linkSignature = $ mailPieces -> getLinks ()-> getSignature ();
$ linkSignature -> getHref (); // /mailpieces/v2/090367574000000FE1E1B/signature
$ linkSignature -> getTitle (); // Signature
$ linkSignature -> getDescription (); // Get signature
$ linkRedelivery = $ mailPieces -> getLinks ()-> getRedelivery ();
$ linkRedelivery -> getHref (); // /personal/receiving-mail/redelivery
$ linkRedelivery -> getTitle (); // Redelivery
$ linkRedelivery -> getDescription (); // Book a redelivery
$ tracking = ( new ElliotJReed RoyalMail Tracking Events (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 '
));
echo $ tracking -> setTrackingNumber ( ' AB1234567890GB ' )-> asJson ();
Produziria a resposta do Royal Mail como JSON:
{
"errors" : [],
"httpCode" : null ,
"httpMessage" : null ,
"mailPieces" : {
"carrierFullName" : " Royal Mail Group Ltd " ,
"carrierShortName" : " RM " ,
"estimatedDelivery" : {
"date" : " 2017-02-20T00:00:00+00:00 " ,
"endOfEstimatedWindow" : " 2017-02-20T11:00:00+01:00 " ,
"startOfEstimatedWindow" : " 2017-02-20T08:00:00+01:00 "
},
"events" : [
{
"eventCode" : " EVNMI " ,
"eventDateTime" : " 2016-10-20T10:04:00+01:00 " ,
"eventName" : " Forwarded - Mis-sort " ,
"locationName" : " Stafford DO "
}
],
"links" : {
"redelivery" : {
"description" : " Book a redelivery " ,
"href" : " /personal/receiving-mail/redelivery " ,
"title" : " Redelivery "
},
"signature" : {
"description" : " Get signature " ,
"href" : " /mailpieces/v2/090367574000000FE1E1B/signature " ,
"title" : " Signature "
},
"summary" : {
"description" : " Get summary " ,
"href" : " /mailpieces/v2/summary?mailPieceId=090367574000000FE1E1B " ,
"title" : " Summary "
}
},
"mailPieceId" : " 090367574000000FE1E1B " ,
"signature" : {
"imageId" : " 001234 " ,
"recipientName" : " Elliot " ,
"signatureDateTime" : " 2016-10-20T10:04:00+01:00 "
},
"summary" : {
"destinationCountryCode" : " GBR " ,
"destinationCountryName" : " United Kingdom of Great Britain and Northern Ireland " ,
"internationalPostalProvider" : {
"description" : " Royal Mail Group Ltd " ,
"title" : " Royal Mail Group Ltd " ,
"url" : " https://www.royalmail.com/track-your-item "
},
"lastEventCode" : " EVNMI " ,
"lastEventDateTime" : " 2016-10-20T10:04:00+01:00 " ,
"lastEventLocationName" : " Stafford DO " ,
"lastEventName" : " Forwarded - Mis-sort " ,
"oneDBarcode" : " FQ087430672GB " ,
"originCountryCode" : " GBR " ,
"originCountryName" : " United Kingdom of Great Britain and Northern Ireland " ,
"productCategory" : " NON-INTERNATIONAL " ,
"productDescription" : " Our guaranteed next day service with tracking and a signature on delivery " ,
"productId" : " SD2 " ,
"productName" : " Special Delivery Guaranteed " ,
"statusCategory" : " IN TRANSIT " ,
"statusDescription" : " It is being redirected " ,
"statusHelpText" : " The item is in transit " ,
"summaryLine" : " Item FQ087430672GB was forwarded to the Delivery Office on 2016-10-20. " ,
"uniqueItemId" : " 090367574000000FE1E1B "
}
},
"moreInformation" : null
}
$ tracking = ( new ElliotJReed RoyalMail Tracking Signature (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 '
));
$ mailPieces = $ tracking -> setTrackingNumber ( ' AB1234567890GB ' )-> getResponse ()-> getMailPieces ();
$ mailPieces -> getMailPieceId (); // 090367574000000FE1E1B
$ mailPieces -> getCarrierShortName (); // RM
$ mailPieces -> getCarrierFullName (); // Royal Mail Group Ltd
$ signature = $ mailPieces -> getSignature ();
$ signature -> getRecipientName (); // Elliot
$ signature -> getSignatureDateTime (); // new DateTimeImmutable('2017-03-30T16:15:00+01:00')
$ signature -> getImageId (); // 001234
$ signature -> getOneDBarcode (); // FQ087430672GB
$ signature -> getHeight (); // 530
$ signature -> getWidth (); // 660
$ signature -> getUniqueItemId (); // 090367574000000FE1E1B
$ signature -> getImageFormat (); // image/svg+xml
$ signature -> getImage (); // <svg></svg>
$ events = $ mailPieces -> getLinks ()-> getEvents ();
$ events -> getHref (); // /mailpieces/v2/FQ087430672GB/events
$ events -> getTitle (); // Events
$ events -> getDescription (); // Get events
$ linkSummary = $ mailPieces -> getLinks ()-> getSummary ();
$ linkSummary -> getHref (); // /mailpieces/v2/summary?mailPieceId=090367574000000FE1E1B
$ linkSummary -> getTitle (); // Summary
$ linkSummary -> getDescription (); // Get summary
$ tracking = ( new ElliotJReed RoyalMail Tracking Signature (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 '
));
echo $ tracking -> setTrackingNumber ( ' AB1234567890GB ' )-> asJson ();
Produziria a resposta de rastreamento do Royal Mail como JSON:
{
"errors" : [],
"httpCode" : null ,
"httpMessage" : null ,
"mailPieces" : {
"carrierFullName" : " Royal Mail Group Ltd " ,
"carrierShortName" : " RM " ,
"links" : {
"events" : {
"description" : " Get events " ,
"href" : " /mailpieces/v2/FQ087430672GB/events " ,
"title" : " Events "
},
"summary" : {
"description" : " Get summary " ,
"href" : " /mailpieces/v2/summary?mailPieceId=090367574000000FE1E1B " ,
"title" : " Summary "
}
},
"mailPieceId" : " 090367574000000FE1E1B " ,
"signature" : {
"height" : 530 ,
"image" : " <svg></svg> " ,
"imageFormat" : " image/svg+xml " ,
"imageId" : " 001234 " ,
"oneDBarcode" : " FQ087430672GB " ,
"recipientName" : " Elliot " ,
"signatureDateTime" : " 2017-03-30T16:15:00+01:00 " ,
"uniqueItemId" : " 090367574000000FE1E1B " ,
"width" : 660
}
},
"moreInformation" : null
}
O comportamento da operação de resumo é permitir que os clientes obtenham os dados de rastreamento mais recentes de um item de correspondência.
Esta operação retorna o resumo de um ou mais números de rastreamento fornecidos na solicitação.
Esta operação permite apenas que um máximo de 30 números de rastreamento sejam fornecidos no método ->setTrackingNumbers()
(por exemplo, ->setTrackingNumbers(['AB0123456789GB', 'CD0123456789GB'])
).
$ summary = ( new ElliotJReed RoyalMail Tracking Summary (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 '
));
$ mailPieces = $ summary -> setTrackingNumbers ( ' AB1234567890GB ' , ' CD1234567890GB ' )-> getResponse ()-> getMailPieces ();
$ firstMailPieces = $ mailPieces [ 0 ];
$ firstMailPieces -> getMailPieceId (); // 090367574000000FE1E1B
$ firstMailPieces -> getCarrierShortName (); // RM
$ firstMailPieces -> getCarrierFullName (); // Royal Mail Group Ltd
$ summary = $ firstMailPieces -> getSummary ();
$ summary -> getUniqueItemId (); // 090367574000000FE1E1B
$ summary -> getOneDBarcode (); // FQ087430672GB
$ summary -> getProductId (); // SD2
$ summary -> getProductName (); // Special Delivery Guaranteed
$ summary -> getProductDescription (); // Our guaranteed next day service with tracking and a signature on delivery
$ summary -> getProductCategory (); // NON-INTERNATIONAL
$ summary -> getDestinationCountryCode (); // GBR
$ summary -> getDestinationCountryName (); // United Kingdom of Great Britain and Northern Ireland
$ summary -> getOriginCountryCode (); // GBR
$ summary -> getOriginCountryName (); // United Kingdom of Great Britain and Northern Ireland
$ summary -> getLastEventCode (); // EVNMI
$ summary -> getLastEventName (); // Forwarded - Mis-sort
$ summary -> getLastEventDateTime (); // new DateTimeImmutable('2016-10-20T10:04:00+01:00')
$ summary -> getLastEventLocationName (); // Stafford DO
$ summary -> getStatusDescription (); // It is being redirected
$ summary -> getStatusCategory (); // IN TRANSIT
$ summary -> getStatusHelpText (); // The item is in transit
$ summary -> getSummaryLine (); // Item FQ087430672GB was forwarded to the Delivery Office on 2016-10-20.
$ internationalPostalProvider = $ summary -> getInternationalPostalProvider ();
$ internationalPostalProvider -> getUrl (); // https://www.royalmail.com/track-your-item
$ internationalPostalProvider -> getTitle (); // Royal Mail Group Ltd
$ internationalPostalProvider -> getDescription (); // Royal Mail Group Ltd
$ events = $ firstMailPieces -> getLinks ()-> getEvents ();
$ events -> getHref (); // /mailpieces/v2/FQ087430672GB/events
$ events -> getTitle (); // Events
$ events -> getDescription (); // Get events
$ error = $ firstMailPieces -> getError ();
$ error -> getErrorCode (); // E1142
$ error -> getErrorDescription (); // Barcode reference $mailPieceId isn't recognised
$ error -> getErrorCause (); // A mail item with that barcode cannot be located
$ error -> getErrorResolution (); // Check barcode and resubmit
$ summary = ( new ElliotJReed RoyalMail Tracking Summary (
new GuzzleHttp Client (),
' aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee ' ,
' 12345678901234567890123456789012345678901234567890 '
));
echo $ summary -> asJson ();
Produziria a resposta do Royal Mail como JSON:
{
"errors" : [],
"httpCode" : null ,
"httpMessage" : null ,
"mailPieces" : [
{
"carrierFullName" : " Royal Mail Group Ltd " ,
"carrierShortName" : " RM " ,
"error" : {
"errorCause" : " A mail item with that barcode cannot be located " ,
"errorCode" : " E1142 " ,
"errorDescription" : " Barcode reference mailPieceId is not recognised " ,
"errorResolution" : " Check barcode and resubmit "
},
"links" : {
"events" : {
"description" : " Get events " ,
"href" : " /mailpieces/v2/FQ087430672GB/events " ,
"title" : " Events "
}
},
"mailPieceId" : " 090367574000000FE1E1B " ,
"summary" : {
"destinationCountryCode" : " GBR " ,
"destinationCountryName" : " United Kingdom of Great Britain and Northern Ireland " ,
"internationalPostalProvider" : {
"description" : " Royal Mail Group Ltd " ,
"title" :