mindgoner / laravel-orlen-paczka
dev-master
2024-09-26 11:01 UTC
Requires
- php: ^7.4 || ^8.0
- ext-soap: *
- illuminate/support: ^8.0 || ^9.0 || ^10.0 || ^11.0
Requires (Dev)
- phpunit/phpunit: ^9.0 || ^10.0
This package is auto-updated.
Last update: 2024-09-26 11:01:36 UTC
README
此包提供了与Orlen Paczka API的集成,允许您管理收件人、寄件人、退货和商业包裹。以下是使用此包提供的模型和请求的示例。
安装
要安装此包,请使用Composer
composer require mindgoner/laravel-orlen-paczka
要发布配置文件,请输入以下命令
php artisan vendor:publish --tag=config
用法
发送包裹
发送包裹需要配置OPSender、OPReceiver、OPReturn、OPBusinessPack对象。
OPReceiver
您可以使用OPReceiver
模型创建新的包裹收件人
use Mindgoner\LaravelOrlenPaczka\Models\OPReceiver; $OPReceiver = new OPReceiver(); $OPReceiver->EMail = 'email@example.com'; $OPReceiver->FirstName = 'Mind'; $OPReceiver->LastName = 'Goner'; $OPReceiver->CompanyName = 'CompanyName'; $OPReceiver->StreetName = 'Example st.'; $OPReceiver->BuildingNumber = '1'; $OPReceiver->FlatNumber = ''; $OPReceiver->City = 'New York'; $OPReceiver->PostCode = '10069'; $OPReceiver->PhoneNumber = '123123123';
或者,您可以通过传递字典设置属性(适用于每个模型)
use Mindgoner\LaravelOrlenPaczka\Models\OPReceiver; $OPReceiver = new OPReceiver( 'EMail' => 'email@example.com', 'FirstName' => 'Mind', 'LastName' => 'Goner', 'CompanyName' => 'CompanyName', 'StreetName' => 'Example st.', 'BuildingNumber' => '1', 'FlatNumber' => '', 'City' => 'New York', 'PostCode' => '10069', 'PhoneNumber' => '123123123' );
OPSender
要创建新的寄件人,请使用OPSender
模型
use Mindgoner\LaravelOrlenPaczka\Models\OPSender; $OPSender = new OPSender(); $OPSender->SenderEMail = 'email@example.com'; $OPSender->SenderFirstName = 'Mind'; $OPSender->SenderLastName = 'Goner'; $OPSender->SenderCompanyName = 'CompanyName'; $OPSender->SenderStreetName = 'Another Example st.'; $OPSender->SenderBuildingNumber= '1'; $OPSender->SenderFlatNumber = ''; $OPSender->SenderCity = 'New York'; $OPSender->SenderPostCode = '10000'; $OPSender->SenderPhoneNumber = '321321321'; $OPSender->SenderOrders = 'order-number'; // Optionally
OPReturn
OPReturn
模型用于配置在包裹无法送达收件人时应将其转发到何处。
use Mindgoner\LaravelOrlenPaczka\Models\OPReturn; $OPReturn = new OPReturn(); $OPReturn->ReturnAvailable = 0; $OPReturn->ReturnQuantity = 0; $OPReturn->ReturnFirstName = 'John'; $OPReturn->ReturnLastName = 'Doe'; $OPReturn->ReturnCompanyName = 'ExampleCorp'; $OPReturn->ReturnStreetName = '123 Example Rd'; $OPReturn->ReturnBuildingNumber= '1A'; $OPReturn->ReturnFlatNumber = '5B'; $OPReturn->ReturnCity = 'ExampleCity'; $OPReturn->ReturnPostCode = '12345'; $OPReturn->ReturnPhoneNumber = '555-1234'; $OPReturn->ReturnPack = 0; $OPReturn->ReturnDestinationCode = 'BD-105772-DB-12',
OPBusinessPack
要创建新的商业包裹,请使用OPBusinessPack
模型
use Mindgoner\LaravelOrlenPaczka\Models\OPBusinessPack; $OPBusinessPack = new OPBusinessPack([ 'DestinationCode' => 'BD-105772-DB-12', 'AlternativeDestinationCode' => 'BD-105772-DB-12', 'BoxSize' => 'C', 'PackValue' => 100, 'CashOnDelivery' => false, 'AmountCashOnDelivery' => 0, 'Insurance' => 0, 'PrintAddress' => '123 Business St.', 'PrintType' => 'Label', 'TransferDescription' => 'Business pack for delivery' ]);
在OrlenPaczka服务器上创建包裹
use Mindgoner\LaravelOrlenPaczka\Requests\GenerateBusinessPack; $GenerateBusinessPack = new GenerateBusinessPack( $OPSender, $OPBusinessPack, $OPReturn, $OPReceiver, ); $response = $GenerateBusinessPack->send(); // Send method returns OP server's Response
从响应中获取数据
$GenerateBusinessPack->success(); // Returns true if success $GenerateBusinessPack->getPackCode(); // Returns PackCode $GenerateBusinessPack->getDestinationCode(); // Returns DestinationCode $GenerateBusinessPack->getDestinationId(); // Returns DestinationId $GenerateBusinessPack->getPackPrice(); // Returns PackPrice $GenerateBusinessPack->getPackPaid(); // Returns PackStatus
生成标签
use Mindgoner\LaravelOrlenPaczka\Requests\LabelPrintDuplicate; $LabelPrintDuplicate = new LabelPrintDuplicate( new OPPack(['PackCode' => '2101077997326']) ); $LabelPrintDuplicate->get(); $LabelPrintDuplicate->base64(); // Returns label in base64 format // or $LabelBinary = $LabelPrintDuplicate->pdf(); // Return label in binary format return response($LabelBinary) ->header('Content-Type', 'application/pdf') ->header('Content-Disposition', 'inline; filename="label.pdf"');
预约取件
要预约取件,请使用CallPickup
请求
use Mindgoner\LaravelOrlenPaczka\Requests\CallPickup; $CallPickup = new CallPickup([ 'packList' => [ new OPPack(['PackCode' => '2101077997326']) ], //'readyDate' => date('Y-m-d\T9:00:00', strtotime('+1 day')), // Alternatively (must be in the future) //'pickupDate' => date('Y-m-d\T17:00:00', strtotime('+1 day')), // Alternatively (must be in the future) ]); $CallPickup->send();
自托管DestinationPoints和自动更新
如果您想将DestinationPoints存储在您的服务器上以提高性能,请自由使用以下代码发布迁移并设置调度器,该调度器将在指定时间更新DestinationPoint状态。
迁移
使用以下代码发布迁移文件
php artisan vendor:publish --tag=migrations
将迁移文件迁移到数据库
php artisan migrate
调度器
发布命令
php artisan vendor:publish --tag=commands
在app/Console/Kernel.php
中设置执行计划的命令
use App\Console\Commands\OPUpdateLocationsList; $schedule->command('op:update-locations')->dailyAt('05:00');
映射小部件
要实现映射小部件,请使用当用户选择投递到取件机时应该出现的按钮
<button class="orlen-widget">Znajdź na mapie</button> <!-- Modal opening --> <div class="orlen-widget" data-target="#outputDeliveryPointNameToMyId" style="height: 100%;"></div> <!-- Widget --> <input id="outputDeliveryPointNameToMyId" name="destinationMachineCode">
然后添加到以下<head>
部分
@OPMap()
在您的.env文件中创建新变量
OP_MAPTOKEN='put-token-here'