xndbogdan/laravel-sameday

为Laravel提供的基本Sameday Api实现

v1.0.1 2021-05-20 23:22 UTC

This package is auto-updated.

Last update: 2024-09-21 06:11:08 UTC


README

Total Downloads

该软件包的创建是由于需要与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);
}