farzai / thailand-post
2.0.0
2024-03-24 07:51 UTC
Requires
- php: ^8.2
- farzai/transport: ^1.3.0
- nyholm/psr7: ^1.4
- nyholm/psr7-server: ^1.0
- symfony/cache: ^7.0
Requires (Dev)
- laravel/pint: ^1.0
- pestphp/pest: ^2.15
- spatie/ray: ^1.28
README
PHP 库,用于跟踪泰国邮政的包裹,根据泰国邮政的 web APIs 构建 https://track.thailandpost.co.th/developerGuide。该库涵盖了泰国邮政的 REST APIs,以便于使用。
需求
- PHP 8.2 及以上
- 泰国邮政的 API 密钥(可在 https://track.thailandpost.co.th/dashboard 创建)
安装
通过 Composer 安装
使用以下命令通过 Composer 安装
composer require farzai/thailand-post
开始使用
在开始使用之前,您需要先获得泰国邮政的 API 密钥,并按照以下示例进行操作。如果您需要了解如何创建 API 密钥,请参阅 https://track.thailandpost.co.th/dashboard。
REST APIs 的部分
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 的其他命令
- 获取所需条码的状态信息
$response = $api->getItemsByBarcodes([ 'barcode' => ['EY145587896TH', 'RC338848854TH'], // Options 'status' => 'all', 'language' => 'TH', ]);
- 根据所需收据编号获取状态信息
$response = $api->getItemsByReceipts([ 'receiptNo' => ['RC338848854TH'], // Options 'status' => 'all', 'language' => 'TH', ]);
- 为使用 Rest APIs 创建访问令牌
$response = $api->generateAccessToken();
Webhook APIs 的部分
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
$response = $webhook->subscribeBarcodes([ 'barcode' => ['EY145587896TH', 'RC338848854TH'], // Options 'status' => 'all', 'language' => 'TH', 'req_previous_status' => true, ]);
- 为所需收据编号创建 Webhook
$response = $webhook->subscribeReceipts([ 'receiptNo' => ['RC338848854TH'], // Options 'status' => 'all', 'language' => 'TH', 'req_previous_status' => true, ]);
- 从配置文件跟踪状态
$response = $webhook->subscribeByProfile([ 'fullName' => 'John Doe', 'telephone' => '0123456789', // Options 'email' => 'jonh@email.com', 'nickname' => 'John', ]);
- 取消跟踪配置文件
$response = $webhook->unsubscribeByProfile([ 'uid' => '1234567890', 'ref' => '1234567890', ]);
测试
$ composer test
变更日志
请参阅 CHANGELOG 了解最近更改的详细信息。
贡献
请参阅 CONTRIBUTING 了解详细信息。
安全漏洞
请查看 我们的安全策略 了解如何报告安全漏洞。
致谢
许可证
MIT 许可证(MIT)。请参阅 许可证文件 了解更多信息。