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

v1.0.3 2025-12-20 09:31 UTC

This package is not auto-updated.

Last update: 2025-12-22 14:21:06 UTC


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 release
  • 1.1.0 โ†’ New features (backward-compatible)
  • 1.1.1 โ†’ Bug fixes
  • 2.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.