Переход с 2.0 на 2.1

В версии 2.1 код переписан на 100%. Полный переход на нее - с 01 февраля 2021 года. Подробное описание - по ссылке.

Версия 2.1 максимально совместима с версией 2.0. Отличия:
  1. В одном запросе возвращается расчет не более, чем по 5 отправлениям при бесплатном доступе, и 8 отправлениям при платном. В версии 2.0 на платном доступе возвращались расчеты по всем доступным отправлениям.
  2. Если переменной p= в запросе нет, то при запросе на внутренние отправления возвращаются расчеты по ценной бандероли, бандероли 1-го класса, посылке ценной, посылке 1 класса, EMS, при запросе на международные отправления - мелкий пакет заказной наземный/авиа, посылка наземная/авиа, EMS с товарами. В версии 2.0 при отсутствии переменной p= на платном доступе возвращались все возможные отправления.
  3. Для международных расчетов код страны теперь задается в переменной t= (To). Переменная c= (Country) поддерживается в течение 2021 года.
  4. Данная версия не ведет локальные расчеты - она опрашивает в асинхронном режиме официальный тарификатор Почты России и Postcalc.RU версии 2.0. В массив с расчетами для каждого отправления введен ключ Source, который принимает значение api.postcalc.ru или tariff.pochta.ru. Среднее время расчета - порядка 100-150 мс.
  5. Переменная ib (IBase) игнорируется, поскольку режим расчета страховки ib=f на Почте России не применяется. Страховка всегда рассчитывается, как если бы переменная ib имела значения p (Partial).
  6. Переменная НаложенныйПлатеж удалена из ответа, так как не имеет аналогов в расчетах Почты России. Если она кому-то нужна - пишите, обсудим.
  7. Если при расчете произошли фатальные ошибки, устанавливается массив Response->Errors. Если возможны потенциальные проблемы со отправкой/получением, устанавливается массив Response->Warnings. См. Глобальные ошибки и предупреждения.
  8. Если при расчете конкретного отправления произошли ошибки, устанавливается массив Response->Отправления->КлючОтправления->Errors. Если возникли предупреждения - массив Response->Отправления->КлючОтправления->Warnings. См. Ошибки и предупреждения при расчете отправления. Переменная НетРасчета удалена из ответа, поскольку в ней нет необходимости.
  9. Полностью заменена таблица городов - старая нотация (город, регион, район) заменена на ключи населенных пунктов.
    • Для центров регионов ключи состоят из названия населенного пункта: Москва, Самара, Благовещенск.
    • Для прочих населенных пунктов состоят из его названия и номера региона через запятую: Сергиев Посад, 50; Благовещенск, 2 (город в Башкортостане), Самара, 38 (село в Иркутской области); Самара, 79 (село в Еврейской АО).
    • Если в пределах одного региона находятся несколько населенных пунктов с одним названием, то через запятую добавляется район: Михайловка, 2, Абзелиловский; Михайловка, 2, Архангельский; Михайловка, 2, Бакалинский.
    В ключе населенного пункта вместо номера региона можно указать его название (совместимый формат запроса), например: Сургут, Ханты-Мансийский-Югра автономный округ; Сергиев Посад, Московская область. Однако так делать не рекомендуется, так как это ухудшает читаемость и удлиняет строку запроса, кроме того, у регионов имеются альтернативные названия и они могут меняться.
  10. Введена переменная la (Language). Если la=en, то ответ, насколько возможно, выдается на английском языке.
  11. Введена переменная cu (Currency). Если cu!=rub, то рубли в ответе переводятся в соответствующую валюту по курсу Центробанка РФ.
Вам необходимо обновить запросы с версии 2.0, если:
1. Запрашивается более 8 отправлений на платном доступе. Необходимо оставить не более 8 кодов отправлений для внутренних и не более 8 кодов для международных отправлений. Количество отправлений для бесплатного доступа не изменилось (не более 5).
2. Вы используете в запросах названия населенных пунктов. Полный список ключей населенных пунктов находится в таблице postcalc_mini_cities. Если вы используете библиотеку Postcalc Light, обновите таблицу postcalc_light_cities. Однако в Postcalc Light населенные пункты находятся в совместимом формате запроса.

В качестве сервера API можно:
1. Указать api.postcalc.ru. Это сервер API 2.0 с дополнительными патчами, которые корректно обрабатывают ключи населенных пунктов и двухбуквенный код страны в переменной t=. 01 февраля 2021 года он будет заменен на сервер API 2.1.
2. Указать api2.postcalc.ru. Это функционирующий сервер API 2.1.
Ключи доступа (key=) и лимиты - общие, то есть можно сделать в сутки суммарно 50 запросов с ключом test и 500 бесплатных запросов с зарегистрированным ключом к обоим серверам.