Публикация

подписчиков: 4 Подписаться
0
Avatar

Изменение склада в заказе через API

Я сделал интеграцию с Вашим API, чтобы при обмене с сайтом vaporstore.kz в 
заказах проставлялся выбранный мной склад. 
Я отправляю запрос на установку в заказе IM313238 у которого уникальный идентификатор в Вашей системе 41d1c716-9812-11e8-9ff4-315000103f98 .
Поэтому я отправляю PUT запрос на установку склада (Мечта 45) в этом заказе, который в Вашей системе с идентификатором 970692b6-02dd-11e6-7a69-97110015d5e7 . 
Отправляю на https://online.moysklad.ru/api/remap/1.1/entity/customerorder/41d1c716-9812-11e8-9ff4-315000103f98

Следующий json:

{"store":{"meta":{"href":"https:\/\/online.moysklad.ru\/api\/remap\/1.1\/entity\/store\/970692b6-02dd-11e6-7a69-97110015d5e7","metadataHref":"https:\/\/online.moysklad.ru\/api\/remap\/1.1\/entity\/store\/metadata","type":"store","mediaType":"application\/json","uuidHref":"https:\/\/online.moysklad.ru\/app\/#warehouse\/edit?id=970692b6-02dd-11e6-7a69-97110015d5e7"}}}

В ответ получаю json в котором присутствует этот заказ целиком, но данные не меняются.

Подскажите пожалуйста в чем может быть проблема?

Войдите в службу, чтобы оставить комментарий.

Комментариев: 9

0
Avatar

Да, если есть возможность.

Пожелание:

  • Проверить возможности получения данного склада запросом GET.
  • Проверить пермиссии для данного аккаунта
  • Попробовать повторить запрос

если всё выставлено верно, и поведение не соответствует документации, мы рассмотрим Вашу проблему посредством получения доступа к вашему аккаунту, чтобы разобраться в причинах. 

Нам так же поможет CURL запроса.

Bkozhevnikov 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Запрос сделал повторно в 16:59 по Мск
array(1) {
["store"]=>
array(1) {
["meta"]=>
array(5) {
["href"]=>
string(90) "https://online.moysklad.ru/api/remap/1.1/entity/store/a204c675-02dc-11e6-7a69-93a70015537b"
["metadataHref"]=>
string(62) "https://online.moysklad.ru/api/remap/1.1/entity/store/metadata"
["type"]=>
string(5) "store"
["mediaType"]=>
string(16) "application/json"
["uuidHref"]=>
string(86) "https://online.moysklad.ru/app/#warehouse/edit?id=a204c675-02dc-11e6-7a69-93a70015537b"
}
}
}
Вот содержимое json


А вот как формирую запрос в PHP

const API_URL = "https://online.moysklad.ru/api/remap/1.1";
const API_URL_ORDER = "/entity/customerorder";
const API_URL_WAREHOUSE = "/entity/store";
/**
* Выполняет запрос на сервер
*
* @param string $url
* @param array|string $data - данные на сервер
* @param string $method - строка с методом
* @return mixed|void
*/
private function makeRequest($url, $data = array(), $method)
{
$ch = curl_init();

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
curl_setopt($ch, CURLOPT_USERPWD, "{$this->config['user_name']}:{$this->config['user_pass']}");

switch (mb_strtoupper($method)){
case "GET":
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
));
$url = $url."?".http_build_query($data);
break;
case "POST":
curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json'
));
break;
case "PUT":
curl_setopt($ch, CURLOPT_PUT, true);

$data = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Content-Type: application/json',
'Content-Length: ' . strlen($data))
);
break;
}
var_dump($data);
curl_setopt($ch, CURLOPT_URL, $url);

// 3. получаем HTML в качестве результата
$response = curl_exec($ch);

curl_close($ch);

if ($response === FALSE) {
//Тут-то мы о ней и скажем
$file = \Setup::$FOLDER.\Setup::$STORAGE_DIR."/logs/moi_sklad_api.log";
@file_put_contents($file, "url = ".$url." date = ".date('Y-m-d H:i:s')."\n cURL Error: " . curl_error($ch)."\n", FILE_APPEND);
return;
}

