Consume the Peak WMS API in PHP.
composer require setono/peak-wms-php-sdk
<?php
use Setono\PeakWMS\Client\Client;
use Setono\PeakWMS\DataTransferObject\Address;
use Setono\PeakWMS\DataTransferObject\SalesOrder\OrderLine\SalesOrderLine;
use Setono\PeakWMS\DataTransferObject\SalesOrder\SalesOrder;
$client = new Client('your_api_key');
$salesOrder = new SalesOrder(
orderId: 'order_in_your_store',
forwarderProductId: 'usually_your_shipping_method_id',
orderNumber: 'order_number_in_your_store',
billingAddress: new Address(
customerName: 'John Doe',
address1: 'Hobrovej 1',
postalCode: '9000',
city: 'Aalborg',
country: 'DK',
email: 'johndoe@google.com',
phone: '33762234',
),
);
$salesOrder->orderLines[] = new SalesOrderLine(
orderLineId: 'order_line_id_in_your_store',
quantityRequested: 1,
productId: 'BLUE_TSHIRT-L',
);
$client->salesOrder()->create($salesOrder);
Internally this library uses the CuyZ/Valinor library which is particularly well suited for turning API responses into DTOs. However, this library has some overhead and works best with a cache enabled.
When you instantiate the Client
use the opportunity to set a cache:
<?php
use CuyZ\Valinor\Cache\FileSystemCache;
use Setono\PeakWMS\Client\Client;
require_once '../vendor/autoload.php';
$cache = new FileSystemCache('path/to/cache-directory');
$client = new Client('API_KEY');
$client->getMapperBuilder()->withCache($cache);
You can read more about it here: Valinor: Performance and caching.