mindgoner/laravel-orlen-paczka

dev-master 2024-09-26 11:01 UTC

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'