PHP code example of antistress-store / cdek-sdk-v2

1. Go to this page and download the library: Download antistress-store/cdek-sdk-v2 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/ */

    

antistress-store / cdek-sdk-v2 example snippets


$cdek_client = new \AntistressStore\CdekSDK2\CdekClientV2('TEST');

$cdek_client = new \AntistressStore\CdekSDK2\CdekClientV2($account, $secure);

$cdekSdkAuthSaver = function (array $memory) {
session($memory); // сохраняем в сессии возвращенный массив с данными авторизации
return true;
        };

 ['cdekAuth'=>
[
'expires_in' => '', // здесь будет сохранено время до исчерпания срока действия токэна
"access_token" => '', // здесь будет сохранен токэн
'account_type' => '', // здесь будет тип среды
] 
];

// Например, в Laravel можно указать ключ сессии session('cdekAuth')
$cdek_client->setMemory(session('cdekAuth'), $cdekSdkAuthSaver);

$tariff = (new Tariff())
            ->setCityCodes(172, 44) // Экспресс-метод установки кодов отправителя и получателя
            ->setPackageWeight(500)
            ->addServices(['PART_DELIV'])
                ;

$tariffList = $cdek_client->calculateTariffList($tariff);

foreach ($tariffList as $result) {
$result->getTariffName(); // Код тарифа
$result->getTariffCode(); // Название тарифа
$result->getTariffDescription(); // Описание тарифа
$result->getDeliverySum(); // Стоимость доставки	
$result->getDeliveryMode(); // Режим тарифа
$result->getPeriodMin(); // Минимальное время доставки (в рабочих днях)	
$result->getPeriodMax(); // Максимальное время доставки (в рабочих днях)	
}


$tariff = (new Tariff())
            ->setTariffCode(136) // Указывает код тарифа для расчета
            ->setCityCodes(172, 44) // Экспресс-метод установки кодов отправителя и получателя
            ->setPackageWeight(500)
            ->addServices(['PART_DELIV'])
                ;

$tariff_response = $cdek_client->calculateTariff($tariff); // TariffResponse

->getDeliverySum()
->getPeriodMin()
->getPeriodMax()
->getWeightCalc()
->getTotalSum()
->getCurrency()
->getServices()

  $tariff = (new Tariff())
            ->setCityCodes(172, 172)
            ->setTariffCode(136)
            ->setPackageWeight(500)
            ->addServices(['INSURANCE' => 10000])
        ;

  $tariffResponce = $cdek_client->->calculateTariff($tariff);
 
 //... При таких установках на выходе имеем рассчитанную суммы страховки, см  object = AntistressStore\CdekSDK2\Entity\Responses\ServicesResponse
 
 $tariffResponce object = AntistressStore\CdekSDK2\Entity\Responses\TariffResponse
    delivery_sum float = 130
    period_min int = 8
    period_max int = 12
    weight_calc int = 500
    total_sum float = 246
    currency string = "RUB"
  services array = array(1)
   0 object = AntistressStore\CdekSDK2\Entity\Responses\ServicesResponse
      sum float = 75
      code string = "INSURANCE"
      parameter null = null


$requestPvz = (new DeliveryPoints())->setType('PVZ')->setCityCode(44);
$responsePvz = $cdek_client->getDeliveryPoints($requestPvz);
        
        foreach ($responsePvz as $item) {
        $item->getCode();
        $item->getName();
        $item->getLocation()->getAddress();
        $item->getWorkTime();
        $item->getLocation()->getPostalCode();
        $item->getWorkTimeList();
        $item->getWorkTimeExceptions();
        $item->getNote();
        $item->getOwnerCode();
        $item->getNearestStation();
        $item->getNearestMetroStation();
        $item->getSite();
        $item->getEmail();
        $item->getAddressComment();
        $item->getOfficeImageList();
        $item->getDimensions();
        $item->getHaveCashless();
        $item->getHaveCash();
        $item->getAllowedCod();
        $item->getIsDressingRoom();
        $item->getIsHandout();
        $item->getIsReception();
        $item->getWeightMax();
        $item->getWeightMin();
        $item->getTakeOnly();
        }

     ->setAllowedCod()
     ->setCityCode()
     ->setCountryCode()
     ->setHaveCash()
     ->setHaveCashless()
     ->setIsDressingRoom()
     ->setIsHandout()
     ->setIsReception()
     ->setLang()
     ->setPickupOnly()
     ->setRegionCode()
     ->setRegionCode()
     ->setTakeOnly()
     ->setType()
     ->setWeightMax()
     ->setWeightMin()
     ->withCode()
     ->withPostalCode()
  

     ->setCountryCodes()
     ->setFiasRegionGuid()
     ->setKladrRegionCode()
     ->setLang()
     ->setPage()
     ->setRegionCode()
     ->setSize()
  

