meteor / shipper
Shipper 实现方式
v1.0.8-beta
2023-01-24 04:31 UTC
Requires
- php: ^8.0
- guzzlehttp/guzzle: ^7.5
Requires (Dev)
- laravel/pint: ^1.2
- orchestra/testbench: ^6.0|^7.0
- phpunit/phpunit: ^9.5
- dev-main
- v1.0.8-beta
- v1.0.7-beta
- v1.0.6-beta
- v1.0.5-beta
- v1.0.4-beta
- v1.0.3-beta
- v1.0.2-beta
- v1.0.1-beta
- v0.1.4-alpha
- v0.1.3-alpha
- v0.1.2-alpha
- v0.1.1-alpha
- v0.1.0-alpha
- dev-feat/country
- dev-helper/phone
- dev-tests
- dev-feat/helper
- dev-feat/logistic
- dev-fix/test
- dev-fix/tests
- dev-feat/github-workflows
- dev-add-license-1
This package is auto-updated.
Last update: 2024-09-24 07:49:42 UTC
README
Laravel Shipper 是围绕 Shipper API 的包装器。
安装
您可以通过 composer 安装此包
composer require meteor/shipper
迁移定制
如果您不打算使用 Shipper 的默认迁移,您应该在 App\Providers\AppServiceProvider
类的 register
方法中调用 Shipper::ignoreMigrations
方法。您可以使用 vendor:publish
Artisan 命令导出默认迁移
php artisan vendor:publish --tag=meteor.shipper.migrations
发布配置文件
您可以使用以下命令发布配置文件
php artisan vendor:publish --provider="Meteor\Shipper\ShipperServiceProvider" --tag="meteor.shipper.config"
配置
在您可以使用 Shipper API 之前,您需要设置您的 API 密钥。您可以在 .env
文件中设置 SHIPPER_API_KEY
环境变量来完成此操作。如果您没有 API 密钥,您可以从 这里 获取一个。
SHIPPER_API_KEY=your-api-key
用法
要初始化 Shipper API,您可以使用 Shipper
面具。
use Meteor\Shipper\Facades\Shipper; $shipper = Shipper::make();
make()
接受两个可选参数:baseUrl
和 apiKey
。如果您不传递任何参数,它将使用 SHIPPER_API_KEY
环境变量。
$shipper = Shipper::make('your-api-key', 'https://api.shipper.id');
物流
创建物流实例
$logistic = $shipper->logistic();
列出所有物流
$logistic->list()->json();
位置
创建位置实例
$location = $shipper->location();
搜索位置
$response = $location->search( keyword: '15510', admLevel: 5, // optional options: ['limit' => 5] // optional )->json();
$location->getCountries()->json(); $location->getCountry()->json(); $location->getProvinces()->json(); $location->getProvince()->json(); $location->getProvincesByCountryId()->json(); $location->getCitiesByProvinceId()->json(); $location->getCities()->json(); $location->getCity()->json(); $location->getSuburbs()->json(); $location->getSuburbsByCityId()->json(); $location->getSuburb()->json(); $location->getAreasBySuburbId()->json(); $location->getAreas()->json(); $location->getArea()->json();
定价
创建定价实例
$pricing = $shipper->pricing();
注意:
lat
和lng
必须是字符串格式
$domesticBody = [ 'cod' => false, 'destination' => [ 'area_id' => 12284, 'lat' => '-6.9189281', 'lng' => '107.617093', ], 'origin' => [ 'area_id' => 12441, 'lat' => '-6.3179073', 'lng' => '106.9506175' ], 'for_order' => true, 'height' => 6.54, 'length' => 6.54, 'width' => 6.54, 'weight' => 0.18, 'item_value' => 134950, 'sort_by' => ['final_price'] ]; $internationalBody = [];
国内
$pricing->domestic(body: $domesticBody)->json();
按费率国内
可用费率
即时
常规
快递
卡车
当天
$pricing->domesticByRate(rateType: 'instant', body: $domesticBody)->json();
国际
$pricing->international(body: $internationalBody)->json();
订单
创建订单实例
$location = $shipper->order();
创建订单
注意:
phone_number
不能包含+
或0
前缀。因此,如果您的电话号码是+6288112233443
或08111223344
,则应删除+
或0
前缀。您可以使用shipper_phone_format
辅助函数来格式化您的电话号码。
$response = $order->create([ 'consignee' => [ 'name' => 'Mr. Jonson H', 'phone_number' => '6288112233443' ], 'consigner' => [ 'name' => 'Aslam H', 'phone_number' => '6281901560666' ], 'courier' => [ 'cod' => false, 'rate_id' => 15, 'use_insurance' => false ], 'coverage' => 'domestic', 'destination' => [ 'address' => 'Jl. Joni Afternoon, gg. Jonwik no 100A RT 08 RW 07 Kec. Sumur Bawah, Kota Melati, Jawa Jonggol, 50112', 'area_id' => 12284, 'lat' => '-6.9189281', 'lng' => '107.617093', 'email_address' => 'stark@mail.me', 'company_name' => 'Marvel' ], 'origin' => [ 'address' => 'Jl monyet kp rangga rt 11 rw 12 no 55 kode pos 17445 kel. jatimakmur kec. jatisolo', 'area_id' => 12441, 'lat' => '-6.3179073', 'lng' => '106.9506175', 'email_address' => 'spiderman@mail.com', 'company_name' => 'Foo' ], 'package' => [ 'items' => [ [ 'name' => 'Daging Ikan 1kg', 'price' => 10000, 'qty' => 1 ] ], 'package_type' => 2, 'height' => 4.1, 'length' => 4.1, 'width' => 4.1, 'weight' => 0.03, 'price' => 2000 ], 'payment_type' => 'postpay' ])->json();
$order->detail('order-id')->json(); $order->trackingStatus('status-id')->json(); $order->availableOrders()->json(); $order->update('order-id', [])->json(); $order->cancel('order-id', [])->json();
取货
$pickup = $shipper->pickup(); $pickup->create([])->json(); $pickup->cancel([])->json(); $pickup->createWithTimeslot([])->json(); $pickup->getTimeSlots()->json();
辅助函数
shipper_phone_format
shipper_phone_format('08111223344'); // 628111223344 shipper_phone_format('+628111223344'); // 628111223344
shipper_categories
shipper_categories(); // ['domestic', 'international']
shipper_rates
shipper_rates(); // ['instant', 'regular', 'express', 'trucking', 'same-day']