Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/parsilver/thailandpost-tracking-php
ติดตามสถานะการส่งสินค้าจากไปรษณีย์ไทยด้วย PHP
https://github.com/parsilver/thailandpost-tracking-php
ems php thailand thailandpost tracking
Last synced: 3 days ago
JSON representation
ติดตามสถานะการส่งสินค้าจากไปรษณีย์ไทยด้วย PHP
- Host: GitHub
- URL: https://github.com/parsilver/thailandpost-tracking-php
- Owner: parsilver
- License: mit
- Created: 2021-06-14T07:45:05.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2024-03-24T07:55:03.000Z (8 months ago)
- Last Synced: 2024-03-24T08:22:34.582Z (8 months ago)
- Topics: ems, php, thailand, thailandpost, tracking
- Language: PHP
- Homepage:
- Size: 291 KB
- Stars: 2
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# Thailand Post Tracking
![Example CLI](assets/codeimage-snippet.png)
[![Latest Version on Packagist](https://img.shields.io/packagist/v/farzai/thailand-post.svg?style=flat-square)](https://packagist.org/packages/farzai/thailand-post)
[![Tests](https://img.shields.io/github/actions/workflow/status/parsilver/thailandpost-tracking-php/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/parsilver/thailandpost-tracking-php/actions/workflows/run-tests.yml)
[![Total Downloads](https://img.shields.io/packagist/dt/farzai/thailand-post.svg?style=flat-square)](https://packagist.org/packages/farzai/thailand-post)PHP Library สำหรับ tracking พัสดุของไปรษณีย์ไทย
อ้างอิงจากเว็บ APIs ของไปรษณีย์ไทย https://track.thailandpost.co.th/developerGuide
ซึ่ง Library ตัวนี้ทำหน้าที่ครอบ REST APIs ของทางไปรษณีย์ไทยอีกทีนึงเพื่อสะดวกในการใช้งาน## สิ่งที่ต้องการ
- PHP 8.2 ขึ้นไป
- API Key จากไปรษณีย์ไทย (สามารถสร้างได้ที่ https://track.thailandpost.co.th/dashboard)## การติดตั้ง
### ติดตั้งผ่าน Composer
การติดตั้งผ่าน Composer โดยใช้คำสั่งด้านล่าง
```
composer require farzai/thailand-post
```## เริ่มต้นใช้งาน
ในการเริ่มต้นใช้งาน ท่านจำเป็นต้องมี API Key จากไปรษณีย์ไทยก่อน และนำมาใช้งานตามตัวอย่างด้านล่าง
หากท่านต้องการทราบวิธีการสร้าง API Key สามารถดูได้ที่ https://track.thailandpost.co.th/dashboard
![Example API Token](assets/screeenshot-dashboard.png)### ส่วนของ REST APIs
```php
use Farzai\ThaiPost\ClientBuilder;
use Farzai\ThaiPost\Endpoints\ApiEndpoint;// สร้างตัวเชื่อมต่อ api
// โดยใช้ ClientBuilder ที่เราสร้างขึ้นมา เพื่อใช้ในการตั้งค่าต่างๆ
$client = ClientBuilder::create()
// API Key ที่ได้มาจากการ generate ผ่านหน้าเว็บของไปรษณีย์ไทย
->setCredential('YOUR_API_KEY')// (Optional) ตั้งค่าที่จัดเก็บ Token ที่ได้มาจากการเรียก API
// โดยท่านต้อง Implement \Farzai\ThaiPost\Contracts\StorageRepositoryInterface ให้เรียบร้อย
// ->setStorage(new YourStorageRepository())// (Optional) ตั้งค่า Http Client ที่ท่านต้องการใช้งาน
// ->setHttpClient(new \GuzzleHttp\Client())// (Optional) ตั้งค่า Logger ที่ท่านต้องการใช้งาน
// ->setLogger(new \Monolog\Logger('thai-post'))// Build ตัวเชื่อมต่อ api
->build();// เรียกใช้งานตัวเชื่อมต่อ api
$api = new ApiEndpoint($client);try {
// ส่งคำร้องขอเรื่อง ดึงสถานะของ barcode
$response = $api->getItemsByBarcodes([
'barcode' => ['EY145587896TH', 'RC338848854TH'],
]);
} catch (InvalidApiTokenException $e) {
// กรณีที่ API Token ไม่ถูกต้อง
exit($e->getMessage());
}// คุณสามารถนำ json response มาใช้งานได้จากคำสั่งด้านล่างได้เลย
$array = $response->json();// หรือ ต้องการเข้าไปยัง path ของ json
$countNumber = $response->json('response.track_count.count_number');```
#### คำสั่งอื่นๆ ที่สามารถใช้งานได้ สำหรับ REST APIs
+ ดึงข้อมูลสถานะของ barcode ที่ต้องการ
```php
$response = $api->getItemsByBarcodes([
'barcode' => ['EY145587896TH', 'RC338848854TH'],// Options
'status' => 'all',
'language' => 'TH',
]);
```+ ดึงข้อมูลสถานะตามหมายเลขใบเสร็จที่ต้องการ
```php
$response = $api->getItemsByReceipts([
'receiptNo' => ['RC338848854TH'],// Options
'status' => 'all',
'language' => 'TH',
]);
```+ สร้าง Access Token สำหรับใช้งาน Rest APIs
```php
$response = $api->generateAccessToken();
```---
### ส่วนของ Webhook APIs
```php
use Farzai\ThaiPost\ClientBuilder;
use Farzai\ThaiPost\Endpoints\WebhookEndpoint;$client = ClientBuilder::create()
->setCredential('YOUR_API_KEY')
->build();$webhook = new WebhookEndpoint($client);
$response = $webhook->subscribeBarcodes([
'barcode' => ['EY145587896TH', 'RC338848854TH'],
]);// ตรวจสอบว่าทำงานถูกต้องหรือไม่
if ($response->isSuccessfull() && $response->json('status') === true) {
$returnedJson = $response->json();// Or
$message = $response->json('message');
$items = $response->json('response.items');
$trackCount = $response->json('response.track_count.count_number');
}```
#### คำสั่งอื่นๆ ที่สามารถใช้งานได้ สำหรับ Webhook APIs
+ สร้าง Webhook สำหรับติดตาม barcode ที่ต้องการ
```php
$response = $webhook->subscribeBarcodes([
'barcode' => ['EY145587896TH', 'RC338848854TH'],// Options
'status' => 'all',
'language' => 'TH',
'req_previous_status' => true,
]);
```+ สร้าง Webhook สำหรับติดตามหมายเลขใบเสร็จที่ต้องการ
```php
$response = $webhook->subscribeReceipts([
'receiptNo' => ['RC338848854TH'],// Options
'status' => 'all',
'language' => 'TH',
'req_previous_status' => true,
]);
```+ ติดตามสถานะจาก Profile
```php
$response = $webhook->subscribeByProfile([
'fullName' => 'John Doe',
'telephone' => '0123456789',// Options
'email' => '[email protected]',
'nickname' => 'John',
]);
```+ ยกเลิกการติดตาม Profile
```php
$response = $webhook->unsubscribeByProfile([
'uid' => '1234567890',
'ref' => '1234567890',
]);
```---
## Testing
```bash
$ composer test
```## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](https://github.com/farzai/.github/blob/main/CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- [parsilver](https://github.com/parsilver)
- [All Contributors](../../contributors)## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.