PHP code example of express-ru / sdk

1. Go to this page and download the library: Download express-ru/sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

express-ru / sdk example snippets


const USER_LOGIN = 'Логин';
const USER_SIGNATURE_KEY = 'Ключ подписи';
const USER_AUTHORIZATION_KEY = 'Ключ авторизации';

const ORDER_CLASS = 'ExpressRuSDK\\Model\\Entities\\Order\\Order';

$sdk = new \ExpressRuSDK\SDK();
$order = $sdk->getNewOrder();

$sdk = new \ExpressRuSDK\SDK();
$orderDefaultsProvider = $sdk->getOrderDefaultsProvider();
$order = new \ExpressRuSDK\Model\Entities\Order\Order();
$order->setDefaultsFromProvider($orderDefaultsProvider);

$sdk = new \ExpressRuSDK\SDK();
$calculateService = $sdk->getCalculateService();
/**
 * Получение объекта нового заказа
 */
$order = $sdk->getNewOrder();
$order
    ->setSenderCountry('Россия')
    ->setRecipientCountry('Россия')
    ->setSenderCity('Москва')
    ->setRecipientCity('Москва')
    ->setWeight(1)
    ->setCargoType(\ExpressRuSDK\Model\CargoTypes::CARGO_TYPE_CARGO)  //Тип груза
    ->setCargoForm(new \ExpressRuSDK\Model\Entities\CargoForms\Box(10, 20, 30)); //Форма груза и размеры

$calculateResultsCollection = $calculateService->getDeliveryPricesForOrder($order);
var_export($calculateResultsCollection);

$sdk = new \ExpressRuSDK\SDK();
$orderRepository = $sdk->getOrderApiRepository();
$order = $sdk->getNewOrder();

/**
 * Вариант 1: Минимальный набор необходимый для успешного создания заказа
 * Заказ будет создан с параметрами по умолчанию, указанными в
 * \ExpressRuSDK\OrderDefaults или в другом провайдере значений по умолчанию при его использовании.
 * Часть полей будет опущена
 */
$order
    ->setPickupDate('2015-09-22')//Дата забора
    ->setRecipient('Тестовый Получатель')
    ->setRecipientCountry('РОССИЯ')
    ->setRecipientCity('Москва')//Город Получателя
    ->setRecipientAddress('Адрес получателя')
    ->setRecipientContact('Контакт получателя')
    ->setRecipientPhone('+0000000000');


/**
 * Вариант 2: Использование полного набора параметров
 */
$order
    ->setPickupDate('2015-09-20')//Дата забора
    ->setClientContact('Контактное лицо клиента')// Контактное лицо клиента
    ->setSender('Тестовый Отправитель')
    ->setSenderCountry('РОССИЯ')//Страна отправителя
    ->setSenderZip('109000')//Почтовый индекс
    ->setSenderCity('Москва')//Город отправителя
    ->setSenderAddress('Адрес отправителя')//Адрес отправителя
    ->setSenderContact('Контакт отправителя')//Контакт отправителя
    ->setSenderPhone('+0000000000')//Телефон отправителя
    ->setRecipient('Тестовый Получатель')
    ->setRecipientCountry('РОССИЯ')//Страна получателя
    ->setRecipientZip('109001')//Почтовый индекс получателя
    ->setRecipientCity('Москва')//Город Получателя
    ->setRecipientAddress('Адрес получателя')//Адрес получателя
    ->setRecipientContact('Контакт получателя')//Контакт получателя
    ->setRecipientPhone('+0000000000')//Телефон получателя
    ->setItems(1)//Количество мест в отправлении
    ->setWeight(1)//Вес, кг
    ->setCargoType(\ExpressRuSDK\Model\CargoTypes::CARGO_TYPE_CARGO)//Тип груза
    ->setCargoForm(new \ExpressRuSDK\Model\Entities\CargoForms\Box(10, 20, 30))//Форма груза и размеры
    ->setDescription('Описание отправления')
    ->setComment('Комментарий к отправлению')
    ->setCashOnDelivery(false)//Ноложенный платеж
    ->setPayer(\ExpressRuSDK\Model\Payers::CLIENT)//Плательщик
    ->setTypeOfPayment(\ExpressRuSDK\Model\TypesOfPayment::CASHLESS_PAYMENT)//Тип оплаты
    ->setUrgency(\ExpressRuSDK\Model\Urgency::STANDARD) //Срочность
    ->setReceivedInOffice(false) //Заказ принят в офисе
    ->setSelfPickup(false); //Самовывоз получателем. Получение заказа в офисе


