Интеграция API: как получить полную информацию о заказе из ShopwarePhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Интеграция API: как получить полную информацию о заказе из Shopware

Сообщение Anonymous »

Я разрабатываю интеграцию API с Shopware.
К сожалению, у меня нет доступа к полному контролю над веб-сайтом Shopware.
Весь проект находится в разработке. от GetPrintBox (PBX).
Немного информации: сделали контроллер для печати фотографий и фотоальбомов на базе Shopware. Конечно, у меня нет доступа к большинству функций админки, в том числе к коду.
Задача: мне нужно отправлять заказы в CRM.
Я уже разработали базовый код, он выглядит примерно так:

Код: Выделить всё

$date = new \DateTimeImmutable();
$now = $date->format($this->gpbFormatDateTime);
$datetime_start_get_new = date($this->gpbFormatDateTime, (int)$datetime_start_get_new);

if ($datetime_start_get_new == FALSE) {
//get all orders (first request)
$orderDateTime = [
'type' => 'range',
'field' => 'orderDateTime',
'parameters' => [
'gte' => '2022-01-01', // => (from)
]
];
} else {
$orderDateTime = [
//if data has been created (in configs file) - get last orders
"type" => "range",
"field" => "orderDateTime",
"parameters" => [
"gte" => $datetime_start_get_new, // => (from)
"lte" => $now // httpClient->request('GET', $this->baseUri . '/api/order', [ //ok
'headers' => [
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json'
],

'query' => [
'sort' => [
[
'field' => 'orderNumber',
'order' => 'asc'
],
],
"filter" => [
$orderDateTime,
],
'associations' => [
'lineItems' => [
'associations' => [
'product' => [
'limit' => 1000, //all
'filter' => [
"type" => "equals",
"field" => "active",
"value" => true
]
],
],
],
"deliveries" => [],
'billingAddress' => [
'limit' => 1,
'associations' => [
'country' => [
'limit' => 1
],
],
],
]

]

]);
} catch (ClientException $e) {
$response = $e->getResponse();
}

$status_code = $response->getStatusCode();

$body = $response->getBody();
$contents = $body->getContents();

$response = json_decode($contents);
if ($status_code == 200) {
$message = 'Action "getOrders NO Update". NO ERROR, Order received';
Logger::log($message);
return $response;
} else {
$message = 'Action "getOrders". Error: ' . $status_code . '. Info: ' .  $response->errors[0]->title;
Logger::log($message);
return FALSE;
}
Я понял:
Изображение

Пример порядка:

Код: Выделить всё

