shop.order.add запрос через curl заказ созаёт а товаров нет

Приветствую всех.
Подскажите в чем проблема.
Создал запрос для создания нового заказа, заказ создаётся но список товаров пуст.

<?php
$ch = curl_init();
$header = array(
'Content-Type'=> 'application/json',
);

$data = array(
'access_token' => '5cd32',
'contact' => '2',
'comment' => 'тест',
'items' => array(
array('sku_id' => '1'),
),

);

curl_setopt($ch, CURLOPT_URL, 'api.php/shop.order.add/?');
curl_setopt($ch,CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

curl_exec($ch);

Выдает ошибку но не могу понять что не так вроде items передаю как написанно в инструкции.

Invalid argument supplied for foreach() in \wa-apps\shop\api\v1\shop.order.add.method.php on line 61

3 ответа

  • 1
    creativit.ru 29 сентября 2022 21:13 #

    Мне кажется, что ошибка где-то здесь 


    Content-Type'=> 'application/json',

    • +1
      dra_kon dra_kon 30 сентября 2022 07:29 #

      Да тоже грешил на эту запись но перепробовал другие варианты и нечего не помогло.

      вот какие варианты подставлял:

      'Content-Type' => 'application/x-www-form-urlencoded; charset=utf-8',//взял из темы по этому запросу shop.order.add
      
      'Content-Type' => 'text/html; charset=utf-8',

  • 0
    dra_kon 1 октября 2022 09:56 #

    Немного покурив интрукцию и методом тыка получилось.

    <?php
    $url = 'http://wass/api.php/shop.order.add/?'; // url, на который отправляется запрос
    $post_data = [ // поля нашего запроса
        'contentType'=> "application/x-www-form-urlencoded",
        'access_token' => '5cd32b02bde12f1bea53fce6e79210f7',
        'contact' => '2',
        'comment' => 'тест',
        'items' => [
            [   'sku_id' => 1,
                'quantity' => 3,
                'price'=> 66780,
    
            ],
            [   'sku_id' => 2,
                'quantity' => 5,
                'price'=> 667,
    
            ],
    
        ],
    ];
    
    $headers = ['Content-Type'=> 'application/x-www-form-urlencoded; charset=utf-8',]; // заголовки запроса
    
    $post_data = http_build_query($post_data);
    
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_VERBOSE, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_POST, true); // true - означает, что отправляется POST запрос
    
    $result = curl_exec($curl);

    теперь создает заказ с товаром и нужным количеством. По поводу установки цен из запроса взял инфу из соседней темы.

    ----------------------------------------

    Для того, чтобы можно было задавать свою цену в запросе, пришлось немного подкорректировать shopOrderAddMethod (без этого она подставляется из данных товара):

    вместо


    $item['price'] = $sku['price'];

    ставим


    if (!isset($item['price'])) { $item['price'] = $sku['price']; }

    ----------------------------------------------

    Адрес к заказу добавляю через shop.order.setShippingAddress все замечательно. Есть момент по установке варианта оплаты и доставки в API не нашёл. Кто подскажет как изменять эти параметры!?
    В shop.order.add отправлял запросы с массивом params но он не обрабатывается данным методом насколько я посмотрел.

    'params' => [                    'payment_id' => '11',                    'shipping_id' => '7',        ],

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

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