Awesome
ONWAY Integration for Laravel
Table of Contents
Installation
To get started, you need to install package:
composer require zgabievi/laravel-onway
If your laravel version is older than 5.5, then add this to your service providers in config/app.php:
'providers' => [
...
Zorb\Onway\OnwayServiceProvider::class,
...
];
You can publish config file using this command:
php artisan vendor:publish --provider="Zorb\Onway\OnwayServiceProvider"
This command will copy config file for you.
Usage
Delivery
Delivery request is done in two parts:
- Start delivery process and get order id from provider
- Confirm delivery process by passing order id
use Zorb\Onway\Exceptions\OnwayRequestException;
use Zorb\Onway\Enums\DeliveryZone;
use Zorb\Onway\Facades\Onway;
class DeliveryController extends Controller
{
//
public function __invoke()
{
// generate locale order id
$order_id = 1;
// generate data to deliver from
$from_location = [
'ContactName' => 'ჯონ დო',
'CompanyName' => 'შპს აქმე',
'AddressLine1' => 'რუსთაველის 52ა',
'Email' => 'john.doe@email.com',
'Phone' => '995511000000',
'Zone' => [
'ID' => DeliveryZone::Tbilisi
]
];
// generate data to deliver to
$to_location = [
'ContactName' => 'ჯეინ დო',
'CompanyName' => '',
'AddressLine1' => 'ცოტნე დადიანის 1ბ',
'Email' => 'jane.doe@example.com',
'Phone' => '995511000001',
'City' => 'თბილისი'
];
// approximate weight of items
$weight = 1.5;
// list of items that will be delivered
$products = ['წიგნი', 'სახატავები', 'ქუდი'];
// quantity of items set
$quantity = 1;
try {
$result = Onway::start($order_id, $from_location, $to_location, $weight, $products, $quantity);
if ($result->order_id) {
$response = Onway::confirm($order_id, 'DECLARED_VALUE');
if ((int)$response->success === 1) {
Log::debug($response->TrackingNumber);
// delivery requested
} else {
// delivery request failed
}
} else {
// delivery request failed
}
} catch (OnwayRequestException $exception) {
// delivery request failed
}
}
}
Check Status
use Zorb\Onway\Exceptions\OnwayRequestException;
use Zorb\Onway\Facades\Onway;
class DeliveryController extends Controller
{
//
public function __invoke() {
// local order id
$order_id = 1;
// tracking number provided by provider
$tracking_number = 111111;
try {
$result = Onway::status($order_id, $tracking_number);
if ((int)$result->success === 1) {
$status = (int)$result->status;
// 1 - Submitted
// 2 - In Transit
// 3 - Completed
// 4 - Canceled
// 5 - Canceled Billable
} else {
// couldn't get delivery status
}
} catch (OnwayRequestException $exception) {
// couldn't get delivery status
}
}
}
Additional Information
DeliveryStatus
Delivery status has its own enum Zorb\Onway\Enums\DeliveryStatus
Key | Value |
---|---|
Submitted | 1 |
InTransit | 2 |
Completed | 3 |
Canceled | 4 |
CanceledBillable | 5 |
DeliveryZone
Delivery zones has its own enum Zorb\Onway\Enums\DeliveryZone
Key | Value |
---|---|
Makhinjauri | 98cf112b-26a4-40fd-b010-01b8239a37a8 |
Tsalka | 768af5b8-8c82-4fe2-9fa9-01be2f188be2 |
Akhalkalaki | ea1869a5-acff-4bf1-988b-02a8904aa525 |
Akhaltsikhe | 5c63b4a3-ad0a-453e-9096-05f41b9a9010 |
Tianeti | 5e627ab7-536d-48ca-bbfa-0635794d6af8 |
Natakhtari | 4b37b2e0-3fe6-43b7-b98c-0a3ad91f24f6 |
Borjomi | 5d2e3fb0-7718-402b-becc-0e783afb4849 |
Kareli | 0b41f02d-ad0a-44e1-907b-166be8dfc420 |
Gurjaani | cd57ba16-146d-4667-b41e-199069aaa352 |
Lagodekhi | a90940ee-1a73-4bfe-b867-19d916ca93eb |
Sachkhere | 77892a24-9e7d-4a54-864a-1aeb5645b363 |
Zestaphoni | a10a2c6b-b57c-4d8b-9251-213a68db3de0 |
Rustavi | 223823bc-035a-4be2-b1b3-270695ef204c |
Dedophlistkaro | d2b9ab57-2590-4b0f-af7a-27d31f36ec55 |
Tkibuli | 589dfcd8-c7e4-46c8-9720-2d208837f544 |
Mestia | b65f3a10-1d2b-4320-9164-2d318ffda96b |
Chkhorotsku | 5f8a5245-f65a-4d56-85ca-323c3f806f9d |
Zugdidi | f4a61e01-d18f-4f43-80a8-360e7592dc28 |
Gori | df16d4eb-7bc9-4f37-9466-40377e970ab7 |
Akhmeta | f1b04e4e-d150-4fd0-9c86-44f79d7bde3a |
Vani | 9cf7d2ce-b8e7-4ff5-b4f3-457cc6b3ea7c |
Martvili | 101c049a-f526-4ca3-8c4f-48f7922b7fd4 |
Sighnaghi | 1d87c3b6-338c-440d-8b7e-4a0d6bb837c5 |
Tetritskaro | 4ad3d793-f13d-405a-8118-4afadb216474 |
Tskaltubo | eae65222-bb9a-4015-988d-4c6eabb0641d |
Ozurgeti | d5c9e241-04f7-4b9a-b48e-4ca88187a26f |
Kvareli | c5394c54-5400-4997-9b60-51b2b001d5a6 |
Khoni | 855bb3f3-f6a9-440e-974f-5a2051cb982b |
Tbilisi | de5d1526-2234-4817-beca-5baa0afed104 |
Vale | b70e7346-52dc-4ad0-b4fb-5d8e4e4aefda |
Martkophi | 91742aad-60eb-4441-9211-606612337c3f |
Mtsketa | 993a492c-fd66-41bc-b5da-64b0cdae3cb0 |
Tsalenjikha | 9837afce-14d4-43af-b805-6f1c2333f3ab |
Lanchkhuti | 2e5720f4-e34f-4c3b-93e1-72b4d82c0439 |
Agara | 2e5d2482-cdc2-47dd-9ec3-74527b808773 |
Ninothsminda | 75f9ffec-9dde-41c1-91c1-75a97ed19db4 |
Khulo | 1b3a5e59-7f5a-46c7-9034-7918a74fbf9f |
Senaki | e0bf0116-b0bb-4a0c-a7b5-7aef1a3a4ecf |
Terjola | f4d5535e-470f-48e4-8f1f-7bdc497e7cf2 |
Photi | cab00aec-86ae-4ad0-b104-7e63ba56010d |
Bolnisi | 3dcb345a-62b3-45e8-bf43-813f739a52e1 |
Sagarejo | c2a07776-66c4-4a14-abbd-85aefd2b380c |
Khelvachauri | 857ae23b-3786-4560-8d6b-87ba83b49e07 |
Dmanisi | d7c4bef2-16bb-4aa1-87fd-88ebab7513fa |
Telavi | 63df7e8a-5487-4c44-b699-8bae7921c9dc |
Kazbegi | c3a95ad3-27c8-4cdf-9f1b-8c29dbda925f |
Abasha | c190aaff-73a1-4ba7-bb5b-9072337f07b5 |
Dusheti | 5a179595-4a11-49a6-b572-95e539528d42 |
Ureki | 1f4eb346-3e28-4ce7-90e9-989b4b342e73 |
Chiatura | 4793015e-fb01-4a21-aa89-992458194bfd |
Baghdati | e6c39aaa-5f41-4d8a-ae65-9b233623b219 |
Tskneti | 8fd6929a-9648-4878-a118-9cc91c52e722 |
Adigeni | 042405bb-f3ba-46bd-8994-a3e1fc6eef8b |
Tsageri | b576cc8e-21d4-4a21-9c4a-aa4720b9aab1 |
Lentekhi | 8bac8457-e47c-42e9-8772-ac1ac89c60e0 |
Samtredia | be63ed85-6e65-40cf-91d3-ad00ce0123a4 |
Abroad | 9a33e0e5-5ee0-49fe-8fbe-b1661adb49ce |
Kaspi | a566a247-0a50-4d3a-a19a-b611306c2359 |
Kutaisi | db4a83ca-e944-4cf1-a80e-b665cf574a93 |
Gardabani | 25e8fc8d-de02-4d5f-b2e2-b76322046497 |
Oni | 3a52c55d-1550-4ab6-9d16-b7cf1254f62e |
Stephantsminda | ea81bc12-a57d-4c8e-ab90-b90f2983b573 |
Khashuri | 326a4d33-6f94-48fc-a046-bef603efc572 |
Khobi | f3b6afff-08bb-4cea-b3f7-c5c4000fdf35 |
Marneuli | cc795eb7-097f-4395-a478-c5cd71ec9d3d |
Ambrolauri | 778d51df-1a59-43b9-88b5-c7041f3af02f |
Keda | 470a7491-b3d5-49a9-bcc5-d1e6923e9644 |
Sartichala | cf3f0a5f-6b85-4d38-8c4b-d4a34a1c7380 |
Kobuleti | 0f2c95fb-3aeb-43dc-bd46-d4ba89339566 |
Shuakhevi | 5ace30e0-e118-4bbb-bc77-da0c14e71b5a |
Chokhatauri | fd585c74-4fe7-4601-a6db-df2285c8904c |
Kharagauli | 2cd7d305-13d9-4c8e-8bf1-e42476992dea |
Batumi | 855fd07d-d7c9-491d-bb1d-ecad49f44c02 |
Aspindza | fe9de29a-8063-4f24-a73e-f9b165bbf8d2 |
Bakuriani | 83287fa5-db34-4ef5-872f-ffeb51e23c4f |
Delivery zones can be translated in resources/lang/ka/enums.php
use Zorb\Onway\Enums\DeliveryZone;
return [
DeliveryZone::class => [
DeliveryZone::Makhinjauri => 'მახინჯაური',
DeliveryZone::Tsalka => 'წალკა',
DeliveryZone::Akhalkalaki => 'ახალქალაქი',
DeliveryZone::Akhaltsikhe => 'ახალციხე',
DeliveryZone::Tianeti => 'თიანეთი',
DeliveryZone::Natakhtari => 'ნატახტარი',
DeliveryZone::Borjomi => 'ბორჯომი',
DeliveryZone::Kareli => 'ქარელი',
DeliveryZone::Gurjaani => 'გურჯაანი',
DeliveryZone::Lagodekhi => 'ლაგოდეხი',
DeliveryZone::Sachkhere => 'საჩხერე',
DeliveryZone::Zestaphoni => 'ზესტაფონი',
DeliveryZone::Rustavi => 'რუსთავი',
DeliveryZone::Dedophlistkaro => 'დედოფლისწყარო',
DeliveryZone::Tkibuli => 'ტყიბული',
DeliveryZone::Mestia => 'მესტია',
DeliveryZone::Chkhorotsku => 'ჩხოროწყუ',
DeliveryZone::Zugdidi => 'ზუგდიდი',
DeliveryZone::Gori => 'გორი',
DeliveryZone::Akhmeta => 'ახმეტა',
DeliveryZone::Vani => 'ვანი',
DeliveryZone::Martvili => 'მარტვილი',
DeliveryZone::Sighnaghi => 'სიღნაღი',
DeliveryZone::Tetritskaro => 'თეთრიწყარო',
DeliveryZone::Tskaltubo => 'წყალტუბო',
DeliveryZone::Ozurgeti => 'ოზურგეთი',
DeliveryZone::Kvareli => 'ყვარელი',
DeliveryZone::Khoni => 'ხონი',
DeliveryZone::Tbilisi => 'თბილისი',
DeliveryZone::Vale => 'ვალე',
DeliveryZone::Martkophi => 'მარტყოფი',
DeliveryZone::Mtsketa => 'მცხეთა',
DeliveryZone::Tsalenjikha => 'წალენჯიხა',
DeliveryZone::Lanchkhuti => 'ლანჩხუთი',
DeliveryZone::Agara => 'აგარა',
DeliveryZone::Ninothsminda => 'ნინოწმინდა',
DeliveryZone::Khulo => 'ხულო',
DeliveryZone::Senaki => 'სენაკი',
DeliveryZone::Terjola => 'თერჯოლა',
DeliveryZone::Photi => 'ფოთი',
DeliveryZone::Bolnisi => 'ბოლნისი',
DeliveryZone::Sagarejo => 'საგარეჯო',
DeliveryZone::Khelvachauri => 'ხელვაჩაური',
DeliveryZone::Dmanisi => 'დმანისი',
DeliveryZone::Telavi => 'თელავი',
DeliveryZone::Kazbegi => 'ყაზბეგი',
DeliveryZone::Abasha => 'აბაშა',
DeliveryZone::Dusheti => 'დუშეთი',
DeliveryZone::Ureki => 'ურეკი',
DeliveryZone::Chiatura => 'ჭიათურა',
DeliveryZone::Baghdati => 'ბაღდათი',
DeliveryZone::Tskneti => 'წყნეთი',
DeliveryZone::Adigeni => 'ადიგენი',
DeliveryZone::Tsageri => 'ცაგერი',
DeliveryZone::Lentekhi => 'ლენტეხი',
DeliveryZone::Samtredia => 'სამტრედია',
DeliveryZone::Abroad => 'საზღვარგარეთ',
DeliveryZone::Kaspi => 'კასპი',
DeliveryZone::Kutaisi => 'ქუთაისი',
DeliveryZone::Gardabani => 'გარდაბანი',
DeliveryZone::Oni => 'ონი',
DeliveryZone::Stephantsminda => 'სტეფანწმინდა',
DeliveryZone::Khashuri => 'ხაშური',
DeliveryZone::Khobi => 'ხობი',
DeliveryZone::Marneuli => 'მარნეული',
DeliveryZone::Ambrolauri => 'ამბროლაური',
DeliveryZone::Keda => 'ქედა',
DeliveryZone::Sartichala => 'სართიჭალა',
DeliveryZone::Kobuleti => 'ქობულეთი',
DeliveryZone::Shuakhevi => 'შუახები',
DeliveryZone::Chokhatauri => 'ჩოხატაური',
DeliveryZone::Kharagauli => 'ხარაგაული',
DeliveryZone::Batumi => 'ბათუმი',
DeliveryZone::Aspindza => 'ასპინძა',
DeliveryZone::Bakuriani => 'ბაკურიანი',
],
];
Configuration
You can configure environment file with following variables:
Key | Type | Default | Meaning |
---|---|---|---|
ONWAY_DEBUG | bool | false | This value decides to log or not to log requests. |
ONWAY_ID | string | This is the customer id, which should be generated by onway tech stuff. | |
ONWAY_API_URL | string | https://onway.ge/api/index.php | This is the url provided by onway.ge support. |
License
zgabievi/laravel-onway is licensed under a MIT License.