gdinko/speedy

Laravel Speedy API 包装器

v1.0.14 2024-08-06 16:30 UTC

This package is auto-updated.

Last update: 2024-09-06 16:43:56 UTC


README

Latest Version on Packagist Total Downloads

Speedy JSON API 文档

安装

您可以通过 composer 安装此包

composer require gdinko/speedy

如果您计划使用数据库存储术语

php artisan migrate

如果您需要导出配置文件

php artisan vendor:publish --tag=speedy-config

如果您需要导出迁移

php artisan vendor:publish --tag=speedy-migrations

如果您需要导出模型

php artisan vendor:publish --tag=speedy-models

如果您需要导出命令

php artisan vendor:publish --tag=speedy-commands

配置

SPEEDY_API_USER= #Get this from Speedy
SPEEDY_API_PASS= #Get this from Speedy
SPEEDY_API_BASE_URL= #default=https://api.speedy.bg/v1/
SPEEDY_API_TIMEOUT= #default=5

用法

运行时设置

Speedy::setAccount('user', 'pass');
Speedy::setBaseUrl('endpoint');
Speedy::setTimeout(99);

Speedy::addAccountToStore('AccountUser', 'AccountPass');
Speedy::getAccountFromStore('AccountUser');
Speedy::setAccountFromStore('AccountUser');

支持多个账户:在 AppServiceProvider 的 boot 方法中添加账户

public function boot()
{
    Speedy::addAccountToStore(
        'AccountUser',
        'AccountPass'
    );

    Speedy::addAccountToStore(
        'AccountUser_XXX',
        'AccountPass_XXX'
    );
}

方法

use Gdinko\Speedy\Facades\Speedy;

//Shipment Service
Speedy::createShipment(Hydrator $hydrator): array
Speedy::cancelShipment(Hydrator $hydrator): array
Speedy::addParcel(Hydrator $hydrator): array
Speedy::finalizePendingShipment(Hydrator $hydrator): array
Speedy::shipmentInformation(Hydrator $hydrator): array
Speedy::secondaryShipments($shipmentId, Hydrator $hydrator): array
Speedy::updateShipment(Hydrator $hydrator): array
Speedy::updateShipmentProperties(Hydrator $hydrator): array
Speedy::findParcelsByReference(Hydrator $hydrator): array
Speedy::handoverToCourier(Hydrator $hydrator): array

//Print Service
Speedy::print(Hydrator $hydrator): string
Speedy::extendedPrint(Hydrator $hydrator): array
Speedy::labelInfo(Hydrator $hydrator): array
Speedy::printVoucher(Hydrator $hydrator): string

//Track And Trace Service
Speedy::track(Hydrator $hydrator): array
Speedy::bulkTrackingDataFiles(Hydrator $hydrator): array

//Pickup Service
Speedy::pickup(Hydrator $hydrator): array
Speedy::pickupTerms(Hydrator $hydrator): array

//Location Service
Speedy::getCountry($id, Hydrator $hydrator): array
Speedy::findCountry(Hydrator $hydrator): array
Speedy::getAllCountries(Hydrator $hydrator): object
Speedy::getState($id, Hydrator $hydrator): array
Speedy::findState(Hydrator $hydrator): array
Speedy::getAllStates($countryId, Hydrator $hydrator): object
Speedy::getSite($id, Hydrator $hydrator): array
Speedy::findSite(Hydrator $hydrator): array
Speedy::getAllSites($countryId, Hydrator $hydrator): object
Speedy::getStreet($id, Hydrator $hydrator): array
Speedy::findStreet(Hydrator $hydrator): array
Speedy::getAllStreets($countryId, Hydrator $hydrator): object
Speedy::getComplex($id, Hydrator $hydrator): array
Speedy::findComplex(Hydrator $hydrator): array
Speedy::getAllComplexes($countryId, Hydrator $hydrator): object
Speedy::findBlock(Hydrator $hydrator): array
Speedy::getPoi($id, Hydrator $hydrator): array
Speedy::findPoi(Hydrator $hydrator): array
Speedy::getAllPoi($countryId, Hydrator $hydrator): object
Speedy::getAllPostcodes($countryId, Hydrator $hydrator): object
Speedy::getOffice($id, Hydrator $hydrator): array
Speedy::findOffice(Hydrator $hydrator): array

