Как получить shipping id?

MrFlashAccount

Как в хуке плагина магазина order_action.create получить id выбранной компании доставки, полученный в плагине доставки в методе calculate?

19 августа 2016
  • Алексей Webasyst 21 августа 2016 10:44

    В хук передаётся информация о заказе, соответственно из параметров - примерно $order['params']['shipping_id']

  • MrFlashAccount 23 августа 2016 14:30

    Я точно так же использовал, но, независимо от выбранного варианта доставки $order['params']['shipping_id'] возвращает "5".

    Метод calculate возвращает, к примеру вот такой массив:

    services = [{name = 'Test', id = '108', rate = '400', est_delivery = '1 день', Currency = 'RUB'}]

    Вот фрагмент кода, который отвечает за разбор json. работает корректно, лично проверял

    foreach ($carriers->response as $key => $value){
    $item = array(
    'name' => $value->delivery_company_name,
    'id' => $value->delivery_company,
    'rate' => $value->total_price,
    'est_delivery' => $value->delivery_time_min === $value->delivery_time_max ?
    "$value->delivery_time_max дней" : "от $value->delivery_time_min до $value->delivery_time_max дней",
    'currency' => $this->allowedCurrency()
    );
    array_push($services, $item); }

    ЧЯДНТ?

  • Syrnik.com 23 августа 2016 14:38

    shipping_id это ID метода доставки, а не варианта, предлагаемого этим методом

  • MrFlashAccount 23 августа 2016 14:50

    Однако, в order нет других упоминаний id компании доставки и я не верю, что эти,безусловно, полезные данные пропадают в недрах webasyst, при этом сохраняются "второстепенные данные". Есть способ передать id компании доставки напрямую в хук?

  • Роман 25 января 2017 16:41

    Господа, простите, что опять поднимаю этот вопрос, но, все же, как на шаге checkout/shipping можно получить актуальные shipping_id (именно ID методов доставки).

    "Актуальные" - я имею в виду не все, которые существуют в магазине, а только те, которые были выданы для конкретного заказа, с учетом ограничений доставки до весу, регионам и т.п.

    К примеру в шаблоне это можно легко получить из переменной {$checkout_shipping_methods}

    как получить эту же информацию в PHP?

    Спасибо!

  • Николай Иванов 26 января 2017 09:02

    Очевидный ответ - посмотреть как и чем формируется переменная $checkout_shipping_methods для эшенов чекуатуа и делать тоже самое.

  • Syrnik.com 26 января 2017 12:31

    если речь не о шаблоне, то см. метод listPlugins() в shopPluginModel

  • Роман 26 января 2017 18:58

    Сергей, спасибо!

    Если еще, кто-то будет искать, то:

    $plugin_model = new shopPluginModel();
    $methods = $plugin_model->listPlugins('shipping');
    // ну и, как вариант:
    wa_dumpc($methods);
    


Чтобы добавить комментарий, зарегистрируйтесь или войдите