alexpechkarev / parcelforce
Parcelforce expressTransfer API 用于 Laravel,生成解决方案所需的前通知电子文件。
Requires
- php: >=5.4.0
- illuminate/support: ~4.0
Requires (Dev)
- laravel/framework: ~4.0
- mockery/mockery: dev-master@dev
- phpunit/php-invoker: dev-master
- phpunit/phpunit: ~3.7
This package is auto-updated.
Last update: 2024-09-19 09:25:35 UTC
README
Parcelforce exrpessTransferAPI 用于 Laravel 生成解决方案所需的前通知电子文件。
功能
- 在服务器上生成电子文件
- 将电子文件提交给 Parcelforce
- 每个文件单件或多件托运
- 英国国内收集请求(PFW司机提供的标签和收据)
- 仅限英国国内服务调度(客户打印的标签)
- 可作为 Laravel 包或 PHP 独立类使用
要求
必须是 Parcelforce 客户
PHP >= 5.3
MySQL
如果作为 Laravel 包使用,则 Laravel >= 4.1
安装
composer require alexpechkarev/parcelforce dev-master
配置
安装后,在 app/config/app.php
中注册 Laravel 服务提供者
'providers' => array( ... 'Parcelforce\ExpressTransfer\ParcelforceServiceProvider', )
发布配置文件
php artisan config:publish parcelforce/expresstransfer --path vendor/alexpechkarev/parcelforce/src/config/
所有生成的文件默认将存储在 app/config/packages/parcelforce/expresstransfer/files
文件夹中。确保此文件夹可由 Web 服务器写入
chmod o+w app/config/packages/parcelforce/expresstransfer/files
此文件夹的名称和位置可以在配置文件中通过编辑 filePath
值进行指定。如果已更改,请确保它可由 Web 服务器写入。
/** * Location consignment files */ 'filePath' => __DIR__.'/files/',
在配置文件 app/config/packages/parcelforce/expresstransfer/config.php
中,请确保以下参数已设置。有关配置选项和所需值的更多详细信息,请联系 Parcelforce。默认情况下,这些参数已预设为占位符值。
'header_customer_account'
'header_generic_contract'
'senderName'
'senderAddress1'
'senderPostTown'
'senderPostcode'
'dr_consignment_number'
'fileName'
'ftpUser'
'ftpPass'
'ftpUploadPath'
'ftpLocationPath'
Laravel 使用方法
只需将数据作为数组传递给 Parcelforce::process()
方法。将为给定数据生成电子文件,存储在 filePath
位置,并提交给 Parcelforce。
$senderData = array( array( "deliveryDetails"=>array( 'receiverName' =>"MR CUSTOMER", 'receiverAddress1' =>'100 CUSTOMER SOLUTIONS STREET', 'receiverPostTown' =>'MILTON KEYNES', 'receiverPostcode' =>'MK9 9AB' ) ) ); Parcelforce::process($senderData); // generate file locally without submitting to Parcelforce Parcelforce::process($senderData, FALSE);
可以在单个请求中提交多件托运的数据。
$senderData = array( array( "deliveryDetails"=>array( 'receiverName' =>"MR CUSTOMER", 'receiverAddress1' =>'100 CUSTOMER SOLUTIONS STREET', 'receiverPostTown' =>'MILTON KEYNES', 'receiverPostcode' =>'MK9 9AB' ) ), array( "deliveryDetails"=>array( 'receiverName' =>"MR CUSTOMER", 'receiverAddress1' =>'202 CUSTOMER SOLUTIONS STREET', 'receiverPostTown' =>'MILTON KEYNES', 'receiverPostcode' =>'MK9 9AB' ) ) ); Parcelforce::process($senderData);
默认收集日期设置为明天的日期,可以在配置文件中修改,请参阅 collectionDate
。此值也可以使用 Parcelforce::setDate()
方法在运行时指定。
Parcelforce::setDate("next Monday"); Parcelforce::process($senderData);
日期由
setDate()
方法接受的以下格式
- 明天
- 下个星期三
- 这个星期四
- ....
- 2014-08-11
- 08/11/2014
- 20140811
- ....
PHP 独立类使用方法
位置: 'Parcelforce\ExpressTransfer\PHP'
独立类具有与 Laravel 包相同的方法,并以相同的方式接受托运数据。在开始使用之前,请确保在配置文件 'Parcelforce/ExpressTransfer/PHP/config.php' 中设置了所需参数,并且 Parcelforce/ExpressTransfer/PHP/files
文件夹可由 Web 服务器写入。
$pf = new \Parcelforce\ExpressTransfer\PHP\Parcelforce(); $pf->process($senderData)); // generate file locally without submitting to Parcelforce $pf->process($senderData));
setDate()
方法在独立版本中也可用。
... $pf->setDate("next Monday"); $pf->process($senderData);
配置测试
为测试和配置目的,可以生成文件而无需提交给 Parcelforce。要本地生成文件,只需将 FALSE
作为 process()
方法的第二个参数传递。
// In Laravel package Parcelforce::process($senderData, FALSE); // In PHP standalone class $pf->process($senderData, FALSE);
一旦测试和配置完成,文件和托运单号必须重置到初始值。要启动此过程,请调用 reset()
方法。请注意:reset()
将重新加载数据库表,所有数据都将丢失。有关表详细信息,请参阅 config.php
。
// In Laravel package Parcelforce::reset(); // In PHP standalone class $pf->reset();
PHPUnit 测试
PHPUnit 测试需要 Mockery 灵活的 PHP 模拟对象框架。运行以下命令来安装 Mockery:
composer require mockery/mockery:dev-master@dev
在 Laravel 包的测试文件需要从包文件夹复制到 app/tests/
文件夹,可以使用以下命令:
cp vendor/alexpechkarev/parcelforce/tests/ParcelforceLaravelTest.txt app/tests/ParcelforceTest.php
然后运行测试
phpunit app/tests/ParcelforceTest.php
要测试 PHP 独立文件,确保在配置文件中设置了数据库凭据。
phpunit vendor/alexpechkarev/parcelforce/tests/ParcelforcePHPTest.php
主要方法
/** * @param array $data - array of data * @return string File content */ public function process($data, $upload = TRUE) /** * Drop database tables */ public function reset() /** * Get file content * @return string */ public function getFileContent() /** * Get current instance config file * @return array */ public function getConfig()
支持
许可证
Parcelforce expressTransfer API for Laravel 4 在 MIT 许可证下发布。有关详细信息,请参阅捆绑的 LICENSE 文件。