You can install the package via composer:
composer require gdinko/econt
If you plan to use database for storing nomenclatures:
php artisan migrate
If you need to export configuration file:
php artisan vendor:publish --tag=econt-config
If you need to export migrations:
php artisan vendor:publish --tag=econt-migrations
If you need to export models:
php artisan vendor:publish --tag=econt-models
If you need to export commands:
php artisan vendor:publish --tag=econt-commands
ECONT_ENV=test|production #default=test
ECONT_API_USER= #default=iasp-dev
ECONT_API_PASS= #default=iasp-dev
ECONT_API_TEST_BASE_URI= #default=https://demo.econt.com/ee/services
ECONT_API_PRODUCTION_BASE_URI= #default=https://ee.econt.com/services
ECONT_API_TIMEOUT= #default=5
Runtime Setup
Econt::setAccount('user', 'pass');
Econt::setBaseUrl('endpoint');
Econt::setTimeout(99);
Econt::addAccountToStore('AccountUser', 'AccountPass');
Econt::getAccountFromStore('AccountUser');
Econt::setAccountFromStore('AccountUser');
Multiple Account Support In AppServiceProvider add accounts in boot method
public function boot()
{
Econt::addAccountToStore(
'AccountUser',
'AccountPass'
);
Econt::addAccountToStore(
'AccountUser_XXX',
'AccountPass_XXX'
);
}
Methods
//Nomenclatures
Econt::getCountries();
Econt::getCities();
Econt::getOffices();
Econt::getStreets();
Econt::getQuarters();
//Labels
Econt::createLabel();
Econt::createLabels();
Econt::updateLabel();
Econt::deleteLabels();
//Misc
Econt::requestCourier();
Econt::getRequestCourierStatus();
Econt::getShipmentStatuses();
Econt::getClientProfiles();
Econt::paymentReport();
Commands
#sync countries with database (use -h to view options)
php artisan econt:sync-countries
#sync cities with database (use -h to view options)
php artisan econt:sync-cities
#create cities map with other carriers in database (use -h to view options)
php artisan econt:map-cities
#sync offices with database (use -h to view options)
php artisan econt:sync-offices
#sync querters with database (use -h to view options)
php artisan econt:sync-quarters
#sync stretts with database (use -h to view options)
php artisan econt:sync-streets
#sync all nomenclatures with database (use -h to view options)
php artisan econt:sync-all
#get payments (use -h to view options)
php artisan econt:get-payments
#get econt api status (use -h to view options)
php artisan econt:api-status
#track parcels (use -h to view options)
php artisan econt:track
Models
CarrierEcontCountry
CarrierEcontCity
CarrierEcontOffice
CarrierEcontStreet
CarrierEcontQuarter
CarrierEcontPayment
CarrierEcontApiStatus
CarrierEcontTracking
CarrierCityMap
Events
CarrierEcontTrackingEvent
CarrierEcontPaymentEvent
- Subscribe to tracking event, you will recieve last tracking info, if tracking command is schduled
Event::listen(function (CarrierEcontTrackingEvent $event) {
echo $event->account;
dd($event->tracking);
});
- Before use of tracking command you need to create your own command and define setUp method
php artisan make:command TrackCarrierEcont
- In app/Console/Commands/TrackCarrierEcont define your logic for parcels to be tracked
use Gdinko\Econt\Commands\TrackCarrierEcontBase;
class TrackCarrierEcontSetup extends TrackCarrierEcontBase
{
protected function setup()
{
//define parcel selection logic here
// $this->parcels = [];
}
}
- Use the command
php artisan econt:track
Address Validation
try {
$address = new Address([
'city' => [
'name' => 'София'
],
'street' => 'България',
'num' => '100'
]);
dd(Econt::validateAddress($address));
} catch (EcontValidationException $eve) {
echo $eve->getMessage();
echo $eve->getCode();
print_r($eve->getErrors());
} catch (EcontException $ee) {
echo $ee->getMessage();
echo $ee->getCode();
print_r($ee->getErrors());
}
Get Nearest Offices to Address
try {
$address = new Address([
'city' => [
'name' => 'София'
],
'street' => 'България',
'num' => '100'
]);
dd(Econt::getNearestOffices($address));
} catch (EcontValidationException $eve) {
echo $eve->getMessage();
echo $eve->getCode();
print_r($eve->getErrors());
} catch (EcontException $ee) {
echo $ee->getMessage();
echo $ee->getCode();
print_r($ee->getErrors());
}
Calculcate Price
$labelData = [
'senderClient' => [
'name' => 'Иван Иванов',
'phones' => [
0 => '0888888888',
],
],
'senderAddress' => [
'city' => [
'country' => [
'code3' => 'BGR',
],
'name' => 'София',
'postCode' => 1000,
],
],
'senderOfficeCode' => '1127',
'receiverAddress' => [
'city' => [
'country' => [
'code3' => 'BGR',
],
'name' => 'София',
'postCode' => 1000,
],
'street' => 'България',
'num' => '100',
],
'packCount' => 1,
'shipmentType' => ShipmentType::PACK,
'weight' => 3.4,
'shipmentDescription' => 'обувки',
'services' => [
'cdAmount' => 122.59,
'cdType' => 'get',
'cdCurrency' => 'BGN',
'smsNotification' => true,
],
'payAfterAccept' => false,
'payAfterTest' => false,
];
$label = new Label(
$labelData,
LabelMode::CALCULATE
);
$result = Econt::createLabel($label);
Create Label
$labelData = [
'senderClient' => [
'name' => 'Иван Иванов',
'phones' => [
0 => '0888888888',
],
],
'senderAddress' => [
'city' => [
'country' => [
'code3' => 'BGR',
],
'name' => 'София',
'postCode' => 1000,
],
],
'senderOfficeCode' => '1127',
'receiverClient' =>
[
'name' => 'Димитър Димитров',
'phones' =>
[
0 => '0876543210',
],
],
'receiverAddress' => [
'city' => [
'country' => [
'code3' => 'BGR',
],
'name' => 'София',
'postCode' => '1000',
],
'street' => 'България',
'num' => 100,
],
'packCount' => 1,
'shipmentType' => ShipmentType::PACK,
'weight' => 3.4,
'shipmentDescription' => 'обувки',
'services' => [
'cdAmount' => '122.59',
'cdType' => 'get',
'cdCurrency' => 'BGN',
'smsNotification' => true,
],
'payAfterAccept' => false,
'payAfterTest' => false,
'holidayDeliveryDay' => 'workday',
];
$label = new Label(
$labelData,
LabelMode::CREATE
);
$result = Econt::createLabel($label);
Request Courier
try {
$curierRequest = [
'requestTimeFrom' => '2022-05-05 16:00:00',
'requestTimeTo' => '2022-05-05 17:00:00',
'shipmentType' => 'PACK',
'shipmentPackCount' => '1',
'shipmentWeight' => '2',
'senderClient' => [
'name' => 'Иван Иванов',
'phones' => [
0 => '0888888888',
],
],
'senderAddress' => [
'city' => [
'country' => [
'code3' => 'BGR',
],
'postCode' => '7012',
'name' => 'Русе',
],
'fullAddress' => 'Алея Младост 7',
],
];
dd(
Econt::requestCourier(
new Courier($curierRequest)
)
);
} catch (EcontValidationException $eve) {
echo $eve->getMessage();
echo $eve->getCode();
print_r($eve->getErrors());
} catch (EcontException $ee) {
echo $ee->getMessage();
echo $ee->getCode();
print_r($ee->getErrors());
}
Get Payments
try {
dd(
Econt::paymentReport(new Payment([
'dateFrom' => '2022-05-01',
'dateTo' => '2022-05-05'
]))
);
} catch (EcontValidationException $eve) {
echo $eve->getMessage();
echo $eve->getCode();
print_r($eve->getErrors());
} catch (EcontException $ee) {
echo $ee->getMessage();
echo $ee->getCode();
print_r($ee->getErrors());
}
composer test
Please see CHANGELOG for more information what has changed recently.
Please see CONTRIBUTING for details.
If you discover any security related issues, please email [email protected] instead of using the issue tracker.
The MIT License (MIT). Please see License File for more information.