alexpechkarev/parcelforce

Parcelforce expressTransfer API 用于 Laravel,生成解决方案所需的前通知电子文件。

dev-master 2014-08-12 20:28 UTC

This package is auto-updated.

Last update: 2024-09-19 09:25:35 UTC


README

Parcelforce exrpessTransferAPI 用于 Laravel 生成解决方案所需的前通知电子文件。

Build Status

功能

  • 在服务器上生成电子文件
  • 将电子文件提交给 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()

支持

请在 GitHub 上提交一个问题

许可证

Parcelforce expressTransfer API for Laravel 4 在 MIT 许可证下发布。有关详细信息,请参阅捆绑的 LICENSE 文件。