Skip to content

Commit

Permalink
Merge pull request #38 from apiship/APIS-4824
Browse files Browse the repository at this point in the history
Добавление метода получения информации о заказе
  • Loading branch information
Jaburenje authored May 13, 2024
2 parents aa8ca87 + 820330e commit 9c76b46
Show file tree
Hide file tree
Showing 11 changed files with 3,224 additions and 0 deletions.
26 changes: 26 additions & 0 deletions examples/order/test_get_order_id.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?php

require(__DIR__ . '/../../vendor/autoload.php');

use Apiship\Adapter\GuzzleAdapter;
use Apiship\Apiship;
use Apiship\Exception\ResponseException;

try {
$adapter = new GuzzleAdapter('test', 'test', true);
$apiship = new Apiship($adapter);

$orderInfo = $apiship->orders()->getOrderInfo(60132);

print_r($orderInfo);
} catch (ResponseException $e) {
echo $e->getErrorApishipCode() . PHP_EOL;
echo $e->getErrorMessage() . PHP_EOL;
echo $e->getErrorDescription() . PHP_EOL;
echo $e->getErrorMoreInfo() . PHP_EOL;
print_r($e->getErrors());
exit;
} catch (Exception $e) {
print_r($e->getMessage());
exit;
}
120 changes: 120 additions & 0 deletions src/Api/Orders.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,22 @@
use Apiship\Entity\Response\CreateOrderResponse;
use Apiship\Entity\Response\CreateSyncOrderResponse;
use Apiship\Entity\Response\DeleteOrderResponse;
use Apiship\Entity\Response\OrderInfoResponse;
use Apiship\Entity\Response\Part\Meta;
use Apiship\Entity\Response\Part\Order\FailedOrder;
use Apiship\Entity\Response\Part\Order\OrderInfo;
use Apiship\Entity\Response\Part\Order\OrderStatus;
use Apiship\Entity\Response\Part\Order\StatusHistory;
use Apiship\Entity\Response\Part\Order\SucceedOrder;
use Apiship\Entity\Response\Part\Order\WaybillItem;
use Apiship\Entity\Response\Part\OrderInfo\Cost;
use Apiship\Entity\Response\Part\OrderInfo\ExtraParam;
use Apiship\Entity\Response\Part\OrderInfo\Item;
use Apiship\Entity\Response\Part\OrderInfo\Order;
use Apiship\Entity\Response\Part\OrderInfo\Place;
use Apiship\Entity\Response\Part\OrderInfo\Recipient;
use Apiship\Entity\Response\Part\OrderInfo\ReturnAddress;
use Apiship\Entity\Response\Part\OrderInfo\Sender;
use Apiship\Entity\Response\ResendOrderResponse;
use Apiship\Entity\Response\StatusesByDateResponse;
use Apiship\Entity\Response\StatusesResponse;
Expand Down Expand Up @@ -359,6 +368,117 @@ public function getStatusesByDate($date)
return $response;
}

/**
* Получает информацию по заказу
* @param int $orderId ID заказа
*
* @return OrderInfoResponse
*/
public function getOrderInfo($orderId)
{
$resultJson = $this->adapter->get("orders/$orderId");
$result = json_decode($resultJson);

$response = new OrderInfoResponse();
$response->setOriginJson($resultJson);

if (!empty($result)) {
$order = new Order();
foreach ($result->order as $key => $value) {
try {
$order->$key = $value;
} catch (Exception $e) {
continue;
}
}
$response->setOrder($order);

$cost = new Cost();
foreach ($result->cost as $key => $value) {
try {
$cost->$key = $value;
} catch (Exception $e) {
continue;
}
}
$response->setCost($cost);

$sender = new Sender();
foreach ($result->sender as $key => $value) {
try {
$sender->$key = $value;
} catch (Exception $e) {
continue;
}
}
$response->setSender($sender);

$recipient = new Recipient();
foreach ($result->recipient as $key => $value) {
try {
$recipient->$key = $value;
} catch (Exception $e) {
continue;
}
}
$response->setRecipient($recipient);

$returnAddress = new ReturnAddress();
foreach ($result->returnAddress ?? [] as $key => $value) {
try {
$returnAddress->$key = $value;
} catch (Exception $e) {
continue;
}
}
$response->setReturnAddress($returnAddress);

$places = [];
foreach ($result->places ?? [] as $originPlace) {
$place = new Place();
foreach ($originPlace as $key => $value) {
try {
if ($key === 'items') {
$items = [];
foreach ($value as $originItem) {
$item = new Item();
foreach ($originItem as $iKey => $iValue) {
if (property_exists($item,$iKey)){
$item->$iKey = $iValue;
}
}
$items[] = $item;
}
$place->setItems($items);
continue;
}
$place->$key = $value;
} catch (Exception $e) {
continue;
}
}
$places[] = $place;
}
$response->setPlaces($places);

$extraParams = [];
foreach ($result->extraParams as $originExtraParams) {
try {
$extraParam = new ExtraParam();
foreach ($originExtraParams as $key => $value) {
$extraParam->$key = $value;
}
$extraParams[] = $extraParam;
} catch (Exception $e) {
continue;
}
}
$response->setExtraParams($extraParams);
}

return $response;
}

/**
* Получение истории изменения всех статусов с определенной даты
*
Expand Down
Loading

0 comments on commit 9c76b46

Please sign in to comment.