За последние 24 часа нас посетили 20518 программистов и 1129 роботов. Сейчас ищет 671 программист ...

Нужен код для отправки нового заказа Woocommerce в API

Тема в разделе "Сделайте за меня", создана пользователем chokko13, 25 апр 2019.

Метки:
  1. chokko13

    chokko13 Новичок

    С нами с:
    25 апр 2019
    Сообщения:
    1
    Симпатии:
    0
    Необходимо написать код, который при нажатии кнопки "Оформить заказ"передает данные в стороннее API (есть документация). Отправить нужно все данные о товаре (принимает только имя (артикул) и количество) и для примера пару данных о клиенте, телефон и имя.
    С тем как получить данные о заказе более-менее разобралась, а вот как их отправить не понятно.
    Из документации:
    Код (Text):
    1.  
    2. [LEFT][COLOR=rgb(44, 44, 44)]Для отправки запроса необходимо использовать метод POST  эквивалент html form submit.
    3.  
    4. //артикулы товаров
    5. $product[0] = "10000"; //Пицца
    6. $product[3] = "10003"; //Сок
    7.  
    8. //количество товаров
    9. $product_kol[0] = "1";
    10. $product_kol[3] = "1";
    11.    
    12. //детали заказа в кодировке utf-8
    13. $param['secret'] = ""; //ключ api
    14. $param['street']  = " "; //улица
    15. $param['home'] = " ";  //дом
    16. $param['apart'] = " ";  //квартира
    17. $param['phone'] = " "; //телефон
    18. $param['descr'] = " ";  //комментарий
    19. $param['name'] = " ";  //имя клиента
    20.  
    21. //подготовка запроса
    22. foreach ($param as $key => $value) {
    23. $data .= "&".$key."=".$value;
    24. }
    25.  
    26. //содержимое заказа
    27. foreach ($product as $key => $value){
    28. $data .= "&product[".$key."]=".$value."";
    29. $data .= "&product_kol[".$key."]=".$product_kol[$key]."";
    30. }
    31.  
    32. //отправка
    33. $ch = curl_init();
    34. curl_setopt($ch, CURLOPT_URL, " ");
    35. curl_setopt($ch, CURLOPT_FAILONERROR, 1);
    36. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    37. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    38. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    39. curl_setopt($ch, CURLOPT_TIMEOUT, 30);
    40. curl_setopt($ch, CURLOPT_POST, 1);
    41. curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
    42. $result = curl_exec($ch);
    43. curl_close($ch);
    44.  
    45. //результат
    46. echo $result;[/COLOR][/LEFT]


    Получить данные о заказе примерно так можно
    Код (Text):
    1. $skus = $item_quantities = $line_item_totals = $items_meta_data = array();
    2.  
    3. foreach( $order->get_items() as $item_id => $item){
    4.     $product_id = $item->get_product_id();
    5.     $product = $item->get_product();
    6.  
    7.     $item_quantities[] = $item->get_quantity();
    8.     $line_item_totals[] = $item->get_total();
    9.     $skus[]            = $product->get_sku();
    10.     $items_meta_data[]  = $item->get_meta_data();
    11. }
    12.  
    13. foreach ($skus as $key => $value){
    14.     $data .= "&product[".$key."]=".$value."";
    15.     $data .= "& product_kol[".$key."]=".$item_quantities[$key]."";
    16.     $data .= "& product_price[".$key."]=".$line_item_totals[$key]."";
    17.     if( isset($product_mod[$key]) ) {
    18.         $data .= "&product_mod[".$key."]=".$product_mod[$key]."";
    19.     }
    20. }



    //возможна оплата
     
    #1 chokko13, 25 апр 2019
    Последнее редактирование: 25 апр 2019