xndbogdan / laravel-sameday
为Laravel提供的基本Sameday Api实现
v1.0.1
2021-05-20 23:22 UTC
Requires
- php: >=7.1
- illuminate/contracts: 5.8.* || ^6.0 || ^7.0 || ^8.0
- illuminate/database: 5.8.* || ^6.0 || ^7.0 || ^8.0
- illuminate/support: 5.8.* || ^6.0 || ^7.0 || ^8.0
README
该软件包的创建是由于需要与laravel进行简单集成。它为Laravel 8开发,但也可能用于更低版本,因为它没有太多的依赖。
安装
只需运行composer require xndbogdan/laravel-sameday
。
注意
请注意,此软件包还有一个辅助工具,因此如果您希望静态调用此库,可以像这样操作
\Sameday::login(env('SAMEDAY_AUTH_USER'), env('SAMEDAY_AUTH_PASSWORD'), env('SAMEDAY_HOST_URL'));
实现示例
app()->sameday->login(env('SAMEDAY_AUTH_USER'), env('SAMEDAY_AUTH_PASSWORD'), env('SAMEDAY_HOST_URL'));
$defaultPickupData = app()->sameday->getDefaultPickupPoint();
$defaultService = app()->sameday->getDefaultService();
$serviceId = $defaultService->id;
$parcels = [];
$totalWeight = 0;
$numberOfPackages = 0;
foreach($order->order_items as $product) {
for($i=1; $i <= $product->quantity; $i++) {
array_push($parcels, [
'weight' => $product->weight,
'width' => $product->width,
'height' => $product->height,
'length' => $product->depth,
]);
$totalWeight += $product->weight;
}
$numberOfPackages += $product->quantity;
}
$awb = app()->sameday->sendAwb(
$defaultPickupData->id,
Sameday::PACKAGE_TYPE_PARCEL,
$numberOfPackages,
$serviceId,
$parcels,
$totalWeight,
0,
$paidOnline ? 0 : $order->subtotal,
Sameday::AWB_PAYMENT_CLIENT,
[
'county' => app()->sameday->getCountyId($address->region),
'city' => app()->sameday->getCityId($address->city),
'address' => $address->address,
'name' => $address->first_name . ' ' . $address->last_name,
'phoneNumber' => $address->phone,
'personType' => $address->cif ? 1 : 0,
],
(isset($defaultPickupData->pickupPointContactPerson[0]) ? $defaultPickupData->pickupPointContactPerson[0]->id : null)
);
$order->update([
'awb_number' => $awb->awbNumber,
'awb_pdf' => $awb->pdfLink,
]);
根据订单的AWB获取PDF
此路由和实现是在控制器中完成的,可以从Nova和用户的“订单”部分调用,针对具有AWB的订单。
public function samedayPdf($awb, Request $request) {
app()->sameday->login(env('SAMEDAY_AUTH_USER'), env('SAMEDAY_AUTH_PASSWORD'), env('SAMEDAY_HOST_URL'));
return app()->sameday->getPdf($awb);
}