https://github.com/kiriminaja/php
KiriminAja API Client for PHP - Pickup Request, Tracking, Mapping and Integration Tools
https://github.com/kiriminaja/php
codeigniter composer kiriminaja laravel packagist php php-library rest-api symfony
Last synced: 2 months ago
JSON representation
KiriminAja API Client for PHP - Pickup Request, Tracking, Mapping and Integration Tools
- Host: GitHub
- URL: https://github.com/kiriminaja/php
- Owner: kiriminaja
- License: mit
- Created: 2022-10-12T09:49:39.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2025-03-28T09:18:10.000Z (about 1 year ago)
- Last Synced: 2025-03-28T10:15:16.782Z (about 1 year ago)
- Topics: codeigniter, composer, kiriminaja, laravel, packagist, php, php-library, rest-api, symfony
- Language: PHP
- Homepage: https://developer.kiriminaja.com
- Size: 130 KB
- Stars: 11
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# KiriminAja PHP SDK
[](https://packagist.org/packages/kiriminaja/kiriminaja-php)
[](https://packagist.org/packages/kiriminaja/kiriminaja-php)
[](LICENSE)
Official PHP SDK for the [KiriminAja](https://kiriminaja.com) logistics API.
## Requirements
- PHP 8.1+
- ext-json
## Installation
```bash
composer require kiriminaja/kiriminaja-php
```
---
## Quick Start
Call `KiriminAjaConfig` once at app startup, then call any service method on the `KiriminAja` facade.
```php
use KiriminAja\Base\Config\KiriminAjaConfig;
use KiriminAja\Base\Config\Cache\Mode;
use KiriminAja\Services\KiriminAja;
KiriminAjaConfig::setMode(Mode::Staging)::setApiTokenKey('YOUR_API_KEY');
// Use any service
$provinces = KiriminAja::getProvince();
```
---
## Config Options
| Method | Description |
| -------------------------------------------- | ------------------------------------------------------- |
| `KiriminAjaConfig::setMode($mode)` | `Mode::Staging` or `Mode::Production` |
| `KiriminAjaConfig::setApiTokenKey($key)` | Your KiriminAja API key |
| `KiriminAjaConfig::setBaseUrl($url)` | Custom base URL (useful for proxy or self-hosted) |
| `KiriminAjaConfig::setCacheDirectory($path)` | Custom cache directory (useful if /tmp is not writable) |
| `KiriminAjaConfig::disableCache()` | Disable file-based caching entirely |
```php
// Custom cache directory
KiriminAjaConfig::setCacheDirectory(__DIR__ . '/kiriminaja-cache');
// Or disable caching entirely
KiriminAjaConfig::disableCache();
KiriminAjaConfig::setMode(Mode::Production)::setApiTokenKey('YOUR_API_KEY');
```
### Custom Base URL
If you need to route requests through a proxy or custom endpoint, set a custom base URL. This overrides the default URL resolved from the mode.
```php
KiriminAjaConfig::setMode(Mode::Production)
::setApiTokenKey('YOUR_API_KEY')
::setBaseUrl('https://proxy.example.com');
```
---
## Laravel Integration
The SDK auto-registers via Laravel package discovery — no manual provider registration needed.
### 1. Add to `config/services.php`
```php
'kiriminaja' => [
'mode' => env('KIRIMINAJA_MODE', 'staging'),
'api_key' => env('KIRIMINAJA_API_KEY', ''),
'base_url' => env('KIRIMINAJA_BASE_URL'),
'cache_store' => env('KIRIMINAJA_CACHE_STORE', 'laravel'),
'cache_prefix' => env('KIRIMINAJA_CACHE_PREFIX', 'kiriminaja:'),
],
```
### 2. Add to your `.env`
```env
KIRIMINAJA_MODE=staging
KIRIMINAJA_API_KEY=your-api-key-here
```
### 3. Use the SDK anywhere
```php
use KiriminAja\Services\KiriminAja;
$provinces = KiriminAja::getProvince();
```
### Config Reference (`services.kiriminaja`)
| Key | Env Variable | Default | Description |
| -------------- | ------------------------- | ------------- | ----------------------------------------------------- |
| `mode` | `KIRIMINAJA_MODE` | `staging` | `staging` or `production` |
| `api_key` | `KIRIMINAJA_API_KEY` | `""` | Your KiriminAja API key |
| `base_url` | `KIRIMINAJA_BASE_URL` | `null` | Custom base URL (overrides mode-based URL) |
| `cache_store` | `KIRIMINAJA_CACHE_STORE` | `laravel` | `laravel` (uses Laravel Cache) or `file` (file-based) |
| `cache_prefix` | `KIRIMINAJA_CACHE_PREFIX` | `kiriminaja:` | Cache key prefix (Laravel store only) |
---
## Services
### Address
```php
// List all provinces
KiriminAja::getProvince();
// Cities in a province (province_id)
KiriminAja::getCity(5);
// Districts in a city (city_id)
KiriminAja::getDistrict(12);
// Sub-districts in a district (kecamatan_id)
KiriminAja::getSubDistrict(77);
// Search districts by name
KiriminAja::getDistrictByName("jakarta");
```
---
### Coverage Area & Pricing
```php
use KiriminAja\Models\ShippingPriceData;
use KiriminAja\Models\ShippingPriceInstantData;
use KiriminAja\Models\ShippingFullPriceData;
// Express shipping rates
$data = new ShippingPriceData();
$data->origin = 1;
$data->destination = 2;
$data->weight = 1000; // grams
$data->item_value = 50000;
$data->insurance = 0;
$data->courier = ['jne', 'jnt'];
KiriminAja::getPrice($data);
// Instant (same-day) rates
$data = new ShippingPriceInstantData();
$data->service = ['grab_express', 'gosend'];
$data->item_price = 10000;
$data->origin = ['lat' => -6.2, 'long' => 106.8, 'address' => 'Jl. Sudirman No.1'];
$data->destination = ['lat' => -6.21, 'long' => 106.81, 'address' => 'Jl. Thamrin No.5'];
$data->weight = 1000;
$data->vehicle = 'motor'; // 'motor' or 'mobil'
$data->timezone = 'Asia/Jakarta';
KiriminAja::getPriceInstant($data);
// Full shipping price (all available couriers)
$data = new ShippingFullPriceData();
$data->origin = 1;
$data->destination = 2;
$data->weight = 1000;
KiriminAja::fullShippingPrice($data);
```
---
### Order — Express
```php
use KiriminAja\Models\RequestPickupData;
use KiriminAja\Models\PackageData;
// Track by order ID
KiriminAja::getTracking("ORDER123");
// Cancel shipment
KiriminAja::cancelShipment("AWB123456", "Customer request");
// Request pickup
$pickup = new RequestPickupData();
$pickup->address = "Jl. Jodipati No.29";
$pickup->phone = "08133345678";
$pickup->name = "Tokotries";
$pickup->kecamatan_id = 548;
$pickup->schedule = "2024-01-15 17:00:00";
$pickup->platform_name = "mitra";
$package = new PackageData();
$package->order_id = "YGL-000000019";
$package->destination_name = "Flag Test";
$package->destination_phone = "082223323333";
$package->destination_address = "Jl. Magelang KM 11";
$package->destination_kecamatan_id = 548;
$package->weight = 520;
$package->width = 8;
$package->height = 8;
$package->length = 8;
$package->item_value = 275000;
$package->shipping_cost = 65000;
$package->service = "jne";
$package->service_type = "REG";
$package->item_name = "Test item";
$package->package_type_id = 1;
$package->cod = 0;
$pickup->packages->add($package);
KiriminAja::requestPickup($pickup);
// Pickup schedules
KiriminAja::getSchedules();
```
---
### Order — Instant
```php
use KiriminAja\Models\RequestPickupInstantData;
use KiriminAja\Models\PackageInstantData;
// Request instant pickup
$pickup = new RequestPickupInstantData();
$pickup->service = "gosend";
$pickup->service_type = "instant";
$pickup->vehicle = "motor";
$pickup->order_prefix = "BDI";
$package = new PackageInstantData();
$package->origin_name = "Rizky";
$package->origin_phone = "081280045616";
$package->origin_lat = -7.854584;
$package->origin_long = 110.331154;
$package->origin_address = "Wirobrajan, Yogyakarta";
$package->origin_address_note = "Dekat Kantor";
$package->destination_name = "Okka";
$package->destination_phone = "081280045616";
$package->destination_lat = -7.776192;
$package->destination_long = 110.325053;
$package->destination_address = "Godean, Sleman";
$package->destination_address_note = "Dekat Pasar";
$package->shipping_price = 34000;
$package->item_name = "Barang 1";
$package->item_description = "Barang 1 Description";
$package->item_price = 20000;
$package->item_weight = 1000; // grams
KiriminAja::requestPickupInstant($pickup, $package);
// Track instant order
KiriminAja::getTrackingInstant("ORDER123");
// Find a new driver for an existing order
KiriminAja::findNewDriver("ORDER123");
// Cancel instant order
KiriminAja::cancelShipment("ORDER123", "", isInstant: true);
```
---
### Courier
```php
// List available couriers
KiriminAja::getCouriers();
// Courier groups
KiriminAja::getCourierGroups();
// Courier detail by code
KiriminAja::getCourierDetail("jne");
// Set whitelist expeditions
KiriminAja::setWhiteListExpedition(["jne_reg", "jne_yes"]);
```
---
### Preference
```php
// Set callback URL
KiriminAja::setCallback("https://example.com/webhook");
```
---
### Pickup Schedules
```php
KiriminAja::getSchedules();
```
---
### Payment
```php
// Get payment details (express)
KiriminAja::getPayment("PAY123");
// Get payment details (instant)
KiriminAja::getPayment("PAY123", isInstant: true);
```
---
## Contributing
For any requests, bugs, or comments, please open an [issue](https://github.com/kiriminaja/kiriminaja-php/issues) or [submit a pull request](https://github.com/kiriminaja/kiriminaja-php/pulls).
## Development
```bash
composer install # install dependencies
vendor/bin/phpunit tests # run tests
# or `make test`
```