{"id":15939538,"url":"https://github.com/afiqiqmal/parcel-track","last_synced_at":"2025-06-17T00:38:52.401Z","repository":{"id":37548283,"uuid":"131805120","full_name":"afiqiqmal/parcel-track","owner":"afiqiqmal","description":"Parcel Tracker Packagist for Local Malaysia Parcel Courier . ","archived":false,"fork":false,"pushed_at":"2023-04-19T21:25:07.000Z","size":135,"stargazers_count":17,"open_issues_count":2,"forks_count":9,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-24T11:39:56.781Z","etag":null,"topics":["abx-express","api","citylink","courier","dhl-express","fedex","gdexpress","hacktoberfest","lazada","library","malaysia","open-source","parcel","php","poslaju","poslaju-php","skynet","tracker","travis-ci"],"latest_commit_sha":null,"homepage":"https://packagist.org/packages/afiqiqmal/parcel-track","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/afiqiqmal.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-05-02T06:00:57.000Z","updated_at":"2025-02-20T10:41:51.000Z","dependencies_parsed_at":"2022-08-21T07:20:39.383Z","dependency_job_id":null,"html_url":"https://github.com/afiqiqmal/parcel-track","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"purl":"pkg:github/afiqiqmal/parcel-track","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afiqiqmal%2Fparcel-track","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afiqiqmal%2Fparcel-track/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afiqiqmal%2Fparcel-track/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afiqiqmal%2Fparcel-track/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/afiqiqmal","download_url":"https://codeload.github.com/afiqiqmal/parcel-track/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/afiqiqmal%2Fparcel-track/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":260268635,"owners_count":22983601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abx-express","api","citylink","courier","dhl-express","fedex","gdexpress","hacktoberfest","lazada","library","malaysia","open-source","parcel","php","poslaju","poslaju-php","skynet","tracker","travis-ci"],"created_at":"2024-10-07T06:04:58.884Z","updated_at":"2025-06-17T00:38:52.363Z","avatar_url":"https://github.com/afiqiqmal.png","language":"PHP","funding_links":["https://www.paypal.com/paypalme/mhi9388?locale.x=en_US"],"categories":[],"sub_categories":[],"readme":"# Parcel Tracker\n\n[![Build Status](https://travis-ci.org/afiqiqmal/parcel-track.svg?branch=master)](https://travis-ci.org/afiqiqmal/parcel-track)\n[![Coverage](https://img.shields.io/codecov/c/github/afiqiqmal/parcel-track.svg)](https://codecov.io/gh/afiqiqmal/parcel-track)\n[![Packagist](https://img.shields.io/packagist/dt/afiqiqmal/parcel-track.svg)](https://packagist.org/packages/afiqiqmal/parcel-track)\n[![Packagist](https://img.shields.io/packagist/v/afiqiqmal/parcel-track.svg)](https://packagist.org/packages/afiqiqmal/parcel-track)\n[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/paypalme/mhi9388?locale.x=en_US)\n\nSimple Parcel Tracker for Local Parcel Courier. \nBasically it just crawl the courier website or existing API. Need time to time to monitor web/api changes before failure happen.\n\n\u003cbr\u003e\n\nBTW, Currently available (Successfully Scraped)\n1. [Post Laju](https://www.poslaju.com.my/)\n2. [GDEX](http://www.gdexpress.com/malaysia/home/)\n3. [ABX Express](http://www.abxexpress.com.my/)\n4. [DHL Express](https://www.logistics.dhl/my-en/home.html)\n5. [DHL E-Commerce](https://www.logistics.dhl/my-en/home/our-divisions/ecommerce.html)\n6. [SkyNet Express](http://www.skynet.com.my/)\n7. [CityLink Express](http://www.citylinkexpress.com/MY/Consignment.aspx)\n8. [FedEx Express](https://www.fedex.com/my/)\n9. [LEL Express](http://www.lex.com.my/)\n10. [KTM Distribution Sdn Bhd](http://www.ktmd.com.my/tracking/)\n11. [UPS](https://wwwapps.ups.com/WebTracking/track)\n\n\nTested in PHP 7.1 Only\n\n## Installation\n\n#### Step 1: Install from composer\n```\ncomposer require afiqiqmal/parcel-track\n```\nAlternatively, you can specify as a dependency in your project's existing composer.json file\n```\n{\n   \"require\": {\n      \"afiqiqmal/parcel-tracker\": \"^1.0\"\n   }\n}\n```\n\n## Usage\nAfter installing, you need to require Composer's autoloader and add your code.\n\n```php\nrequire_once __DIR__ .'/../vendor/autoload.php';\n```\n\n#### Sample for Post Laju\n```php\n$data = parcel_track()\n\t-\u003epostLaju()\n\t-\u003esetTrackingNumber(\"ER157080065MY\")\n\t-\u003efetch();\n```\n\n#### Sample for GDex\n```php\n$data = parcel_track()\n\t-\u003egdex()\n\t-\u003esetTrackingNumber(\"4941410530\")\n\t-\u003efetch();\n```\n\n#### Sample for Abx Express\n```php\n$data = parcel_track()\n\t-\u003eabxExpress()\n\t-\u003esetTrackingNumber(\"EZP843055940197\")\n\t-\u003efetch();\n```\n\n#### Sample for DHL Express\n```php\n$data = parcel_track()\n\t-\u003edhlExpress()\n\t-\u003esetTrackingNumber(\"5176011131\")\n\t-\u003efetch();\n```\n\n#### Sample for Check Which Carrier Tracking Number belongs to\n```php\n$data = parcel_track()\n\t-\u003esetTrackingNumber(\"5176011131\")\n\t-\u003echeckCourier();\n```\n\n### Method\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003cth\u003eMethod\u003c/th\u003e\n        \u003cth\u003eParam\u003c/th\u003e\n        \u003cth\u003eDescription\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003epostLaju()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003ePost Laju Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eabxExpress()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003ePost Laju Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003edhlExpress()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eDHL Express Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003edhlCommerce()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eDHL E-Commerce Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003egdex()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eGD Express Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eskyNet()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eSkyNet Express Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003ecityLink()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eCity Link Express Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003efedEx()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eFedEx Express Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003elelExpress()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eLazada E-Logistic Courier\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003ektmDelivery()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eKTM Distribution Sdn Bhd\u003c/td\u003e\n    \u003c/tr\u003e \n    \u003ctr\u003e\n        \u003ctd\u003eups()\u003c/td\u003e\n        \u003ctd\u003e\u003c/td\u003e\n        \u003ctd\u003eUnited Parcel Service Courier\u003c/td\u003e\n    \u003c/tr\u003e    \n    \u003ctr\u003e\n        \u003ctd\u003esetTrackingNumber($refNumber)\u003c/td\u003e\n        \u003ctd\u003e\u003ccode\u003eString\u003c/code\u003e\u003c/td\u003e\n        \u003ctd\u003eEnter the tracking number\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n\n### Result\n\n##### Checking Result\nFor checking which carrier response like below:\n```json\n{\n    \"code\": 200,\n    \"error\": false,\n    \"possible_carrier\": [\n        \"ABX Express Sdn Bhd\",\n        \"City Link Express\"\n    ],\n    \"generated_at\": \"2018-05-14 08:53:35\",\n    \"footer\": {\n        \"developer\": {\n            \"name\": \"Hafiq\",\n            \"homepage\": \"https://github.com/afiqiqmal\"\n        }\n    }\n}\n\n```\n\n##### Tracker Result\nYou should getting data tracker similarly like below:\n```json\n{\n    \"code\": 200,\n    \"error\": false,\n    \"tracker\": {\n        \"tracking_number\": \"4941410530\",\n        \"provider\": \"gdex\",\n        \"delivered\": true,\n        \"checkpoints\": [\n            {\n                \"date\": \"2016-11-30 17:41:10\",\n                \"timestamp\": 1480527670,\n                \"process\": \"Outbound from KBR station\",\n                \"type\": \"item_received\",\n                \"event\": \"Kota Bharu\"\n            },\n            {\n                \"date\": \"2016-11-30 17:47:00\",\n                \"timestamp\": 1480528020,\n                \"process\": \"Picked up by courier\",\n                \"type\": \"dispatch\",\n                \"event\": \"Kota Bharu\"\n            },\n            {\n                \"date\": \"2016-12-01 03:25:11\",\n                \"timestamp\": 1480562711,\n                \"process\": \"In transit\",\n                \"type\": \"facility_process\",\n                \"event\": \"Petaling Jaya\"\n            },\n            {\n                \"date\": \"2016-12-01 10:00:16\",\n                \"timestamp\": 1480586416,\n                \"process\": \"Inbound to JHB station\",\n                \"type\": \"facility_process\",\n                \"event\": \"Johor Bharu\"\n            },\n            {\n                \"date\": \"2016-12-02 10:10:00\",\n                \"timestamp\": 1480673400,\n                \"process\": \"Delivered\",\n                \"type\": \"delivered\",\n                \"event\": \"Sungai Tiram\"\n            }\n        ]\n    },\n    \"generated_at\": \"2018-05-03 02:07:20\",\n    \"footer\": {\n        \"source\": \"GD Express Sdn Bhd\",\n        \"developer\": {\n            \"name\": \"Hafiq\",\n            \"homepage\": \"https://github.com/afiqiqmal\"\n        }\n    }\n}\n```\n\n## Todo\n- Struggling for other Parcel Data\n- Keep up to date if any parcel data changes\n\n## Issue\n- If Issue happen like the api always return empty [] after cross check with real site, just let me know =)\n\n\u003cbr\u003e\nPftt.. I just don't know why, the Travis CI is failed. It because of `gnutls_handshake() failed`. In my local env, all Test Unit \u003cfont style=\"color: green\"\u003ePassed\u003c/font\u003e . I disabled it first because always failing on travis-ci.org =)\n\u003cbr\u003e\n## ChangeLog\n- See changelog.md\n\n## License\nLicensed under the [MIT license](http://opensource.org/licenses/MIT)\n\n\n### Donate\n\u003ca href=\"https://www.paypal.com/paypalme/mhi9388?locale.x=en_US\"\u003e\u003cimg src=\"https://i.imgur.com/Y2gqr2j.png\" height=\"40\"\u003e\u003c/a\u003e  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafiqiqmal%2Fparcel-track","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fafiqiqmal%2Fparcel-track","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fafiqiqmal%2Fparcel-track/lists"}