try {
    $orderRepository->add($order);
    echo "<pre>";
    echo var_export($order->getExpressRuNumber());
    echo "</pre>";
} catch (\ExpressRuSDK\Model\Exceptions\ValidationException $ve) {
    echo "<pre>";
    echo var_export($ve->getErrors());
    echo "</pre>";
}

$sdk = new \ExpressRuSDK\SDK();

/* @var $order \ExpressRuSDK\Model\Entities\Order\Order */
$order = $sdk->getOrderApiRepository()->getOrderByNumber('WEBN230001274');

echo "<pre>";
var_export($order);
echo "<pre>";

$sdk = new \ExpressRuSDK\SDK();

/* @var $orders \ExpressRuSDK\Model\Collections\OrdersCollection*/
$orders = $sdk->getOrderApiRepository()->getOrdersHistory(new DateTime(), new DateTime());

echo "<pre>";
var_export($orders);
echo "<pre>";

$sdk = new \ExpressRuSDK\SDK();

// Вариант 1: Создание нового заказа и присвоение ему номера
$order = $sdk->getNewOrder()->setExpressRuNumber('WEBN230001274');

// Вариант 2: Получение заказа с данными и передача его в метод
$order = $sdk->getOrderApiRepository()->getOrderByNumber('WEBN230001274');

$result = $sdk->getTrackingService()->getTrackingStatus($order);
/* @var $result \ExpressRuSDK\Model\Collections\StatusesCollection|null */
echo "<pre>";
var_export($result);
echo "<pre><hr>";

 $sdk = new \ExpressRuSDK\SDK();

// Вариант 1: Создание нового заказа и присвоение ему номера
$order = $sdk->getNewOrder()->setExpressRuNumber('WEBN2300012574');

// Вариант 2: Получение заказа с данными и передача его в метод
$order = $sdk->getOrderApiRepository()->getOrderByNumber('WEBN230001274');

if($order) {
    //Получение PDF как текста
    //возвращает PDF как текст | null если заказ не найден
    $invoicePDFFile = $sdk->getPDFService()->getInvoicePDFForOrder($order);
    //Получени PDF и сохранение на диск
    //возвращает имя файла | null если заказ не найден
    $invoicePDFFile = $sdk->getPDFService()->saveInvoicePDFForOrderOnDisk($order, APPPATH . 'logs');

    echo "<pre>";
    var_export($invoicePDFFile);
    echo "<pre><hr>";
}

$userConfigProvider = new MySQLUSerConfigProvider();
$orderDefaultsProvider = new MySQLOrderDefaultsProvider();
$sdk = new \ExpressRuSDK\SDK($userConfigProvider, $orderDefaultsProvider);

$sdk = new \ExpressRuSDK\SDK();
$orderDefaultsProvider = new MySQLOrderDefaultsProvider();
$order = new \ExpressRuSDK\Model\Entities\Order\Order();
$order->setDefaultsFromProvider($orderDefaultsProvider);

/**
* $orderArray array - массив параметров заказа
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\CalculateOrderMethod($orderArray);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\CalculateOrderApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $orderArray array - массив параметров заказа
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\CreateOrderMethod($orderArray);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\CreateOrderApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $orderNumber string - номер заказа
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\GetOrderMethod($orderNumber);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\GetOrderApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $startDate \DateTime - дата начала выборки
* $toDate \DateTime - дата окончания выборки
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\GetOrdersHistoryMethod($startDate, $toDate);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\GetOrdersHistoryApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $numberS int|string|array - номера заказов
* $date string дата с которой начать выборку
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\GetTrackingStatusesMethod($numberS, $date);
/* @var  $apiResponse \ExpressRuSDK\API\ApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $orderNumber - номер заказа
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\PrintInvoiceMethod($orderNumber);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\PrintInvoiceApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

const USER_LOGIN = '用户名';
const USER_SIGNATURE_KEY = '签名密钥';
const USER_AUTHORIZATION_KEY = '授权密钥';

const ORDER_CLASS = 'ExpressRuSDK\\Model\\Entities\\Order\\Order';

$sdk = new \ExpressRuSDK\SDK();
$order = $sdk->getNewOrder();

$sdk = new \ExpressRuSDK\SDK();
$orderDefaultsProvider = $sdk->getOrderDefaultsProvider();
$order = new \ExpressRuSDK\Model\Entities\Order\Order();
$order->setDefaultsFromProvider($orderDefaultsProvider);

$sdk = new \ExpressRuSDK\SDK();
$calculateService = $sdk->getCalculateService();
/**
 * 新订单对象的获取
 */