$request = (new Location())->setCountryCodes('RU,TR');
$response = $cdek_client->getRegions($request);

     ->setCity()
     ->setCode()
     ->setCountryCodes()
     ->setFiasGuid()
     ->setFiasRegionGuid()
     ->setKladrCode()
     ->setKladrRegionCode()
     ->setLang()
     ->setPage()
     ->setPaymentLimit()
     ->setPostalCode()
     ->setRegionCode()
     ->setSize()
     ->withCode()
     ->withPostalCode()
  

$request = (new Location())->setCountryCodes('RU,TR')->setCode(44);
$response = $cdek_client->getCities($request);

// запрос всех данных формы (Laravel)

$cdek_data = $request->except('_token'); 

// Создание объекта заказа

$order = (new \AntistressStore\CdekSDK2\Entity\Requests\Order())
            ->setNumber('НовыйЗаказ1') // Номер заказа
            ->setType(1)                      // Тип заказа (ИМ)
            ->setComment('Оплата по карте') // Комментарий
            ->setTariffCode(136) // Код тарифа
            ->setDeliveryRecipientCost(150,55) // Стоимость доставки
            ->setPrint('waybill') // Запрос создать файл накладной вместе с заказом
    ;

// Добавление информации о продавце

$seller = (new \AntistressStore\CdekSDK2\Entity\Requests\Seller())
            ->setName('Antistress.Store')
            ->setInn(77777777777)
            ->setPhone('88002017708')
            ->setOwnershipForm(63)
        ;
$order->setSeller($seller);

// Добавление информации о получателе

$recipient = (new \AntistressStore\CdekSDK2\Entity\Requests\Contact())
            ->setName('Мастер Йода')
            ->setEmail('[email protected]')
            ->setPhones('911')
        ;
$order->setRecipient($recipient);

// Адрес отправителя только для тарифов "от двери"

            $order->setShipmentAddress('ул.Люка Скайоукера, д.1') 
                ->setShipmentCityCode(1204)
                ->setRecipientAddress('ул.Джедаев, д.3')
                ->setRecipientCityCode(44)
            ;

// Создаем данные посылки. Место

        $packages =
            (new \AntistressStore\CdekSDK2\Entity\Requests\Package())
            ->setNumber('1')
            ->setWeight(500)->setHeight(10)->setWidth(10)
            ->setLength(10)
        ;

 \\ вариант 1 Один экземпляр класса
        $packages =
        (new \AntistressStore\CdekSDK2\Entity\Requests\Package())
            ->setNumber('1')
            ->setWeight(500)
            ->setHeight(10)
            ->setWidth(10)
            ->setLength(10)
        ;

      $order->setPackages($packages);

 \\ массив c экземплярами класса
        $packages = [];

        $packages[] =
        (new \AntistressStore\CdekSDK2\Entity\Requests\Package())
            ->setNumber('1')
            ->setWeight(500)
            ->setHeight(10)
            ->setWidth(10)
            ->setLength(10)
        ;

      $order->setPackages($packages);

$uuid = $response->getEntityUuid();

$cdek_client->getOrderInfoByImNumber('НовыйЗаказ1');

$cdek_client->getOrderInfoByCdekNumber('1105661402');

$cdek_client->getOrderInfoByUuid($uuid);

     ->getCdekNumber()
     ->getComment()
     ->getDeliveryDetail()
     ->getDeliveryMode()
     ->getDeliveryPoint()
     ->getDeliveryProblem()
     ->getDeliveryRecipientCost()
     ->getDeliveryRecipientCostAdv()
     ->getDeveloperKey()
     ->getFromLocation()
     ->getIsReturn()    
     ->getIsReverse()   
     ->getItemsCostCurrency()
     ->getLastRelated()
     ->getNumber()
     ->getOrderUuid()
     ->getPackages()
     ->getRecipient()
     ->getRecipientCurrency()
     ->getRelatedEntities()
     ->getRequests()
     ->getSeller()
     ->getSender()
     ->getServices()
     ->getShipmentPoint()
     ->getShipperAddress()
     ->getShipperName()
     ->getStatuses()
     ->getTariffCode()  
     ->getToLocation()
     ->getTransactedPayment()
     ->getType()        
     ->getUuid()
 

     ->addServices()
     ->setAddresses()
     ->setCdekNumber()
     ->setCities()
     ->setCityCodes()
     ->setComment()
     ->setCurrency()
     ->setDate()
     ->setDateInvoice()
     ->setDeliveryPoint()
     ->setDeliveryRecipientCost()
     ->setDeliveryRecipientCostAdv()
     ->setDeveloperKey()
     ->setFromLocation()
     ->setItemsСostСurrency()
     ->setNumber()
     ->setOrderUuid()
     ->setPackages()
     ->setPackageWeight()
     ->setPostalCodes()
     ->setPrint()
     ->setRecipient()
     ->setRecipientAddress()
     ->setRecipientCityCode()
     ->setRecipientCurrency()
     ->setSeller()
     ->setSender()
     ->setSenderCityCode()
     ->setServices()
     ->setShipmentAddress()
     ->setShipmentCityCode()
     ->setShipmentPoint()
     ->setShipperAddress()
     ->setShipperName()
     ->setTariffCode()
     ->setToLocation()
     ->setType()
     ->setUuid()
     ->withCdekNumber()
     ->withOrderUuid()
     
  