[0] => stdClass Object
(
[extensions] => stdClass Object
(
[foreignKeys] => stdClass Object
(
[extensions] => Array
(
)

[apiAlias] =>
)

)

[_uniqueIdentifier] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[versionId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[translated] => Array
(
)

[createdAt] => 2024-05-26T11:21:55.334+00:00
[updatedAt] => 2024-05-26T12:17:50.335+00:00
[orderNumber] => 10669
[currencyId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[currencyFactor] => 1
[salesChannelId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[billingAddressId] => fda035734dc64f16a4ae3ca827ed6ec8
[orderDateTime] => 2024-05-26T11:21:54.624+00:00
[orderDate] => 2024-05-26T00:00:00.000+00:00
[price] => stdClass Object
(
[extensions] => Array
(
)

[netPrice] => 730
[totalPrice] => 730
[calculatedTaxes] => Array
(
)

[taxRules] => Array
(
)

[positionPrice] => 730
[taxStatus] => tax-free
[rawTotal] => 730
[apiAlias] => cart_price
)

[amountTotal] => 730
[amountNet] => 730
[positionPrice] => 730
[taxStatus] => tax-free
[shippingCosts] => stdClass Object
(
[extensions] => Array
(
)

[unitPrice] => 0
[quantity] => 1
[totalPrice] => 0
[calculatedTaxes] => Array
(
)

[taxRules] => Array
(
)

[referencePrice] =>
[listPrice] =>
[regulationPrice] =>
[apiAlias] => calculated_price
)

[shippingTotal] => 0
[orderCustomer] => stdClass Object
(
[extensions] => stdClass Object
(
[foreignKeys] => stdClass Object
(
[extensions] => Array
(
)

[apiAlias] =>
)

[internal_mapping_storage] => stdClass Object
(
[extensions] => Array
(
)

[apiAlias] =>
)

)

[_uniqueIdentifier] =>  qqqqqqqqqqqqqqqqqqqqqqqqqq
[versionId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[translated] => Array
(
)

[createdAt] => 2024-05-26T11:21:55.330+00:00
[updatedAt] =>
[email] => Denis@denis.com
[orderId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[salutationId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[firstName] => Denis
[lastName] => Denis
[title] =>
[vatIds] =>
[company] =>
[customerNumber] => 10736
[customerId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[customer] =>
[salutation] =>
[order] =>
[remoteAddress] => 91.196.55.0
[id] => 4008bc562a9047fd98c5707c8b8c1566
[customFields] => stdClass Object
(
[pbx_pbx2_model_name] => Customer
[pbx_pbx2_customer_id] => 76249
)

[orderVersionId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[apiAlias] => order_customer
)

[currency] =>
[languageId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[language] =>
[salesChannel] =>
[addresses] =>
[billingAddress] =>
[deliveries] =>
[lineItems] =>
[transactions] =>
[deepLinkCode] => qqqqqqqqqqqqqqqqqqqqqqqqqq-q
[autoIncrement] => 806
[stateMachineState] => stdClass Object
(
[extensions] => stdClass Object
(
[foreignKeys] => stdClass Object
(
[extensions] => Array
(
)

[apiAlias] =>
)

[internal_mapping_storage] => stdClass Object
(
[extensions] => Array
(
)

[apiAlias] =>
)

)

[_uniqueIdentifier] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[versionId] =>
[translated] => stdClass Object
(
[name] => In Progress
[customFields] => Array
(
)

)

[createdAt] => 2021-01-29T18:24:22.731+00:00
[updatedAt] =>
[name] => In Progress
[technicalName] => in_progress
[stateMachineId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[stateMachine] =>
[fromStateMachineTransitions] =>
[toStateMachineTransitions] =>
[translations] =>
[orders] =>
[orderTransactionCaptures] =>
[orderTransactionCaptureRefunds] =>
[orderTransactions] =>
[orderDeliveries] =>
[fromStateMachineHistoryEntries] =>
[toStateMachineHistoryEntries] =>
[id] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[customFields] =>
[apiAlias] => state_machine_state
)

[stateId] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[documents] =>
[tags] =>
[affiliateCode] =>
[campaignCode] =>
[customerComment] =>
[ruleIds] => Array
(
[0] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[1] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[2] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[3] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[4] => qqqqqqqqqqqqqqqqqqqqqqqqqq
[5] => qqqqqqqqqqqqqqqqqqqqqqqqqq
)

[createdById] =>
[createdBy] =>
[updatedById] =>
[updatedBy] =>
[itemRounding] => stdClass Object
(
[extensions] => Array
(
)

[decimals] => 2
[interval] => 0.01
[roundForNet] => 1
[apiAlias] => shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config
)

[totalRounding] => stdClass Object
(
[extensions] => Array
(
)

[decimals] => 2
[interval] => 0.01
[roundForNet] => 1
[apiAlias] => shopware_core_framework_data_abstraction_layer_pricing_cash_rounding_config
)

[id] => 007e0f8c20244319a65c524d6a2173ee
[customFields] => stdClass Object
(
[pbx_pbx2_order_id] => 185
[pbx_pbx2_model_name] => Order
[pbx_pbx2_order_is_testing] =>
)

[billingAddressVersionId] => qqqqqqqqqqqqqqqqqqqq
[apiAlias] => order
)
(Некоторые данные заменил на символ «q»)
Проблема: Я не получаю полную информацию о заказе. Например, я не получаю информацию о доставках и платежах.
В настройках я увидел, что у меня нет права доступа «Администратор».
Изображение

Изображение

Мне нужна помощь. Спасибо!

ОБНОВЛЕНО:
Привет. Я разобрался со своей проблемой.
Если кому интересно:
Права администратора тут ни при чем.
Нужно просто правильно написать запрос.)
Например , для транзакций:

Код: Выделить всё

"transactions" => [
'limit' => 1,
"associations" => [
"paymentMethod" => [
'limit' => 1,
]
]
],
Например, для доставок:

Код: Выделить всё

"deliveries" => [
'limit' => 1,
"associations" => [
"shippingMethod" => [
'limit' => 1,
]
]
],
Все это необходимо указать в запросе.
Логика системы такова, что каждый объект нужно попросить, скажем так, сделать запрос, для его получения.

Если у вас есть дополнительные вопросы, свяжитесь со мной, и я постараюсь помочь.

Подробнее здесь: https://stackoverflow.com/questions/785 ... m-shopware
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»