File: /var/www/vhost/disk-apps/agile-selling-wpb/app/Http/Controllers/Api/UpsController.php
<?php
namespace App\Http\Controllers\Api;
use App\Sucursal;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
class UpsController extends Controller
{
private function loadProducts($product)
{
$package = new \Ups\Entity\Package();
$package->getPackagingType()->setCode(\Ups\Entity\PackagingType::PT_PACKAGE);
$package->getPackageWeight()->setWeight($product["weight"]);
// if you need this (depends of the shipper country)
$weightUnit = new \Ups\Entity\UnitOfMeasurement;
$weightUnit->setCode(\Ups\Entity\UnitOfMeasurement::UOM_KGS);
$package->getPackageWeight()->setUnitOfMeasurement($weightUnit);
$dimensions = new \Ups\Entity\Dimensions();
$dimensions->setHeight($product["height"]);
$dimensions->setWidth($product["width"]);
$dimensions->setLength($product["length"]);
$unit = new \Ups\Entity\UnitOfMeasurement;
$unit->setCode(\Ups\Entity\UnitOfMeasurement::UOM_IN);
$dimensions->setUnitOfMeasurement($unit);
$package->setDimensions($dimensions);
return $package;
}
public function getRate(Request $request)
{
$rate = new \Ups\Rate(
env('UPS_ACCESS_KEY'),
env('UPS_USER_ID'),
env('UPS_PASSWORD'),
);
try {
$sucursal = Sucursal::where('active', true)->with('address')->first();
$shipment = new \Ups\Entity\Shipment();
$shipperAddress = $shipment->getShipper()->getAddress();
$shipperAddress->setPostalCode($sucursal->address->zip_code);
$shipperAddress->setAddressLine1($sucursal->address->direction);
$address = new \Ups\Entity\Address();
$address->setPostalCode($sucursal->address->zip_code);
$address->setAddressLine1($sucursal->address->direction);
$shipFrom = new \Ups\Entity\ShipFrom();
$shipFrom->setAddress($address);
$shipment->setShipFrom($shipFrom);
$shipTo = $shipment->getShipTo();
$shipTo->setCompanyName($request->input('shipTo')["zip_code"]);
$shipToAddress = $shipTo->getAddress();
$shipToAddress->setPostalCode($request->input('shipTo')["zip_code"]);
$shipToAddress->setAddressLine1($request->input('shipTo')["direction"]);
foreach ($request->input('products') as $product) {
$shipment->addPackage($this->loadProducts($product));
}
$data = array('status' => true, 'd' => $shipment);
return response()->json($data, 200);
dd($rate->getRate($shipment));
} catch (Exception $e) {
$data = array('status' => false, 'd' => $e->getMessage());
return response()->json($data, 201);
}
}
public function testRate()
{
$rate = new \Ups\Rate(
env('UPS_ACCESS_KEY'),
env('UPS_USER_ID'),
env('UPS_PASSWORD'),
);
try {
$sucursal = Sucursal::where('active', true)->with('address')->first();
$shipment = new \Ups\Entity\Shipment();
$shipperAddress = $shipment->getShipper()->getAddress();
$shipperAddress->setPostalCode($sucursal->address->zip_code);
$shipperAddress->setAddressLine1($sucursal->address->direction);
$address = new \Ups\Entity\Address();
$address->setPostalCode($sucursal->address->zip_code);
$address->setAddressLine1($sucursal->address->direction);
$shipFrom = new \Ups\Entity\ShipFrom();
$shipFrom->setAddress($address);
$shipment->setShipFrom($shipFrom);
$shipTo = $shipment->getShipTo();
$shipTo->setCompanyName('Test Ship To');
$shipToAddress = $shipTo->getAddress();
$shipToAddress->setPostalCode('99205');
$shipToAddress->setAddressLine1('Calle 90');
$package = new \Ups\Entity\Package();
$package->getPackagingType()->setCode(\Ups\Entity\PackagingType::PT_PACKAGE);
$package->getPackageWeight()->setWeight(10);
// if you need this (depends of the shipper country)
$weightUnit = new \Ups\Entity\UnitOfMeasurement;
$weightUnit->setCode(\Ups\Entity\UnitOfMeasurement::UOM_KGS);
$package->getPackageWeight()->setUnitOfMeasurement($weightUnit);
$dimensions = new \Ups\Entity\Dimensions();
$dimensions->setHeight(10);
$dimensions->setWidth(10);
$dimensions->setLength(10);
$unit = new \Ups\Entity\UnitOfMeasurement;
$unit->setCode(\Ups\Entity\UnitOfMeasurement::UOM_IN);
$dimensions->setUnitOfMeasurement($unit);
$package->setDimensions($dimensions);
$shipment->addPackage($package);
// dd($shipment);
dd($rate->getRate($shipment));
} catch (Exception $e) {
dd($e->getMessage());
}
}
}