Skip to content

Setono/peak-wms-php-sdk

Repository files navigation

Peak WMS PHP SDK

Latest Version Software License Build Status Code Coverage Mutation testing

Consume the Peak WMS API in PHP.

Installation

composer require setono/peak-wms-php-sdk

Usage

Create sales order

<?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);

Production usage

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.