HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
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());
        }
    }
}