API — различия между версиями

Материал из PODS Wiki
Перейти к: навигация, поиск
Строка 70: Строка 70:
  
 
Отправка заказа отличается от перезаливки только одим: в случае перезаливки (ftp-resend=1) не будет вызван API уведомления о выгрузке заказа.
 
Отправка заказа отличается от перезаливки только одим: в случае перезаливки (ftp-resend=1) не будет вызван API уведомления о выгрузке заказа.
 +
 +
 +
== API получения списка проектов пользователя ==
 +
 +
Для получения делается запрос по адресу
 +
* https://yourdomain.printondemandsolution.ru/api/user_projects/{user id}?token={token}
 +
* {user id} - ID пользователя в PODS
 +
* {token} - контрольная сумма, считается как md5 от конкатенации {user id} и секретного ключа
 +
 +
Результат вовзвращается в виде JSON, содержащего массив проектов со следующими полями:
 +
* pid - ID проекта в PODS
 +
* partner_pid - ID проекта у партнёра, если есть
 +
* title - название проекта
 +
* book_type = тип книги
 +
* book_type_id = ID типа книги
 +
* book_format = формат книги
 +
* book_format_id = ID формата книги
 +
* paper_type = тип листа
 +
* paper_type_id = ID типа листа
 +
* cover_id = ID обложки
 +
* sheets = количество разворотов
 +
* pic_token - token для формирования URL картинки
 +
* created - дата и время создания, в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
 +
* edited - дата и время создания, в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
 +
 +
== API получения списка заказов пользователя ==
 +
 +
Для получения делается запрос по адресу
 +
https://yourdomain.printondemandsolution.ru/api/user_orders/{user id}?token={token}
 +
* {user id} - ID пользователя в PODS
 +
* {token} - контрольная сумма, считается как md5 от конкатенации {user id} и секретного ключа
 +
 +
Результат вовзвращается в виде JSON, содержащего массив проектов со всеми полями из проектов плюс:
 +
* oid - номер заказа в PODS
 +
* partner_oid - номер заказа у партнёра, если есть
 +
* qty (integer) = количество экземпляров
 +
* printmatic = 0 выключен, 1 включен.
 +
* delivery_point = 0 (на адрес клиента) 1 (на адреса самовывоза партнера-печатника)
 +
* delivery_address
 +
* city =
 +
* street =
 +
* building =
 +
* appt =
 +
* order_time - дата и время заказа, в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
 +
* status - статус заказа (как в API создания/изменения заказа)
 +
 +
== API удаления/переименования проектов ==
 +
 +
Для удаления/переименования проекта необходимо сделать POST-запрос по адресу:
 +
* https://yourdomain.printondemandsolution.ru/api/edit_project_name - переименование проекта
 +
* https://yourdomain.printondemandsolution.ru/api/delete_project - удаление проекта
 +
 +
Параметры запроса:
 +
* project_id - ID проекта
 +
* project_new_name - новое название проекта (для удаления не нужно)
 +
* token - контрольная сумма
 +
 +
значение token вычисляется как MD5 от конкатенации секретного ключа и всех параметров запроса
 +
* md5( project_id + project_new_name + sekret) - для переименования
 +
* md5( project_id + sekret) - для удаления
 +
 +
Ответ:
 +
* OK - при успехе
 +
либо
 +
* error - сообщение об ошибке (если есть)

Версия 19:13, 3 апреля 2015

API создания/изменения заказа

Для изменения заказа необходимо сделать POST-запрос по адресу:

Параметры запроса (POST DATA):

  • albumix_ID (optional) - внутренний идентификатор партнёра в системе Алексея Букреева
  • partner_order_ID (required) - ID заказа в системе партнёра
  • status_order (optional, required если set_status) - статус заказа:
    • 1 - принят (по умолчанию);
    • 2 - напечатан и передан в доставку;
    • 3 - доставлен
    • 4 - выдан
    • 9 - отменён
  • count (optional) - Количество продукции, если не указано, считается = 1
  • project_id (required, если new) - ID проекта в PODS
  • paper_id (optioanl) - ID типа бумаги
  • total_amount (optional, required если new) - Стоимость заказа
  • delivery_point (optional) = 0 (на адрес клиента) 1 (на адреса самовывоза партнера-печатника)
  • delivery_address (optional) адрес доставки
  • send_to_print (optional) - если "1", заказ после создания отправляется в печать
  • stamp (optional) - метка времени в формате Unix timesta
  • token - контрольная сумма

