pdt256 / shipping
运费率API
1.0.1
2019-12-12 08:29 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: 7.0.*
- squizlabs/php_codesniffer: 3.5.*
This package is auto-updated.
Last update: 2024-09-13 04:26:52 UTC
README
用于USPS、UPS和Fedex的运费封装器。
介绍
这是一个PHP运费包,用于封装UPS、Fedex和USPS的API调用来获取运费率。可以添加多个包裹以获取额外的运费率。
所有代码(包括测试)都符合PSR-2编码标准。命名空间和自动加载器使用PSR-4标准。
所有pull请求都通过Travis CI处理,以符合PSR-2标准,并验证所有单元测试通过。
安装
将以下行添加到您的composer.json
文件中。
{ "require": { "pdt256/shipping": "1.0.*" } }
示例
创建一个运货对象
$shipment = new Shipment; $shipment ->setFromIsResidential(false) ->setFromStateProvinceCode('IN') ->setFromPostalCode('46205') ->setFromCountryCode('US') ->setToIsResidential(true) ->setToPostalCode('20101') ->setToCountryCode('US'); $package = new Package; $package ->setLength(12) ->setWidth(4) ->setHeight(3) ->setWeight(3); $shipment->addPackage($package);
UPS(占位符)示例
以下是从UPS API获取运费率的示例请求。
注意:以下行使用占位符类来模拟UPS API的响应。您可以在获得UPS账户之前立即在代码中使用此方法。
'requestAdapter' => new RateRequest\StubUPS(),
use pdt256\Shipping\UPS; use pdt256\Shipping\RateRequest; $ups = new UPS\Rate([ 'prod' => false, 'accessKey' => 'XXXX', 'userId' => 'XXXX', 'password' => 'XXXX', 'shipperNumber' => 'XXXX', 'shipment' => $shipment, 'approvedCodes' => [ '03', // 1-5 business days '02', // 2 business days '01', // next business day 10:30am '13', // next business day by 3pm '14', // next business day by 8am ], 'requestAdapter' => new RateRequest\StubUPS(), ]); $rates = $ups->getRates();
按成本排序的输出数组(以分币为单位):
array ( 0 => pdt256\Shipping\Quote::__set_state(array( 'code' => '03', 'name' => 'UPS Ground', 'cost' => 1910, 'transitTime' => NULL, 'deliveryEstimate' => NULL, 'carrier' => 'ups', )), 1 => pdt256\Shipping\Quote::__set_state(array( 'code' => '02', 'name' => 'UPS 2nd Day Air', 'cost' => 4923, 'transitTime' => NULL, 'deliveryEstimate' => NULL, 'carrier' => 'ups', )), 2 => pdt256\Shipping\Quote::__set_state(array( 'code' => '13', 'name' => 'UPS Next Day Air Saver', 'cost' => 8954, 'transitTime' => NULL, 'deliveryEstimate' => NULL, 'carrier' => 'ups', )), 3 => pdt256\Shipping\Quote::__set_state(array( 'code' => '01', 'name' => 'UPS Next Day Air', 'cost' => 9328, 'transitTime' => NULL, 'deliveryEstimate' => NULL, 'carrier' => 'ups', )), )
USPS(占位符)示例
use pdt256\Shipping\USPS; use pdt256\Shipping\RateRequest; $usps = new USPS\Rate([ 'prod' => false, 'username' => 'XXXX', 'password' => 'XXXX', 'shipment' => $shipment, 'approvedCodes' => [ '1', // 1-3 business days '4', // 2-8 business days ], 'requestAdapter' => new RateRequest\StubUSPS(), ]); $rates = $usps->getRates();
按成本排序的输出数组(以分币为单位):
array ( 0 => pdt256\Shipping\Quote::__set_state(array( 'code' => '4', 'name' => 'Parcel Post', 'cost' => 1001, 'transitTime' => NULL, 'deliveryEstimate' => NULL, 'carrier' => 'usps', )), 1 => pdt256\Shipping\Quote::__set_state(array( 'code' => '1', 'name' => 'Priority Mail', 'cost' => 1220, 'transitTime' => NULL, 'deliveryEstimate' => NULL, 'carrier' => 'usps', )), )
Fedex(占位符)示例
use pdt256\Shipping\Fedex; use pdt256\Shipping\RateRequest; $fedex = new Fedex\Rate([ 'prod' => FALSE, 'key' => 'XXXX', 'password' => 'XXXX', 'accountNumber' => 'XXXX', 'meterNumber' => 'XXXX', 'dropOffType' => 'BUSINESS_SERVICE_CENTER', 'shipment' => $shipment, 'approvedCodes' => [ 'FEDEX_EXPRESS_SAVER', // 1-3 business days 'FEDEX_GROUND', // 1-5 business days 'GROUND_HOME_DELIVERY', // 1-5 business days 'FEDEX_2_DAY', // 2 business days 'STANDARD_OVERNIGHT', // overnight ], 'requestAdapter' => new RateRequest\StubFedex(), ]); $rates = $fedex->getRates();
按成本排序的输出数组(以分币为单位):
array ( 0 => pdt256\Shipping\Quote::__set_state(array( 'code' => 'GROUND_HOME_DELIVERY', 'name' => 'Ground Home Delivery', 'cost' => 1655, 'transitTime' => 'THREE_DAYS', 'deliveryEstimate' => NULL, 'carrier' => 'fedex', )), 1 => pdt256\Shipping\Quote::__set_state(array( 'code' => 'FEDEX_EXPRESS_SAVER', 'name' => 'Fedex Express Saver', 'cost' => 2989, 'transitTime' => NULL, 'deliveryEstimate' => DateTime::__set_state(array( 'date' => '2014-09-30 20:00:00', 'timezone_type' => 3, 'timezone' => 'UTC', )), 'carrier' => 'fedex', )), 2 => pdt256\Shipping\Quote::__set_state(array( 'code' => 'FEDEX_2_DAY', 'name' => 'Fedex 2 Day', 'cost' => 4072, 'transitTime' => NULL, 'deliveryEstimate' => DateTime::__set_state(array( 'date' => '2014-09-29 20:00:00', 'timezone_type' => 3, 'timezone' => 'UTC', )), 'carrier' => 'fedex', )), 3 => pdt256\Shipping\Quote::__set_state(array( 'code' => 'STANDARD_OVERNIGHT', 'name' => 'Standard Overnight', 'cost' => 7834, 'transitTime' => NULL, 'deliveryEstimate' => DateTime::__set_state(array( 'date' => '2014-09-26 20:00:00', 'timezone_type' => 3, 'timezone' => 'UTC', )), 'carrier' => 'fedex', )), )
单元测试
vendor/bin/phpunit
带代码覆盖率
vendor/bin/phpunit --coverage-text --coverage-html coverage_report
带实时API测试
./live_phpunit.sh
运行编码标准测试
vendor/bin/phpcs --standard=PSR2 src/ tests/
许可证
MIT许可证(MIT)
版权所有 © 2014 Jamie Isaacs pdt256@gmail.com
在此,免费授予任何获得此软件及其相关文档副本(“软件”)的人权利,自由地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,以及允许将软件提供给他人,使其有权这样做,前提是遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。
本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定目的的适用性和非侵权性。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论是基于合同、侵权或其他原因,是否源于、因或与该软件或该软件的使用或其他方式有关。