связка ishop и программа Покупка на Яндекс-маркете (2)

+9
1.79K
продолжение instantcms.ru/blogs/uluchshenija/svjazka-ishop-i-programa-pokupka-na-jandeks-markete.htmlпервой части

6. изменения в файле: backend.php (позволяют менять статус заказа на маркете — это надо делать обязательно)

  1.  
  2. ...
  3. //=================================================================================================//
  4. //=================================================================================================//
  5.  
  6. if($opt == 'set_y_status'){
  7.  
  8. $new_status = $inCore->request('new_status', 'str');
  9. $order_id = $inCore->request('order_id', 'int', 0);
  10. $token = $_SESSION['token']; //получаем токен от яндекс маркета
  11. if(!$token)$inCore->redirect('https://oauth.yandex.ru/authorize?response_type=token&client_id=bde9b231b3d649c3b......&state='.$order_id);
  12.  
  13. $component_id = $inCore->request('id', 'int', 0);
  14. $component_uri = 'index.php?view=components&do=config&id='.$component_id;
  15.  
  16. cpAddPathway('Список заказов', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=list_orders');
  17. cpAddPathway('Просмотр заказа', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=edit_order&item_id='.$order_id);
  18. cpAddPathway('Смена статуса заказа', '?view=components&do=config&id='.$_REQUEST['id'].'&opt=set_y_status&item_id='.$order_id);
  19. echo '<h3>Смена статуса заказа #'.$order_id.'</h3>';
  20.  
  21. $order = $model->getOrder($order_id);
  22. ?>
  23. <form action="" method="get" name="addform">
  24. Сменить на статус:
  25. <select name="new_status">
  26. <option value="PROCESSING">заказ находится в обработке</option>
  27. <option value="DELIVERY">заказ передан в доставку</option>
  28. <!--<option value="PICKUP">заказ доставлен в пункт самовывоза</option>-->
  29. <option value="DELIVERED">заказ получен покупателем</option>
  30. <option value="CANCELLED">заказ отменен</option>
  31. </select>
  32.  
  33.  
  34. <input type="submit" />
  35. <input type="hidden" name="do" value="config" />
  36. <input type="hidden" name="id" value="<?=$component_id?>" />
  37. <input type="hidden" name="opt" value="set_y_status" />
  38. <input type="hidden" name="order_id" value="<?=$order_id?>" />
  39. <input type="hidden" name="view" value="components" />
  40. </form>
  41. <?
  42.  
  43. //проверяем, с маркета ли заказ?
  44. $market_id = $inDB->get_field('cms_shop_orders', 'id='.$order_id, 'market_id');
  45. print $market_id;
  46. print "
  47. ";
  48. print $new_status;
  49. if($market_id && $new_status){
  50.  
  51. $headers = array(
  52. 'Host:api.partner.market.yandex.ru',
  53. 'Content-Type: application/json;charset=utf-8',
  54. 'Accept:*/*',
  55. 'Authorization: OAuth oauth_token="'.$token.'", oauth_client_id="bde9b231b3d........", oauth_login="......."'
  56. );
  57.  
  58. $ch = curl_init();
  59. curl_setopt($ch, CURLOPT_URL,"https://api.partner.market.yandex.ru/v2/campaigns/211....../orders/{$market_id}/status.json");
  60.  
  61. //создаем временный файл с запросом
  62. //ПОДСКАЖИТЕ КАК СДЕЛАТЬ PUT без временного файла
  63. $str = '{"order":{"status":"'.$new_status.'"}}';
  64. if($new_status == 'CANCELLED')$str = '{"order":{"status":"'.$new_status.'", "substatus":"USER_CHANGED_MIND"}}'; //при ОТМЕНЕ надо обязательно еще передавать и подстатус!
  65. $tmp_file = PATH.'/str.txt';
  66. $fp = fopen($tmp_file, 'w');
  67. fwrite($fp, $str);
  68. fclose($fp);
  69. $fp = fopen($tmp_file, 'r');
  70. curl_setopt($ch, CURLOPT_POST, 0);
  71. curl_setopt($ch, CURLOPT_PUT, 1);
  72. curl_setopt($ch, CURLOPT_INFILE, $fp);
  73. curl_setopt($ch, CURLOPT_INFILESIZE, filesize($tmp_file));
  74. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  75. curl_setopt($ch, CURLOPT_TIMEOUT, 60);
  76. curl_setopt($ch, CURLOPT_AUTOREFERER, true);
  77. curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  78. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
  79. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
  80.  
  81. $data = curl_exec($ch);
  82.  
  83. if (curl_errno($ch)) {
  84. print "Error: " . curl_error($ch);
  85. } else {
  86. echo $data;
  87. curl_close($ch);
  88. }
  89. fclose($fp);
  90.  
  91. echo $result;
  92. }
  93.  
  94. }
  95.  
  96. ...
  97.  

надеюсь заметка будет кому то полезной!
+1
Майкл Майкл 10 лет назад #
Сколько частей выпуска планируете? laugh
+1
vicoder vicoder 10 лет назад #
Все, только две) почему то в одной все не поместилось
0
lokanaft lokanaft 10 лет назад #
Можно было просто сделать инструкцию в html файле без простыней кода.
0
lezginka.ru lezginka.ru 10 лет назад #
+
vicoder было бы куда приятней и понятней, если выложить уже готовые файлы...да и демо(или скрины) не помешало бы :)
+1
r2 r2 10 лет назад #
Готовые файлы выкладывать нельзя. Это правки в платном компоненте.

Еще от автора

связка ishop и программа Покупка на Яндекс-маркете
Яндекс маркет позволяет заказывать товары непосредственно с яндекса - удобная штука.
Сортировка дополнительных картинок в шопе drag'n'drop
Сделал возможность перемещения дополнительных картинок в шопе: т.е. можно мышкой взять и перетащить картинку вверх-вниз, как требуется
Глючек при попытке перенести статью из раздела в другой раздел
Обнаружился глючек при переносе статьи из раздела в раздел в функции moveArticlesToCat. У переносимой статьи не обновлялось seolink.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.