$cdek_client->getOrderInfoByUuid($uuid)->getRelatedEntities();

$newest = $cdek_client->getOrderInfoByUuid($uuid)->getLastRelated('waybill');

$cdek_client->getInvoicePdf($newest);

$invoice = $cdek_client->setInvoice(Invoice::withOrdersUuid($uuid)); // $uuid - uuid заказа
$invoice_uuid = $invoice->getEntityUuid();
$cdek_client->getInvoicePdf($invoice_uuid);

->setOrders()      
->setCopyCount()   
->setType()        
->withOrdersUuid() 
->withCdekNumbers()

$cdek_client->getInvoice($invoice_uuid); // PrintResponse

->getOrderUuid()
->getUrl()      
->getCopyCount()
->getLang()     
->getFormat()   
->getStatuses()  

  $cdek_client->deleteOrder($uuid);

  $cdek_client->сancelOrder($uuid);

$cdek_data = $request->except('_token'); // запрос всех данных формы
$agreement = (new Agreement())
            ->setCdekNumber((int) $cdek_data['DispatchNumber'])
            ->setDate($cdek_data['deliveryDate'])
            ->setTimeFrom($cdek_data['timeFrom'])
            ->setTimeTo($cdek_data['timeTo'])
            ->setComment('Позвонить за 2 часа')
            ->setToLocation(
                (new Location())
                    ->setCode((int) $cdek_data['RecCityCode'])
                    ->setAddress($cdek_data['Street'])
                    )
        ;
    
$response = $cdek_client->createAgreement($agreement);

$response->getEntityUuid();

$cdek_client->getAgreement($agreement);

->getUuid()
->getOrderUuid()
->getCdekNumber()
->getSender()
->getNumber()
->getComment()
  

$cdek_data = $request->except('_token'); // запрос всех данных формы
$agreement = (new Intakes())
            ->setCdekNumber((int) $cdek_data['DispatchNumber'])
            ->setIntakeDate($cdek_data['IntakeDate'])
            ->setIntakeTimeFrom($cdek_data['timeFrom'])
            ->setIntakeTimeTo($cdek_data['timeTo'])
            ->setName('световой меч джедая') // название товара, груза
            ->setSender((new Contact())
            ->setCompany('Орден джедаев')
            ->setName('Люк Скайоукер')
            ->setPhones('911')
            )
            ->setFromLocation(
                (new Location())
                    ->setCode((int) $cdek_data['RecCityCode'])
                    ->setAddress($cdek_data['Street'])
                    )
        ;
    
$response = $cdek_client->createIntakes($intakes);

$cdek_client->getIntakes($uuid);

->getIntakeNumber()
->getStatuses()
->getUuid()
->getOrderUuid()
->getCdekNumber()
->getSender()
->getNumber()
->getComment()
->getWeight()
->getLength()
->getWidth()
->getHeight()
->getIntakeDate()
->getIntakeTimeFrom()
->getIntakeTimeTo()
->getLunchTimeFrom()
->getLunchTimeTo()
->getName()
->getNeedCall()
->getFromLocation()

$cdek_client->deleteIntakes($uuid);

$date = '2021-03-25';
$orders = $cdek_client->getPayments($date)->getOrders();
// возвращается массив с оплаченными, итерируемся, получаем данные об отдельном чеке
  foreach($orders as $order) {
     $order["uuid"]; // Идентификатор заказа в ИС СДЭК	
     $order["numberOrder"]; // Номер заказа СДЭК	
     $order["imNumber"]; // Номер заказа в ИС Клиента	
  }

$checks = $cdek_client->getChecks((new Check())
  ->setCdekNumber('123456789')
  ->setDate('2021-03-25')));
// возвращается массив с чеками, итерируемся, получаем данные об отдельном чеке
  foreach($checks as $check) {
    $check->getCdekNumber();
    $check->getOrderUuid();
    $check->getDate();
    $check->getFiscalStorageNumber();
    $check->getDocumentNumber();
    $check->getFiscalSign();
    $check->getType();
    $check->getPaymentInfo();
  }

$webhook = $cdek_client->setWebhooks(
  (new Webhooks())
  ->setUrl('https://antistress.store')
  ->setType('ORDER_STATUS'));
  $webhook->getEntityUuid();

// Создаем товары

        $items = [];
        $items[] = (new Item())
            ->setName('name')
            ->setWareKey('articul') // Идентификатор/артикул товара/вложения
            ->setPayment(1500.00, 0) // Оплата за товар при получении, без НДС (за единицу товара)
            ->setCost((1500.00) // Объявленная стоимость товара (за единицу товара)
            ->setWeight(100) // Вес в граммах
            ->setAmount(1) // Количество
        ;

$packages->setItems($items);
$order->setPackages($packages);
    
// Добавление доп.услуг (бесплатных) частичная доставка

        if (count($items) < 1) {
            $order->addServices(['PART_DELIV']);
        }

// Заказ подготовлен отправляем в ранее объявленный клиент

$response = $cdek_client->createOrder($order);