$order = $sdk->getNewOrder();
$order
    ->setSenderCountry('俄罗斯')
    ->setRecipientCountry('俄罗斯')
    ->setSenderCity('俄罗斯')
    ->setRecipientCity('俄罗斯')
    ->setWeight(1)
    ->setCargoType(\ExpressRuSDK\Model\CargoTypes::CARGO_TYPE_CARGO)  //货物类型
    ->setCargoForm(new \ExpressRuSDK\Model\Entities\CargoForms\Box(10, 20, 30)); //货物类型

$calculateResultsCollection = $calculateService->getDeliveryPricesForOrder($order);
var_export($calculateResultsCollection);

$sdk = new \ExpressRuSDK\SDK();
$orderRepository = $sdk->getOrderApiRepository();
$order = $sdk->getNewOrder();

/**
 * 方案1:为成功建立订单所需的最小计算技术数据组
 * 被建立订单中的默认数据显示在
 * \ExpressRuSDK\OrderDefaults中,或在使用它的条件下,出现在默认数据的其他提供方中。
 * 部分内容将被跳过
 */
$order
    ->setPickupDate('2015-09-22')//取件日期
    ->setRecipient('测试性收件人')
    ->setRecipientCountry('俄罗斯')
    ->setRecipientCity('莫斯科')//收件人所在城市
    ->setRecipientAddress('收件人地址')
    ->setRecipientContact('收件人联系人')
    ->setRecipientPhone('+0000000000');

/**
 * 方案2:使用数据的全部计算技术数据组
 */
$order
    ->setPickupDate('2015-09-20')//取件日期
    ->setClientContact('客户联系人')// 客户联系人
    ->setSender('测试性发件人')
    ->setSenderCountry('俄罗斯')//发件人所在国家
    ->setSenderZip('109000')//邮政编码
    ->setSenderCity('莫斯科')//收件人所在城市
    ->setSenderAddress('发件人地址')//发件人地址
    ->setSenderContact('发件人联系人')//发件人联系人
    ->setSenderPhone('+0000000000')//发件人电话
    ->setRecipient('测试性收件人')
    ->setRecipientCountry('俄罗斯')//收件人所在国家
    ->setRecipientZip('109001')//邮政编码
    ->setRecipientCity('莫斯科')//收件人所在城市
    ->setRecipientAddress('收件人地址')//收件人地址
    ->setRecipientContact('收件人联系人')//收件人联系人
    ->setRecipientPhone('+0000000000')//收件人电话
    ->setItems(1)//邮件件数
    ->setWeight(1)//质量,千克
    ->setCargoType(\ExpressRuSDK\Model\CargoTypes::CARGO_TYPE_CARGO)//货物类型
    ->setCargoForm(new \ExpressRuSDK\Model\Entities\CargoForms\Box(10, 20, 30))//货物形状和尺寸
    ->setDescription('邮件描述')
    ->setComment('邮件注释')
    ->setCashOnDelivery(false)//货到付款
    ->setPayer(\ExpressRuSDK\Model\Payers::CLIENT)//付款人
    ->setTypeOfPayment(\ExpressRuSDK\Model\TypesOfPayment::CASHLESS_PAYMENT)//付款方式
    ->setUrgency(\ExpressRuSDK\Model\Urgency::STANDARD) //急件
    ->setReceivedInOffice(false) //、在办事处接受订单
    ->setSelfPickup(false); //收件人自取。


