gdinko / speedy
Laravel Speedy API 包装器
v1.0.14
2024-08-06 16:30 UTC
Requires
- php: ^7.4|^8.0|^8.1|^8.2|^8.3
- guzzlehttp/guzzle: ^7.4
- illuminate/support: ^8.0|^9.0|^10.0|^11.0
Requires (Dev)
- nunomaduro/collision: ^5.11
- nunomaduro/larastan: ^1.0
- orchestra/testbench: ^6.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.2
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.1
- phpunit/phpunit: ^9.0
README
安装
您可以通过 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
包裹追踪
- 订阅追踪事件,如果已安排追踪命令,您将收到最后追踪信息
Event::listen(function (CarrierSpeedyTrackingEvent $event) { echo $event->account; dd($event->tracking); });
- 在使用追踪命令之前,您需要创建自己的命令并定义 setUp 方法
php artisan make:command TrackCarrierSpeedy
- 在 app/Console/Commands/TrackCarrierSpeedy 中定义追踪包裹的逻辑
use Gdinko\Speedy\Commands\TrackCarrierSpeedyBase; class TrackCarrierSpeedySetup extends TrackCarrierSpeedyBase { protected function setup() { //define parcel selection logic here // $this->parcels = []; } }
- 使用该命令
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)。请参阅 许可证文件 了解更多信息。