cw-alihyder / postex-laravel
Laravel 12 package for PostEx COD API integration
Installs: 40
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/cw-alihyder/postex-laravel
Requires
- php: ^8.1
- illuminate/contracts: ^9.0|^10.0|^11.0|^12.0
- illuminate/http: ^9.0|^10.0|^11.0|^12.0
README
roadmap.
๐ฆ PostEx Laravel SDK
Laravel package for PostEx COD API integration Supports order creation, delivery validation, tracking, payment status, pickup management, and more.
Compatible with Laravel 9, 10, 11 API Version: PostEx v4.1.9
๐ Features
- โ Check if a city/address is deliverable
- ๐ฆ Create COD orders
- ๐ Track orders (single & bulk)
- ๐งพ Generate airway bill & load sheet
- ๐ฌ Manage pickup addresses
- โ Cancel orders
- ๐ฐ Check payment & settlement status
- ๐ Shipper advice (retry / return)
- ๐ List orders & statuses
- ๐งฉ Laravel Facade support
- ๐ PSR-4, auto-discovery enabled
๐ Requirements
| Requirement | Version |
|---|---|
| PHP | โฅ 8.0 |
| Laravel | 9.x / 10.x / 11.x |
| PostEx API Token | Required |
๐ฅ Installation
Install via Composer:
composer require cw-alihyder/postex-laravel
โ๏ธ Configuration
Publish the config file:
php artisan vendor:publish --tag=postex-config
This will create:
config/postex.php
๐ Environment Variables
Add the following to your .env:
POSTEX_TOKEN=your_postex_api_token_here POSTEX_BASE_URL=https://api.postex.pk/services/integration/api
๐ง Usage Overview
You can use the package via:
- โ
Facade (
PostEx::) - โ Dependency Injection
๐ Check City Deliverability
use PostEx; $isDeliverable = PostEx::isCityDeliverable('Lahore'); if (!$isDeliverable) { throw new Exception('Delivery not available in this city'); }
๐ฆ Create Order (COD)
use PostEx; $response = PostEx::createOrder([ 'orderRefNumber' => 'ORD-10001', 'invoicePayment' => 2500, 'orderDetail' => '1x Mobile Phone', 'customerName' => 'Ali Khan', 'customerPhone' => '03001234567', 'deliveryAddress' => 'Model Town, Lahore', 'cityName' => 'Lahore', 'invoiceDivision' => 1, 'items' => 1, 'orderType' => 'Normal', // Normal | Reverse | Replacement ]); $trackingNumber = $response['dist']['trackingNumber'];
๐ Track Order
Single Tracking
PostEx::track('CX-XXXXXXXXXXX');
Bulk Tracking
PostEx::bulkTrack([ 'CX-XXXX1', 'CX-XXXX2', ]);
๐ฐ Payment Status
PostEx::paymentStatus('CX-XXXXXXXXXXX');
โ Cancel Order
PostEx::cancelOrder('CX-XXXXXXXXXXX');
๐ฌ Pickup Address Management
List Pickup Addresses
PostEx::listPickupAddresses('Lahore');
Create Pickup Address
PostEx::createPickupAddress([ 'address' => 'Warehouse #12', 'addressTypeId' => 2, // 1 Return, 2 Pickup 'cityName' => 'Lahore', 'contactPersonName' => 'Store Manager', 'phone1' => '03001234567', 'phone2' => '03007654321', ]);
๐งพ Generate Load Sheet
PostEx::generateLoadSheet([ 'CX-XXXX1', 'CX-XXXX2' ], 'Main Warehouse');
๐ Generate Airway Bill (PDF)
PostEx::getAirwayBill([ 'CX-XXXX1', 'CX-XXXX2' ]);
โ ๏ธ Max 10 tracking numbers per request (PostEx limitation)
๐ Shipper Advice
Save Advice
PostEx::saveShipperAdvice( 'CX-XXXXXXXXXXX', 1, // 1 = Return Requested, 2 = Retry Attempt 'Customer not available' );
Get Advice History
PostEx::getShipperAdvice('CX-XXXXXXXXXXX');
๐ List Orders
PostEx::listOrders( 0, // 0 = All statuses '2025-01-01', '2025-01-31' );
๐งช Error Handling
All API responses follow PostEx standard format:
[ 'statusCode' => '200', 'statusMessage' => 'SUCCESSFULLY OPERATED', 'dist' => [...] ]
You should always check statusCode before trusting the response.
๐งพ Versioning Policy (SemVer)
This package follows Semantic Versioning:
MAJOR.MINOR.PATCH
Examples:
1.0.0โ Initial stable release1.1.0โ New features (backward-compatible)1.1.1โ Bug fixes2.0.0โ Breaking changes
๐บ Roadmap
- Automatic retries with backoff
- Laravel logging integration
- Queue-ready async support
- Unit & feature tests
- Rate-limit handling
- Webhook handler (future)
๐งโ๐ป Author
Ali Hyder ๐ง cw.alihyder@gmail.com
๐ License
MIT License ยฉ 2025 You are free to use, modify, and distribute.
โญ Support
If this package helps you, please โญ star the repository on GitHub.