try {
    $orderRepository->add($order);
    echo "<pre>";
    echo var_export($order->getExpressRuNumber());
    echo "</pre>";
} catch (\ExpressRuSDK\Model\Exceptions\ValidationException $ve) {
    echo "<pre>";
    echo var_export($ve->getErrors());
    echo "</pre>";
}

$sdk = new \ExpressRuSDK\SDK();

/* @var $order \ExpressRuSDK\Model\Entities\Order\Order */
$order = $sdk->getOrderApiRepository()->getOrderByNumber('WEBN230001274');

echo "<pre>";
var_export($order);
echo "<pre>";

$sdk = new \ExpressRuSDK\SDK();

/* @var $orders \ExpressRuSDK\Model\Collections\OrdersCollection*/
$orders = $sdk->getOrderApiRepository()->getOrdersHistory(new DateTime(), new DateTime());

echo "<pre>";
var_export($orders);
echo "<pre>";

$sdk = new \ExpressRuSDK\SDK();

// 方案1:创建新订单并获得订单号
$order = $sdk->getNewOrder()->setExpressRuNumber('WEBN230001274');

// 方案2:获得带有数据的订单并将它发送到方法论中
$order = $sdk->getOrderApiRepository()->getOrderByNumber('WEBN230001274');

$result = $sdk->getTrackingService()->getTrackingStatus($order);
/* @var $result \ExpressRuSDK\Model\Collections\StatusesCollection|null */
echo "<pre>";
var_export($result);
echo "<pre><hr>";

 $sdk = new \ExpressRuSDK\SDK();

// 方案1:创建新订单并获得订单号
$order = $sdk->getNewOrder()->setExpressRuNumber('WEBN2300012574');

// 方案2:获得带有数据的订单并将它发送到方法论中
$order = $sdk->getOrderApiRepository()->getOrderByNumber('WEBN230001274');

if($order) {
    //获得PDF文本
    //如果无法找到订单,则将PDF还原为| null 文本
    $invoicePDFFile = $sdk->getPDFService()->getInvoicePDFForOrder($order);
    //获得PDF并保存在磁盘中
    //如果无法找到订单,则还原 | null 文件名
    $invoicePDFFile = $sdk->getPDFService()->saveInvoicePDFForOrderOnDisk($order, APPPATH . 'logs');

    echo "<pre>";
    var_export($invoicePDFFile);
    echo "<pre><hr>";
}

$userConfigProvider = new MySQLUSerConfigProvider();
$orderDefaultsProvider = new MySQLOrderDefaultsProvider();
$sdk = new \ExpressRuSDK\SDK($userConfigProvider, $orderDefaultsProvider);

$sdk = new \ExpressRuSDK\SDK();
$orderDefaultsProvider = new MySQLOrderDefaultsProvider();
$order = new \ExpressRuSDK\Model\Entities\Order\Order();
$order->setDefaultsFromProvider($orderDefaultsProvider);

/**
* $orderArray array - 订单数据数组
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\CalculateOrderMethod($orderArray);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\CalculateOrderApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $orderArray array - 订单数据数组
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\CreateOrderMethod($orderArray);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\CreateOrderApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $orderNumber string - 订单号
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\GetOrderMethod($orderNumber);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\GetOrderApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $startDate \DateTime - 取样的开始日期
* $toDate \DateTime - 取样的结束日期
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\GetOrdersHistoryMethod($startDate, $toDate);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\GetOrdersHistoryApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $numberS int|string|array - 订单号
* $date string 取样的开始日期
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\GetTrackingStatusesMethod($numberS, $date);
/* @var  $apiResponse \ExpressRuSDK\API\ApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);

/**
* $orderNumber - 订单号
*/
$sdk = new \ExpressRuSDK\SDK();
$apiTransmitter = $sdk->getApiTransmitter();
$method = new \ExpressRuSDK\Api\Methods\PrintInvoiceMethod($orderNumber);
/* @var  $apiResponse \ExpressRuSDK\API\Responses\PrintInvoiceApiResponse */
$apiResponse = $this->apiTransmitter->transmitMethod($method);
bootstrap.php
bootstrap.php