Метод getCode
Внимание: Метод устарел и недоступен конечным пользователям через B2B API. Не используйте его в новых интеграциях.
Описание
Данный метод позволяет получить реквизиты сертификата без обёртки в виде PDF файла. Реквизиты сертификата обычно доступны в течение нескольких секунд после создания заказа. Для отслеживания статуса можно использовать метод getStatus или использовать механизм callback.
Обратите внимание, что не все для всех продуктов возможно использование пары код/пин на кассе торговой точки или в интернет магазине. Некоторые магазины требуют распечатенного на листе бумаги сертификата определённого формата. Возможность использования пары код/пин определяется по параметру digital_acceptance, который возвращается методом getProducts. Значение параметра должно быть одним из: any, eshop, offline, exchange. В случае попытки получить пару код/пин для продукта, который не принимается без файла сертификата, будет возвращена ошибка 1210.
Если вы планируете использовать пару код/пин, перед созданием заказа убедитесь, что значение digital_acceptance содержит подходящее значение или вызывайте makeOrder с параметром delivery_type = code. В случае попытки заказа недоступного продукта (с параметром delivery_type = code) API возвращает ошибку с кодом 3601 и описанием Некорректно заполнены поля: delivery_type. Если не использовать delivery_type = code, то ошибку API не отдаст. Но у конечного получателя пары код/пин могут возникнуть сложности с их использованием.
С момента выполнения запроса к методу makeOrder до создания сертификата обычно проходит не более 5 секунд. В отдельных случаях возможны задержки вплоть до нескольких часов (как правило связано с тех.проблемами на стороне отдельных поставщиков). Пока сертификат не готов, будет возвращаться ошибка: 1203 (Сертификат не готов).
При попытке получения кода по заказу в статусе delayed (см. описание status в ответе на getStatus) возвращается ошибка 1208 (Заказ обрабатывается, ожидается поступление кодов). Подобные заказы обрабатываются с задержкой в несколько часов, в отдельных случаях до нескольких дней.
Параметры запроса (data)
В запросе обязательно нужно передать один из двух параметров. Если передать оба параметра, приоритет будет иметь параметр queue_id.
| Параметр | Описание |
|---|---|
| queue_id | Идентификатор заявки. Целое, больше нуля число. Возвращается методом makeOrder. |
| order_id | Идентификатор заказа (платформа Giftery). Целое, больше нуля число. |
Параметры ответа (data)
| Параметр | Описание |
|---|---|
| code | Код сертификата |
| pin | Дополнительный (контрольный) пин-код. Не все сертификаты могут иметь данный пин-код, тогда значением будет пустая строка. |
| expire_date | Срок действия кода (время московское в формате 2017-12-31 23:59:59). В случае бессрочных кодов возвращается null. |
| format | Некоторые торговые точки могут принимать код в виде штрихкода или принимают только в виде штрихкода. В таком случае дополнительно передаётся параметр с указанием типа штрихкода. Вы должны самостоятельно подготовить штрихкод в указанном формате. Список штрихкодов: code128, ean13, code39, i25, qr (список не окончательный и может дополняться). |
Пример
# Получаем значение для подстановки SIG
# SECRET в данном случае - это хранящийся у клиента ключ для подписи запросов к API
$ echo -n 'getCode{"queue_id":123456}SECRET' | sha256sum - | awk '{print $1}'
# Используем известный клиенту ID и сгенерированный SIG для выполнения запроса
$ curl 'https://ssl-api.giftery.ru/?cmd=getCode&id=ID&in=json&out=json&data=%7B%22queue_id%22%3A123456%7D&sig=SIG'Результат успешного запроса
{
"status": "ok",
"data": {
"code": "00342-574-249-447",
"pin": "0757",
"expire_date": "2017-12-31 23:59:59",
"format": "code128"
}
}Результат в случае ошибки
{
"status": "error",
"error": {
"code": 1202,
"text": "Заказ не оплачен"
}
}| Код ошибки | Описание |
|---|---|
| 1209 | Заказ ещё находится в очереди на обработку. Если запрос был выполнен сразу после makeOrder, в таком случае мы не успели начать обрабатывать заказ и требуется повторить запрос через минуту. Если данный статус держится несколько минут и более, значит мы получили большое количество заказов за небольшой интервал времени. Требуется подождать и повторить запрос. |
| 1202 | Заказ не оплачен. После начала обработки заказа данный статус может быть получен в течение одной-двух секунд. При получении данного статуса требуется повторить запрос через небольшой интервал времени. |
| 1203 | Сертификат не готов. После оплаты заказа данный статус может быть получен в течение одной-двух секунд. При получении данного статуса требуется повторить запрос через небольшой интервал времени. В отдельных случаях может быть зажердка вплоть до нескольких часов, в основном она связана с ошибками на стороне поставщиков кодов. Если спустя два-три часа данный статус продолжает оставаться, можно обратиться за информацией по адресу dev@giftery.ru. |
| 1208 | Данный статус показывает, что заказ был принят и ему был присвоен статус отложенного заказа. См. описание отложенных заказов. |
| 1205 | При обработке заказа возникла ошибка. Требуется обратиться за информацией по адресу dev@giftery.ru. |