Уведомления HTTP-запрос Есть решение

Приветствую!

В последнем обновлении Shop-Script появилась возможность настраивать на уведомления свои HTTP-запросы. 

Фича очень крутая, хочу настроить отправку при статусе "Подтвержден". 

Возможно я допускаю ошибку в синтаксисе или в чем может быть проблема, подскажите? 

Пример тела запроса, которое должно уходить

[{
    "uuid": "23895684-7d67-4a61-9f36-5e87f96a6be4",
    "qty": 1
},
{
    "uuid": "23895684-7d67-4a61-9f36-5e87f96a6be4",
    "qty": 3
}]
uuid - характеристика товара "external-id"
qty - кол-во товара (конкретной позиции, не всего)


Я написал в поле POST-параметры следующее:


Пришло из Shop Script (не подставились значения):
{"{$product ":" $wa->shop->product($item)};","uuid":"","qty":""}

Пришло из Postman (корректно):
[{"uuid": "23895684-7d67-4a61-9f36-5e87f96a6be4","qty": 1},{"uuid": "23895684-7d67-4a61-9f36-5e87f96a6be4","qty": 3}]

Помогите, пожалуйста, понять в чем может быть ошибка? Возможно я неправильно указал POST-параметры?

Спасибо.

7 ответов

  • 2
    Алексей Webasyst 26 декабря 2020 15:21 #

    Как минимум стоит проверить ID характеристики, кажется у вас там опечатка.

    • +1
      Илья А Илья А 26 декабря 2020 15:34 #

      Спасибо, что заметили! 

      Внес правку пока приходит вот так:

      {"{$product ":" $wa->shop->product($item)};","uuid":"","qty":""}

      У меня ощущение, что поле не поддерживает переменные. Попробовал отправить обычную переменную (см. скрин) приходит пустота.

      • +2

        Если внимательно посмотреть placeholder...

        total={$order.total}

        ?


        Но вообще, скорее всего, в параметрах не удастся передавать содержимое заказа. Вероятнее всего параметры предназначены для передачи ключей подключения к API. Т.е. переменные Smarty туда не запихнуть.

        Я сначала тоже подумал, что фича крутая, но потом что-то не смог придумать, зачем её использовать, если всё то же самое делается плагином

  • 2
    Алексей Webasyst 28 декабря 2020 23:03 # Решение

    Готовый код для вас будет примерно такой

    items={foreach $order.items as $item}{if $item.type=="product"}{$product=$wa->shop->product($item.product_id)}{$list[$item.id]=["uuid"=>$product.features.external_id,"qty"=>$item.quantity]}{/if}{/foreach}{$list|array_values|json_encode}

    1. стоит проверять что у вас именно товар, а не услуга.
    2. item это массив, поэтому создавать продукт нужно на основе одного из его значений.
    3. всё одной строкой, т.к. параметры разбиваются по переносу строки.
    Остальное должно быть понятно.

    • +1
      Илья А Илья А 29 декабря 2020 14:39 #

      Алексей, спасибо за помощь!

      Код выполнился и все параметры пришло корректно ;)

Добавить ответ

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