Расчёт доставки Почта России не работает с пятизначным индексом

доставка

#1

У меня магазин на 4.9.2 версии CS-Cart.
Выбираем способ доставки - Почта России,
Расчёт тарифа - в режиме реального времени
Во вкладке “Настроить”, вид отправления - любое международное отправление
Нажимаем “Тест” расчёта стоимости доставки, выдаёт ошибку в случае если индекс не шестизначный (шестизначный рассчитывает). При оформление заказа пользователем тоже не рассчитывает. Заграничные индексы не все шестизначные, даже у ближайших стран Казахстан, Украина встречаются пятизначные. Попробовал на http://demo.cs-cart.ru, разные адреса Украины и Казахстана, там то же самое.

Ошибка при тесте: Индекс места назначения (to): значение “to=72773” не может быть менее 100000 (1130)

В журнале событий ошибка:
URL: http://tariff.russianpost.ru/tariff/v1/calculate
Запрос: ‘json=&errorcode=1&closed=1&object=3001&date=20190201&from=101000&to=72773&country=398&weight=1000&sumoc=10000&sumnp=0&isavia=2&service=&countinpack=’
Ответ: {“caption”:“Ошибки тарификации”,“version”:“1.9.14.297”,“data”:{“id”:3001,“typ”:3,“cat”:0,“dir”:1,“name”:“Бандероль простая”,“seq”:3001,“date”:20190201,“date-first”:20190101,“transfer”:true},“error”:[“Индекс места назначения (to): значение “to=72773” не может быть менее 100000 (1130)”],“errors”:[{“msg”:“Индекс места назначения (to): значение “to=72773” не может быть менее 100000”,“code”:1130}]}


#2

Это запрос к калькулятору Почты России и ответ самого калькулятора. Вы можете уточнить в поддержке почты почему сервис отдает ошибку при расчете стоимости доставки для адреса пятизначным индексом.

Судя по документации запрос правильный (код 3001 это международная бандероль)


#3

Благодарю за наводку, на сайте https://tariff.pochta.ru/ нашёл контакты, написал вопрос. В качестве примера привёл тот же запрос, что выдавал ошибку:
https://tariff.pochta.ru/tariff/v1/calculate?json=&errorcode=1&closed=1&object=3001&date=20190201&from=101000&to=72773&country=398&weight=1000&sumoc=10000&sumnp=0&isavia=2

Ответ “Почты России”: Для международных отправлений не используется параметр to

Попробовал без параметра to, расчёт работает.

В файле /app/addons/rus_russianpost/Tygh/Shippings/Services/RussianPostPochta.php
нашёл строчку $data_post[‘to’] = $location[‘zipcode’];
Какое условие для неё правильно написать? Для того чтобы исключить параметр для международной доставки.

Пока сделал так:
if ($location[‘country’] == ‘RU’) {
$data_post[‘to’] = $location[‘zipcode’];
}


#4

А встречаются еще и четырехзначные индексы и с символами (в UK вроде такое попадалось).


#5

Спасибо за информацию. Мы воспроизвели проблему и сообщили о ней разработчикам.


#6

Добрый день, @magadar
Спасибо за Ваше обращение об ошибке.
Исправления войдут в CS-Cart 4.9.4.