يرجى إثارة مشكلة في مستودع GitHub إذا كنت قادرًا، وإذا لم يكن الأمر كذلك فلا تتردد في الاتصال بي.
نرحب بطلبات السحب لإصلاح الأخطاء أو التغييرات المحتملة!
توجد في الجزء السفلي من هذا الملف التمهيدي قائمة ببعض رموز الأحداث وتعريفها التقريبي.
مطلوب PHP 8.1 أو أعلى.
لتثبيت الحزمة عبر Composer:
composer require elliotjreed/royal-mail-tracking
تتوفر ثلاث وسائل لجلب بيانات التتبع:
Events
: للحصول على معلومات مفصلة والتاريخ الكامل لرقم تتبع واحد؛Signature
: بيانات التوقيع (بما في ذلك بيانات الصورة - إما PNG بتشفير Base64 أو SVG)؛Summary
: لأحدث حدث لأرقام التتبع المتعددة.وترد أدناه تفاصيل كل منها، مع تضمين الأمثلة.
يتم توفير معلومات حول معالجة الأخطاء أسفل معلومات Events
Signature
Summary
(وهي تستحق القراءة حيث يتم التعامل مع أخطاء Summary
بشكل مختلف عن أخطاء Events
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 ' )
));
يتمثل سلوك عملية الأحداث في توفير سجل المسارات لعنصر بريد واحد.
إرجاع الملخص وبيانات تعريف التوقيع ونافذة التسليم المقدرة والأحداث لرقم التتبع المقدم.
$ 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 ();
سيتم إخراج استجابة البريد الملكي كـ 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 ();
سيتم إخراج استجابة تتبع البريد الملكي بتنسيق 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
}
يتمثل سلوك العملية الموجزة في السماح للعملاء بالحصول على أحدث بيانات التتبع لعنصر بريد.
تقوم هذه العملية بإرجاع ملخص واحد أو أكثر من أرقام التتبع المقدمة في الطلب.
تسمح هذه العملية فقط بتوفير 30 رقم تتبع كحد أقصى في الأسلوب ->setTrackingNumbers()
(على سبيل المثال ->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 ();
سيتم إخراج استجابة البريد الملكي كـ 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" :