Пример загрузки заказа покупателя через REST API
Пример XML для создания нового заказа
<?xml version="1.0" encoding="UTF-8"?> <customerOrder vatIncluded="true" applicable="true" sourceStoreId="existing-store-id" payerVat="true" sourceAgentId="existing-counterparty-id" targetAgentId="existing-organization-id" moment="2011-06-27T06:27:00+04:00" name="0001"> <customerOrderPosition vat="18" goodId="existing-good-id" quantity="4.0" discount="0.0"> <basePrice sumInCurrency="555000.0" sum="555000.0"/> <reserve>0.0</reserve> </customerOrderPosition> </customerOrder>
В приведеннном XML необходимо заменить идентификаторами существующих объектов сервиса следующие строки:
- строку existing-store-id на идентификатор склада
- строку existing-counterparty-id на идентификатор контрагента
- строку existing-organization-id на идентификатор организации
- строку existing-good-id на идентификатор товара
При заполнении сведений о цене необходимо обратить внимание на то, что цена указывается в сотых долях денежной единицы.
Имя (атрибут name) для нового документа может быть не указано - в таком случае оно буде сгенерировано автоматически.
Дата (атрибут moment) для нового документа может быть не указана - в таком случае будет подставлен момент создания документа.
Пример XML для обновления существующего заказа
<?xml version="1.0" encoding="UTF-8"?> <customerOrder vatIncluded="true" applicable="true" sourceStoreId="existing-store-id" payerVat="true" sourceAgentId="existing-counterparty-id" targetAgentId="existing-organization-id" moment="2011-06-27T06:27:00+04:00" name="0001"> <id>existing-customerorder-id</id> <customerOrderPosition vat="18" goodId="existing-good-id" quantity="4.0" discount="0.0"> <id>existing-customerorder-position-id</id> <basePrice sumInCurrency="555000.0" sum="555000.0"/> <reserve>0.0</reserve> </customerOrderPosition> </customerOrder>
В приведеннном XML необходимо дополнительно к ранее описанным параметрам заменить идентификаторами существующих объектов сервиса следующие строки:
- строку existing-customerorder-id на идентификатор заказа покупателя
- строку existing-customerorder-position-id на идентификатор позиции заказа покупателя
Пример кода на PHP для загрузки заказа покупателя на сервис МойСклад
В приведенном ниже примере упоминается функция create_xml_body(). Подразумевается, что эта функция реализована и в качестве результата своей работы возвращает строку, содержащую XML для отправки на сервер.
$body = create_xml_body(); $sock = fsockopen("ssl://online.moysklad.ru", 443, $errno, $errstr, 30); if (!$sock) die("$errstr ($errno)\n"); fputs($sock, "PUT /exchange/rest/ms/xml/CustomerOrder HTTP/1.1\r\n"); fputs($sock, "Host: online.moysklad.ru\r\n"); fputs($sock, "Authorization: Basic " . base64_encode("replace-it-by-username:replace-it-by-password") . "\r\n"); fputs($sock, "Content-Type: application/xml \r\n"); fputs($sock, "Accept: */*\r\n"); fputs($sock, "Content-Length: ".strlen($body)."\r\n"); fputs($sock, "Connection: close\r\n\r\n"); fputs($sock, "$body"); while ($str = trim(fgets($sock, 4096))); $body = ""; while (!feof($sock)) $body.= fgets($sock, 4096); fclose($sock); echo $body;
В приведеннном коде на PHP необходимо подставить имя и пароль пользователя, вместо которых в коде указаны строки:
- строка replace-it-by-username - имя пользователя
- строка replace-it-by-password - пароль пользователя