$response = @json_decode($response, true);
return $response;
}

 

/**
* Запрос на смену параметров в заказе
*
* @param string $id - идентификатор заказа
*/
function setOrderData($id, $params = array())
{

$url = self::API_URL.self::API_URL_ORDER."/".$id;
$data = array();
if ($params['store']){
$meta = array(
'href' => "https://online.moysklad.ru/api/remap/1.1/entity/store/".$params['store'],
'metadataHref' => "https://online.moysklad.ru/api/remap/1.1/entity/store/metadata",
'type' => "store",
'mediaType' => "application/json",
'uuidHref' => "https://online.moysklad.ru/app/#warehouse/edit?id=".$params['store']
);
$data['store']['meta'] = $meta;
}

var_dump($data);

$response = $this->makeRequest($url, $data, "PUT");
var_dump($response);
}





Проверить возможности получения данного склада запросом GET.

-----
GET я его получилось, я так себе и записал идентификатор.

 

Проверить пермиссии для данного аккаунта
----
Это где можно сделать?

Александр «ReadyScript Alex» Закусило 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Вот ещё в догонку, что сформировалось и ответ Вашего сервера
string(368) "{"store":{"meta":{"href":"https:\/\/online.moysklad.ru\/api\/remap\/1.1\/entity\/store\/a204c675-02dc-11e6-7a69-93a70015537b","metadataHref":"https:\/\/online.moysklad.ru\/api\/remap\/1.1\/entity\/store\/metadata","type":"store","mediaType":"application\/json","uuidHref":"https:\/\/online.moysklad.ru\/app\/#warehouse\/edit?id=a204c675-02dc-11e6-7a69-93a70015537b"}}}"
array(27) {
["meta"]=>
array(5) {
["href"]=>
string(98) "https://online.moysklad.ru/api/remap/1.1/entity/customerorder/41d1c716-9812-11e8-9ff4-315000103f98"
["metadataHref"]=>
string(70) "https://online.moysklad.ru/api/remap/1.1/entity/customerorder/metadata"
["type"]=>
string(13) "customerorder"
["mediaType"]=>
string(16) "application/json"
["uuidHref"]=>
string(90) "https://online.moysklad.ru/app/#customerorder/edit?id=41d1c716-9812-11e8-9ff4-315000103f98"
}
["id"]=>
string(36) "41d1c716-9812-11e8-9ff4-315000103f98"
["accountId"]=>
string(36) "a1dad371-02dc-11e6-7a69-971100002b61"
["shared"]=>
bool(false)
["group"]=>
array(1) {
["meta"]=>
array(4) {
["href"]=>
string(90) "https://online.moysklad.ru/api/remap/1.1/entity/group/21c75877-2020-11e8-9107-5048000d2647"
["metadataHref"]=>
string(62) "https://online.moysklad.ru/api/remap/1.1/entity/group/metadata"
["type"]=>
string(5) "group"
["mediaType"]=>
string(16) "application/json"
}
}
["version"]=>
int(2)
["updated"]=>
string(19) "2018-08-04 22:07:45"
["name"]=>
string(8) "IM313238"
["code"]=>
string(3) "927"
["externalCode"]=>
string(3) "927"
["moment"]=>
string(19) "2018-08-04 21:10:17"
["applicable"]=>
bool(true)
["rate"]=>
array(1) {
["currency"]=>
array(1) {
["meta"]=>
array(5) {
["href"]=>
string(93) "https://online.moysklad.ru/api/remap/1.1/entity/currency/b1408535-02dc-11e6-7a69-93a700319fd4"
["metadataHref"]=>
string(65) "https://online.moysklad.ru/api/remap/1.1/entity/currency/metadata"
["type"]=>
string(8) "currency"
["mediaType"]=>
string(16) "application/json"
["uuidHref"]=>
string(85) "https://online.moysklad.ru/app/#currency/edit?id=b1408535-02dc-11e6-7a69-93a700319fd4"
}
}
}
["sum"]=>
float(2000000)
["store"]=>
array(1) {
["meta"]=>
array(5) {
["href"]=>
string(90) "https://online.moysklad.ru/api/remap/1.1/entity/store/9c177113-02dd-11e6-7a69-8f550015e1a4"
["metadataHref"]=>
string(62) "https://online.moysklad.ru/api/remap/1.1/entity/store/metadata"
["type"]=>
string(5) "store"
["mediaType"]=>
string(16) "application/json"
["uuidHref"]=>
string(86) "https://online.moysklad.ru/app/#warehouse/edit?id=9c177113-02dd-11e6-7a69-8f550015e1a4"
}
}
["agent"]=>
array(1) {
["meta"]=>
array(5) {
["href"]=>
string(97) "https://online.moysklad.ru/api/remap/1.1/entity/counterparty/d2b5817c-69a0-11e8-9ff4-3150003c0969"
["metadataHref"]=>
string(69) "https://online.moysklad.ru/api/remap/1.1/entity/counterparty/metadata"
["type"]=>
string(12) "counterparty"
["mediaType"]=>
string(16) "application/json"
["uuidHref"]=>
string(84) "https://online.moysklad.ru/app/#company/edit?id=d2b5817c-69a0-11e8-9ff4-3150003c0969"
}
}
["organization"]=>
array(1) {
["meta"]=>
array(5) {
["href"]=>
string(97) "https://online.moysklad.ru/api/remap/1.1/entity/organization/008e5d9e-5301-11e6-7a69-8f5500037004"
["metadataHref"]=>
string(69) "https://online.moysklad.ru/api/remap/1.1/entity/organization/metadata"
["type"]=>
string(12) "organization"
["mediaType"]=>
string(16) "application/json"
["uuidHref"]=>
string(86) "https://online.moysklad.ru/app/#mycompany/edit?id=008e5d9e-5301-11e6-7a69-8f5500037004"
}
}
["organizationAccount"]=>
array(1) {
["meta"]=>
array(3) {
["href"]=>
string(143) "https://online.moysklad.ru/api/remap/1.1/entity/organization/008e5d9e-5301-11e6-7a69-8f5500037004/accounts/41c266d6-52b6-11e8-9107-50480007aad0"
["type"]=>
string(7) "account"
["mediaType"]=>
string(16) "application/json"
}
}
["state"]=>
array(1) {
["meta"]=>
array(4) {
["href"]=>
string(114) "https://online.moysklad.ru/api/remap/1.1/entity/customerorder/metadata/states/a212fdec-02dc-11e6-7a69-93a700155393"
["metadataHref"]=>
string(70) "https://online.moysklad.ru/api/remap/1.1/entity/customerorder/metadata"
["type"]=>
string(5) "state"
["mediaType"]=>
string(16) "application/json"
}
}
["documents"]=>
array(1) {
["meta"]=>
array(5) {
["href"]=>
string(108) "https://online.moysklad.ru/api/remap/1.1/entity/customerorder/41d1c716-9812-11e8-9ff4-315000103f98/documents"
["mediaType"]=>
string(16) "application/json"
["size"]=>
int(0)
["limit"]=>
int(100)
["offset"]=>
int(0)
}
}
["created"]=>
string(19) "2018-08-04 21:14:41"
["positions"]=>
array(1) {
["meta"]=>
array(6) {
["href"]=>
string(108) "https://online.moysklad.ru/api/remap/1.1/entity/customerorder/41d1c716-9812-11e8-9ff4-315000103f98/positions"
["type"]=>
string(21) "customerorderposition"
["mediaType"]=>
string(16) "application/json"
["size"]=>
int(2)
["limit"]=>
int(100)
["offset"]=>
int(0)
}
}
["vatEnabled"]=>
bool(false)
["payedSum"]=>
float(0)
["shippedSum"]=>
float(0)
["invoicedSum"]=>
float(0)
["reservedSum"]=>
float(2000000)
}

Александр «ReadyScript Alex» Закусило 0 проголосовали
Действия с комментариями Постоянная ссылка
0
Avatar

Пермиссии можно посмотреть на UI
Настройки -> Сотрудники -> Сотрудник -> Системные роли

PHP скриптами мы не занимаемся.

В логах запрос без тела.

Bkozhevnikov 0 проголосовали
Действия с комментариями Постоянная ссылка