Значение token вычисляется по разному в зависимости от типа запроса:

  • для new и edit как MD5 от конкатенации секретного ключа, задаваемого в настройках WL (параметр "Секретный ключ API (входящие запросы)") и всех параметров запроса:
    md5( albumix_ID + partner_order_ID + status_order + count + project_id + paper_id + total_amount + delivery_point + delivery_address + send_to_print + stamp + sekret)
  
  • для set_status вычисляется как MD5 от конкатенации секретного ключа, задаваемого в настройках WL (параметр "Секретный ключ API (входящие запросы)"), "albumix_ID", "partner_order_ID", "status_order" и "stamp", соединённых через знак тире ("-")


Пример вычисления на PHP:

$key = 'SEKRET_KEY';
$fields = array('albumix_ID', 'partner_order_ID', 'status_order', 'stamp');
$values = array($key);
foreach($fields as $field) {
    $values[] = $_POST[$field];
}
$token = md5(implode('-', $values));

Ответ:

  • При успешной обработке запроса возвращается строка
 id={ID} 

{ID} - номер заказа в PODS

  • В случае ошибки возвращается
 error={Error descriptiom} 
  • При использовании set_status в случае успеха возвращается строка "OK" (сохранено для совместимости с Avantnet)

Используется кодировка указанная в панели управления, в разделе Настройки - Интеграция

API отправки заказа в печать

Параметры запроса (POST DATA):

  • order_id - ID заказа (наш)
  • ftp-resend - "0" - отправит в печать, "1" - перезалить
  • token - контрольная сумма

Вычисление контрольной суммы:

MD5  ([order_id][ftp-resend][secret])

Отправка заказа отличается от перезаливки только одим: в случае перезаливки (ftp-resend=1) не будет вызван API уведомления о выгрузке заказа.


API получения списка проектов пользователя

Для получения делается запрос по адресу

Результат вовзвращается в виде JSON, содержащего массив проектов со следующими полями:

  • pid - ID проекта в PODS
  • partner_pid - ID проекта у партнёра, если есть
  • title - название проекта
  • book_type = тип книги
  • book_type_id = ID типа книги
  • book_format = формат книги
  • book_format_id = ID формата книги
  • paper_type = тип листа
  • paper_type_id = ID типа листа
  • cover_id = ID обложки
  • sheets = количество разворотов
  • pic_token - token для формирования URL картинки
  • created - дата и время создания, в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
  • edited - дата и время создания, в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС

API получения списка заказов пользователя

Для получения делается запрос по адресу https://yourdomain.printondemandsolution.ru/api/user_orders/{user id}?token={token}

  • {user id} - ID пользователя в PODS
  • {token} - контрольная сумма, считается как md5 от конкатенации {user id} и секретного ключа

Результат вовзвращается в виде JSON, содержащего массив проектов со всеми полями из проектов плюс:

  • oid - номер заказа в PODS
  • partner_oid - номер заказа у партнёра, если есть
  • qty (integer) = количество экземпляров
  • printmatic = 0 выключен, 1 включен.
  • delivery_point = 0 (на адрес клиента) 1 (на адреса самовывоза партнера-печатника)
  • delivery_address
  • city =
  • street =
  • building =
  • appt =
  • order_time - дата и время заказа, в формате ДД.ММ.ГГГГ ЧЧ:ММ:СС
  • status - статус заказа (как в API создания/изменения заказа)

API удаления/переименования проектов

Для удаления/переименования проекта необходимо сделать POST-запрос по адресу:

Параметры запроса:

  • project_id - ID проекта
  • project_new_name - новое название проекта (для удаления не нужно)
  • token - контрольная сумма

значение token вычисляется как MD5 от конкатенации секретного ключа и всех параметров запроса

  • md5( project_id + project_new_name + sekret) - для переименования
  • md5( project_id + sekret) - для удаления

Ответ:

  • OK - при успехе

либо

  • error - сообщение об ошибке (если есть)