//Calculation Service
Speedy::calculate(Hydrator $hydrator): array

//Client Service
Speedy::getClient($id, Hydrator $hydrator): array
Speedy::getContractClients(Hydrator $hydrator): array
Speedy::createContact(Hydrator $hydrator): array
Speedy::getContactByExternalId($id, Hydrator $hydrator): array
Speedy::getOwnClientId(Hydrator $hydrator): array

//Validation Service
Speedy::validateAddress(Hydrator $hydrator): array
Speedy::validatePostcode(Hydrator $hydrator): array
Speedy::validatePhone(Hydrator $hydrator): array
Speedy::validateShipment(Hydrator $hydrator): array

//Services Service
Speedy::services(Hydrator $hydrator): array
Speedy::destinationServices(Hydrator $hydrator): array

//Payments Service
Speedy::payments(Hydrator $hydrator): array

命令

#get payments (use -h to view options)
php artisan speedy:get-payments

#get speedy api status (use -h to view options)
php artisan speedy:api-status

#sync countries with database  (use -h to view options)
php artisan speedy:sync-countries

#sync cities with database  (use -h to view options)
php artisan speedy:sync-cities

#create cities map with other carriers in database  (use -h to view options)
php artisan speedy:map-cities

#sync offices with database  (use -h to view options)
php artisan speedy:sync-offices

#track parcels (use -h to view options)
php artisan speedy:track

模型

CarrierSpeedyCountry
CarrierSpeedyCity
CarrierSpeedyOffice
CarrierSpeedyTracking
CarrierSpeedyPayment
CarrierSpeedyApiStatus
CarrierCityMap

事件

CarrierSpeedyTrackingEvent
CarrierSpeedyPaymentEvent

包裹追踪

  1. 订阅追踪事件,如果已安排追踪命令,您将收到最后追踪信息
Event::listen(function (CarrierSpeedyTrackingEvent $event) {
    echo $event->account;
    dd($event->tracking);
});
  1. 在使用追踪命令之前,您需要创建自己的命令并定义 setUp 方法
php artisan make:command TrackCarrierSpeedy
  1. 在 app/Console/Commands/TrackCarrierSpeedy 中定义追踪包裹的逻辑
use Gdinko\Speedy\Commands\TrackCarrierSpeedyBase;

class TrackCarrierSpeedySetup extends TrackCarrierSpeedyBase
{
    protected function setup()
    {
        //define parcel selection logic here
        // $this->parcels = [];
    }
}
  1. 使用该命令
php artisan speedy:track

示例

订阅支付事件

Event::listen(function (CarrierSpeedyPaymentEvent $event) {
    echo $event->account;
    dd($event->payment);
});

检查今天的支付

php artisan speedy:get-payments

获取所有国家

use Gdinko\Speedy\Facades\Speedy;
use Gdinko\Speedy\Hydrators\Request;

dd(
    Speedy::getAllCountries(
        new Request()
    )->toArray()
);

查找国家

use Gdinko\Speedy\Facades\Speedy;
use Gdinko\Speedy\Hydrators\Request;

dd(
    Speedy::findCountry(
        new Request([
            'name' => 'bulgaria'
        ])
    )
);

测试

composer test

变更日志

请参阅 CHANGELOG 了解最近更改的信息。

贡献

请参阅 CONTRIBUTING 了解详细信息。

安全性

如果您发现任何安全问题,请通过电子邮件 dinko359@gmail.com 联系,而不是使用问题跟踪器。

鸣谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。