php计算运费价格,PHP: UPS API, UPS 运费计算, UPS接口

本文介绍了如何使用PHP与UPS API进行地址验证、运费计算等操作。通过示例代码展示了如何创建地址验证类、简单地址验证类、量子视图类、追踪类、价格计算类和时间计算类,并提供了详细的调用方法。
摘要由CSDN通过智能技术生成

项目地址: https://github.com/gabrielbull/php-ups-api

composer require gabrielbull/ups-api

前提

1759296d6c65048f9a8140ad221bb856.pngPHP: UPS API, UPS 运费计算, UPS接口

40ffc37dadbe2f69025bdbdd7be63728.pngPHP: UPS API, UPS 运费计算, UPS接口

用法:(完整整合类见最下方)

1. 地址验证 Address Validation Class (Street Level)

$address = new \Ups\Entity\Address();

$address->setAttentionName('Test Test');

$address->setBuildingName('Test');

$address->setAddressLine1('Address Line 1');

$address->setAddressLine2('Address Line 2');

$address->setAddressLine3('Address Line 3');

$address->setStateProvinceCode('NY');

$address->setCity('New York');

$address->setCountryCode('US');

$address->setPostalCode('10000');

$xav = new \Ups\AddressValidation($accessKey, $userId, $password);

$xav->activateReturnObjectOnValidate(); //This is optional

try {

$response = $xav->validate($address, $requestOption = \Ups\AddressValidation::REQUEST_OPTION_ADDRESS_VALIDATION, $maxSuggestion = 15);

} catch (Exception $e) {

var_dump($e);

}

其他选项:

if ($response->noCandidates()) {

//Do something clever and helpful to let the use know the address is invalid

}

if ($response->isAmbiguous()) {

$candidateAddresses = $response->getCandidateAddressList();

foreach($candidateAddresses as $address) {

//Present user with list of candidate addresses so they can pick the correct one

}

}

if ($response->isValid()) {

$validAddress = $response->getValidatedAddress();

//Show user validated address or update their address with the 'official' address

//Or do something else helpful...

}

2. 简单地址验证 Simple Address Validation Class

$address = new \Ups\Entity\Address();

$address->setStateProvinceCode('NY');

$address->setCity('New York');

$address->setCountryCode('US');

$address->setPostalCode('10000');

$av = new \Ups\SimpleAddressValidation($accessKey, $userId, $password);

try {

$response = $av->validate($address);

var_dump($response);

} catch (Exception $e) {

var_dump($e);

}

3. QuantumView Class

The QuantumView Class allow you to request a Quantum View Data subscription

$quantumView = new Ups\QuantumView($accessKey, $userId, $password);

try {

// Get the subscription for all events for the last hour

$events = $quantumView->getSubscription(null, (time() - 3600));

foreach($events as $event) {

// Your code here

echo $event->Type;

}

} catch (Exception $e) {

var_dump($e);

}

4. 追踪 Tracking Class

The Tracking Class allow you to track a shipment using the UPS Tracking API.

$tracking = new Ups\Tracking($accessKey, $userId, $password);

try {

$shipment = $tracking->track('TRACKING NUMBER');

foreach($shipment->Package->Activity as $activity) {

var_dump($activity);

}

} catch (Exception $e) {

var_dump($e);

}

Example using Reference Number

$tracking = new Ups\Tracking($accessKey, $userId, $password);

try {

$shipment = $tracking->trackByReference('REFERENCE NUMBER');

foreach($shipment->Package->Activity as $activity) {

var_dump($activity);

}

} catch (Exception $e) {

var_dump($e);

}

Example using Reference Number with additional parameters

$tracking = new Ups\Tracking($accessKey, $userId, $password);

$tracking->setShipperNumber('SHIPPER NUMBER');

$beginDate = new \DateTime('2016-01-01');

$endDate = new \DateTime('2016-01-31');

$tracking->setBeginDate($beginDate);

$tracking->setEndDate($endDate);

try {

$shipment = $tracking->trackByReference('REFERENCE NUMBER');

foreach($shipment->Package->Activity as $activity) {

var_dump($activity);

}

} catch (Exception $e) {

var_dump($e);

}

5. 价格运算 Rate Class

The Rate Class allow you to get shipment rates using the UPS Rate API.

$rate = new Ups\Rate(

$accessKey,

$userId,

$password

);

try {

$shipment = new \Ups\Entity\Shipment();

$shipperAddress = $shipment->getShipper()->getAddress();

$shipperAddress->setPostalCode('99205');

$address = new \Ups\Entity\Address();

$address->setPostalCode('99205');

$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');

$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);

var_dump($rate->getRate($shipment));

} catch (Exception $e) {

var_dump($e);

}

6. 价格和时间计算 RateTimeInTransit Class

The RateTimeInTransit Class allow you to get shipment rates like the Rate Class, but the response will also include TimeInTransit data.

$rate = new Ups\RateTimeInTransit(

$accessKey,

$userId,

$password

);

try {

$shipment = new \Ups\Entity\Shipment();

$shipperAddress = $shipment->getShipper()->getAddress();

$shipperAddress->setPostalCode('99205');

$address = new \Ups\Entity\Address();

$address->setPostalCode('99205');

$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');

$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);

$deliveryTimeInformation = new \Ups\Entity\DeliveryTimeInformation();

$deliveryTimeInformation->setPackageBillType(\Ups\Entity\DeliveryTimeInformation::PBT

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值