API — различия между версиями
Wikiadmin (обсуждение | вклад) |
Wikiadmin (обсуждение | вклад) (→Уведомление об успешной выгрузке заказа) |
||
Строка 164: | Строка 164: | ||
Не вызывается в случае перезаливки заказа. Параметры передаваемые в API: | Не вызывается в случае перезаливки заказа. Параметры передаваемые в API: | ||
− | + | ;Общее для всех видов заказа | |
− | + | *albumix_order_id - номер заказа в PODS | |
− | + | *partner_order_id - номер заказа у партнёра | |
− | + | *price (double) = стоимость заказа (не книги, а всего заказа с учетом скидок, т.е. сколько клиент должен заплатить) | |
− | + | *payment_method = способ оплаты (заказ оплачен/оплата при получении) | |
− | + | *user_name = ФИО клиента | |
− | + | *phone = телефон клиента | |
− | + | *email = email клиента | |
− | + | *delivery_point = 0 (на адрес клиента) 1 (на адреса самовывоза партнера-печатника) | |
− | + | *city = | |
− | + | *street = | |
− | + | *building = | |
− | + | *appt = | |
форматы и термины адреса должны быть совместимыми с EMS-POST | форматы и термины адреса должны быть совместимыми с EMS-POST | ||
+ | |||
*delivery_provider = 0 (партнер), 1 (EMS), 2 (еще кто-то) ... | *delivery_provider = 0 (партнер), 1 (EMS), 2 (еще кто-то) ... | ||
− | *sign = контрольная сумма. считается как md5 от конкатенации некоторых параметров и секретного ключа. | + | *sign = контрольная сумма. считается как md5 от конкатенации некоторых параметров и секретного ключа. |
+ | набор полей для рассчёта контрольной суммы отличается для фотокниг и фотопечати | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | ;Фотокниги | |
− | ** | + | *albumix_order_id (string(100)) = номер заказа в системе PODS |
+ | *stamp (date time string dd.mm.yyyy hh:nn:ss) = дата приема заказа | ||
+ | *book_type = тип книги | ||
+ | *book_type_id = ID типа книги | ||
+ | *book_format = формат книги | ||
+ | *book_format_id = ID формата книги | ||
+ | *paper_type = тип листа | ||
+ | *paper_type_id = ID типа листа | ||
+ | *sheets = количество разворотов | ||
+ | *qty (integer) = количество экземпляров | ||
+ | *printmatic = 0 выключен, 1 включен. | ||
+ | *pic_token - token для формирования URL картинки | ||
− | + | Набор полей, участвующих в рассчёте контрольной суммы: | |
+ | <pre>"albumix_order_id", "stamp", "action_id", "qty", "price", "price_internal", "delivery_point", "delivery_address", "delivery_provider", "payment_method"</pre> | ||
− | + | ;Фотопечать | |
− | + | *order_detail - строка описания заказа | |
− | ТИППРОДУКТА\tТИПБУМАГИ\tФОРМАТ\tКОЛВО\tЦЕНАЕДИНИЦЫ\r\n | + | |
+ | Формат строки | ||
+ | |||
+ | <pre>ТИППРОДУКТА\tТИПБУМАГИ\tФОРМАТ\tКОЛВО\tЦЕНАЕДИНИЦЫ\r\n | ||
.... | .... | ||
− | ТИППРОДУКТА\tТИПБУМАГИ\tФОРМАТ\tКОЛВО\tЦЕНАЕДИНИЦЫ | + | ТИППРОДУКТА\tТИПБУМАГИ\tФОРМАТ\tКОЛВО\tЦЕНАЕДИНИЦЫ</pre> |
− | \t - табуляция | + | *\t - табуляция |
− | \r\n - возврат каретки + новая стока | + | *\r\n - возврат каретки + новая стока |
+ | |||
+ | |||
+ | Примеры | ||
+ | |||
− | |||
100 фото на глянце 10х15 | 100 фото на глянце 10х15 | ||
<pre>Фотопечать\tГлянцевая\t10x15\t100\t3.50</pre> | <pre>Фотопечать\tГлянцевая\t10x15\t100\t3.50</pre> | ||
Строка 225: | Строка 232: | ||
набор полей, участвующих в рассчёте контрольной суммы: | набор полей, участвующих в рассчёте контрольной суммы: | ||
− | + | <pre>"albumix_order_id", "stamp", "user_name", "delivery_point", "delivery_address", "delivery_provider", "payment_method"</pre> | |
− | + | ;Возвращается от партнера | |
В ответ на уведомление о выгрузке заказа партнёр имеет возможность передать присвоенный ID заказа. В этом случае ответ должен быть в виде: | В ответ на уведомление о выгрузке заказа партнёр имеет возможность передать присвоенный ID заказа. В этом случае ответ должен быть в виде: |
Версия 19:36, 3 апреля 2015
Содержание
API создания/изменения заказа
Для изменения заказа необходимо сделать POST-запрос по адресу:
- https://yourdomain.printondemandsolution.ru/api/new - создание заказа
- https://yourdomain.printondemandsolution.ru/api/edit - изменение заказа
- https://yourdomain.printondemandsolution.ru/api/set_status - изменение статуса заказа (сохранено для совместимости с Avantnet)
Параметры запроса (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 получения списка проектов пользователя
Для получения делается запрос по адресу
- 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 - сообщение об ошибке (если есть)
API получения статуса выгрузки заказа
Параметры запроса:
- order_id - ID заказа
- token - контрольная сумма, считается как md5 от конкатенации order_id и секретного ключа
Результат вовзвращается в виде JSON, содержащего:
- error - сообщение об ошибке при запросе (если оно есть)
либо
- status - статус заказа:
- 0 - не было выгрузки
- 1 - идёт выгрузка
- 2 - ошибка
- 3 - выгружено
- 4 - отменено
Уведомления (передача данных из PODS в систему партнёра )
URL для всех уведомлений указывается в разделе Настройки - Интеграция
Уведомление об успешной выгрузке заказа
Не вызывается в случае перезаливки заказа. Параметры передаваемые в API:
- Общее для всех видов заказа
- albumix_order_id - номер заказа в PODS
- partner_order_id - номер заказа у партнёра
- price (double) = стоимость заказа (не книги, а всего заказа с учетом скидок, т.е. сколько клиент должен заплатить)
- payment_method = способ оплаты (заказ оплачен/оплата при получении)
- user_name = ФИО клиента
- phone = телефон клиента
- email = email клиента
- delivery_point = 0 (на адрес клиента) 1 (на адреса самовывоза партнера-печатника)
- city =
- street =
- building =
- appt =
форматы и термины адреса должны быть совместимыми с EMS-POST
- delivery_provider = 0 (партнер), 1 (EMS), 2 (еще кто-то) ...
- sign = контрольная сумма. считается как md5 от конкатенации некоторых параметров и секретного ключа.
набор полей для рассчёта контрольной суммы отличается для фотокниг и фотопечати
- Фотокниги
- albumix_order_id (string(100)) = номер заказа в системе PODS
- stamp (date time string dd.mm.yyyy hh:nn:ss) = дата приема заказа
- book_type = тип книги
- book_type_id = ID типа книги
- book_format = формат книги
- book_format_id = ID формата книги
- paper_type = тип листа
- paper_type_id = ID типа листа
- sheets = количество разворотов
- qty (integer) = количество экземпляров
- printmatic = 0 выключен, 1 включен.
- pic_token - token для формирования URL картинки
Набор полей, участвующих в рассчёте контрольной суммы:
"albumix_order_id", "stamp", "action_id", "qty", "price", "price_internal", "delivery_point", "delivery_address", "delivery_provider", "payment_method"
- Фотопечать
- order_detail - строка описания заказа
Формат строки
ТИППРОДУКТА\tТИПБУМАГИ\tФОРМАТ\tКОЛВО\tЦЕНАЕДИНИЦЫ\r\n .... ТИППРОДУКТА\tТИПБУМАГИ\tФОРМАТ\tКОЛВО\tЦЕНАЕДИНИЦЫ
- \t - табуляция
- \r\n - возврат каретки + новая стока
Примеры
100 фото на глянце 10х15
Фотопечать\tГлянцевая\t10x15\t100\t3.50
100 фото на глянце 10х15 + 5 исправлений красных глаз
Фотопечать\tГлянцевая\t10x15\t100\t3.50 Прочее\t\tКрасные глаза\t5\t4
100 фото на глянце 10х15 + 10 фото на мат 15х20
Фотопечать\tГлянцевая\t10x15\t100\t3.50 Фотопечать\tМатовая\t15x20\t10\t15
набор полей, участвующих в рассчёте контрольной суммы:
"albumix_order_id", "stamp", "user_name", "delivery_point", "delivery_address", "delivery_provider", "payment_method"
- Возвращается от партнера
В ответ на уведомление о выгрузке заказа партнёр имеет возможность передать присвоенный ID заказа. В этом случае ответ должен быть в виде:
- albumix_ID = идентификатор PODS в системе партнера
- partner_order_ID = внутренний номер заказа в системе партнера
Пример
albumix_ID=123 partner_order_ID=12345
Если не требуется присваивать партнёрский ID после выгрузки заказа - можно вернуть просто строку "OK"