Почта россии ошибка тарификации

Русскоязычный форум CS-Cart

Загрузка…

#Тарификация Почта России

  • Популярные
  • Последние
  • Без ответа
  • +1

    Плагин Тарификация Почта России от Лаборатория Шевского

    Не принято

    Плагин перестал расчитывать стоимость доставки.Через API сервиса «Отправка»:
    2022-08-31 12:33:24 217.78.188.192 dumped from /var/www/u1053207/public_html/magic-craftroom.ru/wa-plugins/shipping/pochta/lib/pochtaShipping.class.php line #270: […

  • Настройка плагинов Тарификация и Интеграция Почта России

    Приветствую! Приобрёл два плагина Тарификация Почта России и Интеграция Почта России. Ввёл все необходимые данные. После того как клиент вбивает индекс с другим регионом появляется надпись «Для указанного вами местоположения нет доступных…

Добрый день, имеет ли право почта России устанавливать тарификацию почтовых отправлений не только по критерию вес/размер, но и исходя из содержимого отправления?

Не говоря уже о том, что все отправления принимаются в закрытом виде согласно закону о почтовой связи (но это уже совсем другая история).

Полякова Н.Г.


Добрый день, имеет ли право почта России устанавливать тарификацию почтовых отправлений не только по критерию вес/размер, но и исходя из содержимого отправления?

ksushaksu, здравствуйте. Не понятно, к сожалению, о чем конкретно речь идет? В чем возникла проблема? Теоретически могу предположить, что ситуация касается почтового отправления с описью вложения. Если не права, поправьте.

Здравствуйте, с описью вопросов нет, там всё понятно. Вопрос в другом.

Согласно Приказу ФГУП «Почта России» от 17.05.2012 N 114-п «Об утверждении Порядка» (вместе с «Порядком приема и вручения внутренних регистрируемых почтовых отправлений»)

Письмо может содержать только текстовое сообщение, весом до 100 грамм

Бандероль — печатную продукцию и фотографии весом от 100 грамм (минимум) до 2 кг (максимум)

Посылка может содержать что угодно, минимального веса нет, но там и стоимость отправки выше в разы. (предельный вес регламентируется по критерию вида посылки, но это не суть)

То есть, к примеру если я захочу отправить перекидной календарик своему другу в Самару, весом 60 грамм, Почта РФ просто на просто не примет у меня данный тип отправления, под предлогом того, что не хватает 40 грамм до набора минималки.

Вероятнее всего скажут доложите 40 грамм в виде макулатуры или ещё чего-нибудь. (если быть откровенным — уже сказали)

Тут возникает 2 вопроса:

1. C какой стати я должен переплачивать 40 грамм?

2. С какой стати я должен что-то впихивать в своё отправление, тратить на это время до набора 100 грамм ? (да и помимо этого макулатура тоже денег стоит)

При всём при этом бандероль 1 класса почему-то не содержит минимально допустимого веса.

Рыжая Танюшка


1. C какой стати я должен переплачивать 40 грамм?

а вы не будете переплачивать, т.к. тариф на бандероли начинается от веса в 100 гр.

2. С какой стати я должен что-то впихивать в своё отправление, тратить на это время до набора 100 грамм ?

с той, что правила Почты и тарифы обязательны для всех потребителей на одинаковых условиях. Не нравится такой порядок установления тарифов — обжалуйте приказ, как нарушающий ваши права потребителя.

Данный документ описывает реализацию обмена информацией между Falcon Space и почтой РФ.

Общие входные данные:

  • Город отправления (Флаг — от двери);
  • Город получения (Флаг — до двери);
  • Длина, см;
  • Ширина, см;
  • Высота, см;
  • Вес, г.

Общий алгоритм:

  1.  Формирование текста запроса с параметрами
  2.  Отправка запроса 
  3.  Получение ответа на запрос
  4.  Парсинг ответа,  получение данных.

Почта РФ с авторизацией — otpravka.pochta.ru (обзор)

Для начала работы необходимо зарегистрироваться — https://passport.pochta.ru.

API Онлайн-сервиса «Отправка» — Основная информация — https://otpravka.pochta.ru/specification#/main

Взаимодействие посредством REST запросов.

Запросы и ответы сервиса используют JSON текстовый формат.

Для интеграции с API Онлайн-сервиса «Отправка» необходимо располагать:

  •     токеном авторизации приложения;
  •     ключом авторизации пользователя.

Ключ авторизации пользователя — генерируется с помощью алгоритма base64 — https://otpravka.pochta.ru/specification#/authorization-key

Токен можно узнать в настройках личного кабинета — https://otpravka.pochta.ru/settings#/api-settings

Для работы с данным сервисом и получения токена необходим договор с Почтой России!

Далее этот способ не рассматривается.

Почта РФ без авторизации

Если у Вас нет договора и доступа к api используйте эти два сервиса от Почты России. 

Расчет сроков доставки —  https://delivery.pochta.ru/#/calcmail/910

Расчет стоимости доставки — https://tariff.pochta.ru/#/calcmail/101

Почта РФ тарифы — Стоимость — PROCEDURE [api_ruPostTariff_request]

Автоматический расчет стоимости почтовых отправлений и услуг с помощью сервиса тарификации

Сайт: https://tariff.pochta.ru/#/calcmail/101

Документация: https://tariff.pochta.ru/#/support/api

Для получения расчета клиент отправляет на сервер REST-запрос методом GET

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

  • Адрес сервиса (URL):https://tariff.pochta.ru/tariff/v1/calculate?
  • Метод запроса: GET
  • Формат на выходе: JSON

Входные данные запроса – параметры процедуры PROCEDURE [dbo].[api_ruPostTariff_request]

Переменная

Тип

Значение по умолчанию

Описание

Примечание

1

@resultType

nvarchar(32)

‘Json’

Формат запрашиваемых данных

Json — тип результата

2

@codeObject

nvarchar(32)

‘47030’

Тип (код) объекта почтовой тарификации, см. Приложение 1

47030 — Посылка 1 класса – (ПРИМЕР c6v.ru)

27030 — Посылка (частное лицо или предприятие) — Посылка стандарт

3

@indexFrom

nvarchar(32)

‘101000’

Индекс места отправления

101000 «МОСКВА»

4

@doorFrom

bit

 0

Флаг — от двери

 ПОКА НЕ ИСПОЛЬЗУЕТСЯ

5

@indexTo

nvarchar(32)

‘690000 ‘

Индекс места назначения

108803 «ВОСКРЕСЕНСКОЕ»

— Владивосток

6

@doorTo

bit

0

Флаг — до двери

 ПОКА НЕ ИСПОЛЬЗУЕТСЯ

вес / габариты

7

@weight

nvarchar(32)

‘100’

Вес

(пока считать в граммах)

8

@length    

nvarchar(32)

’10’

Длина, см

ПОКА НЕ ИСПОЛЬЗУЕТСЯ

9

@width     

nvarchar(32)

’10’

Ширина, см

ПОКА НЕ ИСПОЛЬЗУЕТСЯ

10

@height    

nvarchar(32)

’10’

Высота, см

ПОКА НЕ ИСПОЛЬЗУЕТСЯ

11

@pack      

nvarchar(32)

’10’

Тип упаковки

Возможные значения см. в Приложении 3

10 — Коробка «S»

12

@operDate  

nvarchar(8)

Дата тарификации YYYYMMDD

Если дата не указана, принимается значение текущей даты

Расчетные параметры

13

size

nvarchar(max)

Размер отправления (см).

Указывается 3 целочисленных значения, разделенные знаком “x”, например, size=100x50x25.

ПОКА НЕ ИСПОЛЬЗУЕТСЯ

Индексы

  • 101000 — МОСКВА
  • 344000 — Ростов
  • 163000- Архангельск
  • 690000 — Владивосток

Замечание 1. В зависимости от Кода объекта тарификации набор входных параметров может меняться.

Пример текста запроса — request.

 https://tariff.pochta.ru/tariff/v1/calculate?Json&object=47030&from=101000&to=690000&weight=100&pack=10&date=20200603

Примечание. Фактически в этом запросе передается только URL. Тела запроса body – нет, SELECT2 не используется.

Пример текста ответа — response.

{
    "version": "1.13.3.390",
    "place": "C5-6",
    "id": 47030,
    "name": "Посылка 1 класса",
    "typ": 47,
    "cat": 3,
    "dir": 0,
    "from": 101000,
    "to": 690000,
    "weight": 100,
    "date": 20200603,
    "time": 0,
    "date-first": 20200101,
    "postoffice": [
        {
            "index": 101000,
            "tp": 1,
            "name": "МОСКВА",
            "region": 1000000001045,
            "regid": 77,
            "place": 1000000001045,
            "parent": 127950,
            "type": 3,
            "pvz": 1,
            "item-check-men": 1,
            "item-check-view": 1,
            "move": 1,
            "pack-max": 99
        },
        {
            "index": 690000,
            "tp": 2,
            "name": "ВЛАДИВОСТОК ПОЧТАМТ",
            "region": 1005,
            "regid": 25,
            "place": 1000000031441,
            "parent": 690700,
            "type": 15
        }
    ],
    "trans": 3,
    "transid": 2,
    "transname": "авиа",
    "tariff": [
        {
            "id": "2556",
            "name": "Плата за пересылку посылки 1 класса",
            "steps": [
                {
                    "name": "Доставка из группы 1 по зоне 2",
                    "route": [
                        2556,
                        "1",
                        "2",
                        "100"
                    ],
                    "v": 14417,
                    "id": "2556-1-2-100"
                }
            ],
            "fromi": 101000,
            "from": "МОСКВА",
            "toi": 690000,
            "to": "ВЛАДИВОСТОК ПОЧТАМТ",
            "ground": {
                "val": 14417,
                "valnds": 17300,
                "ndsrate": 20.0
            }
        }
    ],
    "ground": {
        "val": 14417,
        "valnds": 17300
    },
    "pay": 14417,
    "paynds": 17300,
    "ndsrate": 20,
    "nds": 2883,
    "typcatname": "Посылка 1 класса",
    "now": "20200603T202514"
}
CREATE PROCEDURE [dbo].[api_ruPostTariff_request]
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2)
	@username nvarchar(32)  -- текущий пользователь.
    --  API ЗАПРОС - КЛЮЧИ  Исходные данные:
    ,@resultType nvarchar(32) = 'Json' 		-- Json		тип результата
	,@codeObject nvarchar(32) = '47030'  	-- Код объекта тарификации
    										-- 47030 - Посылка 1 класса -- ПРИМЕР c6v.ru
											-- 27030 - Посылка (частное лицо или предприятие) - Посылка стандарт

	,@indexFrom	nvarchar(32) = '101000'   	-- Индекс места отправления -- 101000 "МОСКВА".
	,@doorFrom  bit = 0 					-- Флаг - от двери -- ПРИМЕР c6v.ru -- ПОКА НЕ ИСПОЛЬЗУЕТСЯ

	,@indexTo   nvarchar(32) = '690000'   	-- Индекс места назначения -- 108803 "ВОСКРЕСЕНСКОЕ". -- 690000 - Владивосток
	,@doorTo   	bit = 0 					-- Флаг - до двери -- ПРИМЕР c6v.ru -- ПОКА НЕ ИСПОЛЬЗУЕТСЯ
	-- вес / габариты
	,@weight     nvarchar(32) = '100'   	-- Вес (грамм / кг ) -- Указывается в граммах или килограммах, в зависимости от объекта тарификации, см. Приложение 1
											-- пока считать в граммах
    -- Размер -- ПРИМЕР c6v.ru -- ПОКА НЕ ИСПОЛЬЗУЕТСЯ
	,@length     nvarchar(32) = '10'   		-- Длина, см
	,@width      nvarchar(32) = '10'   		-- Ширина, см
	,@height     nvarchar(32) = '10'   		-- Высота, см

	,@pack       nvarchar(32) = '10'   		-- Упаковка
    ,@operDate   nvarchar(8)  = ''          --'20200527'  -- Дата тарификации YYYYMMDD -- Если дата не указана, принимается значение текущей даты

AS
BEGIN

-- Дата тарификации YYYYMMDD -- Если дата не указана, принимается значение текущей даты
-- 112 = ггггммдд --'20200527'
IF  LEN(  ISNULL ( @operDate   , '' ) )=0
SET @operDate  =  CONVERT ( nvarchar(8) , GETDATE() , 112 )
-- exec as_print @str = @operDate


DECLARE @apiUrl 		nvarchar(max) = '' 		-- Финальная строка для отправки -- @apiStr -- ФАКТИЧЕСКИ ЭТО Url
DECLARE @apiCommomStr 	nvarchar(max) = '' 	    -- Общая часть для всех запросов
SET     @apiCommomStr   = 'https://tariff.pochta.ru/tariff/v1/calculate?' -- ? знак в конце Обязательно

-- size Строка Размер отправления (см). Указывается 3 целочисленных значения, разделенные знаком “x”, например, size=100x50x25. Возможные значения: 1–1000
-- формируется по вх.парам
-- ПРИМЕР c6v.ru -- ПОКА НЕ ИСПОЛЬЗУЕТСЯ
DECLARE @size nvarchar(max) = ''
SET     @size =  @length + 'x' + @width + 'x' + @height
-- exec as_print @str=@size

SET  @apiUrl  = @apiUrl + @apiCommomStr
                        + @resultType
                        + IIF ( LEN(  ISNULL ( @codeObject , '' ) )>0, '&object=' + @codeObject, '' )
                        + IIF ( LEN(  ISNULL ( @indexFrom  , '' ) )>0, '&from=' + @indexFrom, '' )
                        + IIF ( LEN(  ISNULL ( @indexTo    , '' ) )>0, '&to=' + @indexTo, '' )
                        + IIF ( LEN(  ISNULL ( @weight     , '' ) )>0, '&weight=' + @weight, '' )
                        + IIF ( LEN(  ISNULL ( @pack       , '' ) )>0, '&pack=' + @pack, '' )
                        + IIF ( LEN(  ISNULL ( @operDate   , '' ) )>0, '&date=' + @operDate, '' )


    -- ОТЛАДКА
	insert into as_trace (text, username, code , created )   values( @apiUrl , @username, 'api_ruPostTariff_request' , GETDATE() )

    -- ПРАВИЛЬНАЯ СТРОКА
    -- select '' Msg, 1 Result, 'https://tariff.pochta.ru/tariff/v1/calculate?json&object=27030&from=101000&to=108803&weight=1000&pack=10&date=20200527' Url
    -- ФАКТИЧЕСКИ ВЕСЬ ЗАПРОС ОТПРАВЛЯЕСТ В Url
    select '' Msg, 1 Result, @apiUrl AS Url

	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
	-- select 'id' name, '5' value, '' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END

Почта РФ тарифы — Стоимость — PROCEDURE [api_ruPostTariff_response]

 Результат запроса может быть как сообщение с информацией, так и сообщение с ошибкой.

 Список возможных сообщений об ошибке.

  1.  ‘Ошибка! Строка @response не является JSON!’ (Проверка ответа оператором ISJSON() )
  2.  ‘Ошибка! Запрос @response вернул ошибку! ‘… @errorText.

Пример текста ответа – response – с ошибкой.

{
    "caption": "Ошибки тарификации",
    "version": "1.13.3.390",
    "error": [
        "Не указан объект тарификации в параметре object. (1301)"
    ],
    "errors": [
        {
            "msg": "Не указан объект тарификации в параметре object.",
            "code": 1301
        }
    ]
}

Если ошибок в ответе не обнаружено, из ответа выбираются такие данные:

  • Итого сумма без НДС
  • Итого сумма с НДС
  • Ставка НДС %
  • Сумма НДС
  • Название операции
  • Дата и Время выполнения

Пример текста – результат: «Операция: Посылка 1 класса Итого сумма без НДС: 144.71 руб. Итого НДС ( Ставка 20% ):28.38 руб. Итого сумма с НДС: 173.00 руб.»

PROCEDURE [dbo].[api_ruPostTariff_response]

CREATE PROCEDURE [dbo].[api_ruPostTariff_response]
	@response nvarchar(max),
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)

	@username nvarchar(32)
AS
BEGIN
    -- ОТЛАДКА
    -- exec as_print @str='api_ruPostTariff_response'
	insert into as_trace (text, username, code , created) values(@response, @username, 'api_ruPostTariff_response' , GETDATE() )


    DECLARE @json1 NVARCHAR(MAX)  = N''
	SET @json1 = @response

    -- Для проверки правильности JSON формата существует функция ISJSON, которая возвращает 1, если это JSON, 0 — если нет и NULL, если был передан NULL
    DECLARE @presentJSON bit = 0
    SELECT @presentJSON = ISNULL( ISJSON( @json1 ) , 0 )
    -- SELECT @presentJSON
    IF @presentJSON <> 1
    BEGIN
        SELECT 'Ошибка! Строка @response не является JSON!' Msg, 0 Result, @response Response
        RETURN
    END


    -- Обработка ошибки в ответе
    DECLARE @presentError bit = 0, @errorText NVARCHAR(MAX), @errorCode NVARCHAR(MAX), @errorMsg NVARCHAR(MAX)
    -- ошибка
    -- https://tariff.pochta.ru/tariff/v1/calculate?Json&27030&101000&108803&1000&10&20200527
    -- {"caption": "Ошибки тарификации","version": "1.12.19.385","error": ["Не указан объект тарификации в параметре object. (1301)"],"errors": [{"msg":"Не указан объект тарификации в параметре object.","code":1301}]}

	DECLARE @pay		NVARCHAR(MAX) -- Итого сумма без НДС
          , @paynds		NVARCHAR(MAX) -- Итого сумма с НДС
          , @ndsrate	NVARCHAR(MAX) -- Ставка НДС %
          , @nds		NVARCHAR(MAX) -- Сумма НДС
          , @typcatname NVARCHAR(MAX) -- Название операции
          , @now		NVARCHAR(MAX) -- Дата и Время выполнения

	-- Чтобы извлечь скалярное значение из JSON, можно воспользоваться функцией JSON_VALUE:
      SELECT @presentError = IIF( JSON_VALUE( @json1, '$.error[0]') IS NULL  , 0 , 1 )
           , @errorText    = JSON_VALUE( @json1, '$.error[0]')
           , @errorCode    = JSON_VALUE( @json1, '$.errors[0].code')
           , @errorMsg     = JSON_VALUE( @json1, '$.errors[0].msg')
           -- Данные
           , @pay 			= JSON_VALUE( @json1, '$.pay')
           , @paynds 		= JSON_VALUE( @json1, '$.paynds')
           , @ndsrate 		= JSON_VALUE( @json1, '$.ndsrate')
           , @nds 			= JSON_VALUE( @json1, '$.nds')
           , @typcatname 	= JSON_VALUE( @json1, '$.typcatname')
           , @now 			= JSON_VALUE( @json1, '$.now')


      IF @presentError = 1
      BEGIN
          SELECT 'Ошибка! Запрос @response вернул ошибку! '+ ISNULL( @errorText, '' ) Msg, 0 Result, @response Response
          RETURN
      END

	 DECLARE @payInt		NVARCHAR(MAX) -- Итого сумма без НДС -- Целое
          , @payDecimal		NVARCHAR(MAX) -- Итого сумма без НДС -- дробное
          , @payndsInt		NVARCHAR(MAX) -- Итого сумма с НДС -- Целое
          , @payndsDecimal	NVARCHAR(MAX) -- Итого сумма с НДС -- дробное
          , @ndsInt			NVARCHAR(MAX) -- Сумма НДС -- Целое
          , @ndsDecimal		NVARCHAR(MAX) -- Сумма НДС -- дробное

    SELECT @payInt        = ISNULL( SUBSTRING ( @pay , 1 , LEN(@pay) - 2 )		, '' )
         , @payDecimal    = ISNULL( SUBSTRING ( REVERSE( @pay ), 1 ,2 )			, '' )
         , @payndsInt     = ISNULL( SUBSTRING ( @paynds , 1 , LEN(@paynds) - 2 ), '' )
         , @payndsDecimal = ISNULL( SUBSTRING ( REVERSE( @paynds ), 1 ,2 )		, '' )
         , @ndsInt        = ISNULL( SUBSTRING ( @nds , 1 , LEN(@nds) - 2 )		, '' )
         , @ndsDecimal    = ISNULL( SUBSTRING ( REVERSE( @nds ), 1 ,2 )			, '' )


	-- SELECT 1
	select 'Операция: '+ ISNULL( @typcatname, '' )
         + ' Итого сумма без НДС: '+ ISNULL( @payInt, '' )  + '.'    + ISNULL( @payDecimal, '' ) +' руб.'
         + ' Итого НДС ( Ставка '  + ISNULL( @ndsrate, '' ) +'% ):'  + ISNULL( @ndsInt, '' )  + '.'  + ISNULL( @ndsDecimal, '' ) +' руб.'
         + ' Итого сумма с НДС: '  + ISNULL( @payndsInt , '' ) + '.' + ISNULL( @payndsDecimal, '' ) +' руб.' AS Msg --
          , 1 Result , @response Response


	-- SELECT 2 Внешние действия

END

Почта РФ — Сроки Доставки — PROCEDURE [api_ruPostDelivery_request]

 Автоматический расчет нормативных сроков доставки почтовых отправлений.

Сайт: https://delivery.pochta.ru/#/calcmail/913

Документация:  https://delivery.pochta.ru/#/support/api

 Для получения расчета клиент отправляет на сервер REST-запрос методом GET

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

  • Адрес сервиса (URL):https://delivery.pochta.ru/delivery/v1/calculate?  
  • Метод запроса: GET
  • Формат на выходе: JSON

Входные данные запроса – параметры процедуры PROCEDURE [api_ruPostDelivery_request]

Переменная

Тип

Значение по умолчанию

Описание

Примечание

1

@resultType

nvarchar(32)

‘Json’

Формат запрашиваемых данных

Json — тип результата

2

@codeObject

nvarchar(32)

‘47030’

Тип (код) объекта почтовой тарификации, см. Приложение 1

47030 — Посылка 1 класса – 

27030 — Посылка (частное лицо или предприятие) — Посылка стандарт

3

@indexFrom

nvarchar(32)

‘101000’

Индекс места отправления

101000 «МОСКВА»

4

@indexTo

nvarchar(32)

‘690000 ‘

Индекс места назначения

108803 «ВОСКРЕСЕНСКОЕ»

— Владивосток

5

@operDate  

nvarchar(8)

Дата тарификации YYYYMMDD

Если дата не указана, принимается значение текущей даты

Пример текста запроса — request.

https://delivery.pochta.ru/delivery/v1/calculate?Json&object=47030&from=101000&to=690000&date=20200603

Примечание. Фактически в этом запросе передается только URL. Тела запроса body – нет, SELECT2 не используется.

Пример текста ответа — response.

{
    "version": "1.13.3.390",
    "place": "D_21",
    "id": 47030,
    "name": "Посылка 1 класса",
    "typ": 47,
    "cat": 3,
    "dir": 0,
    "from": 101000,
    "to": 690000,
    "date": 20200603,
    "time": 0,
    "date": 20200603,
    "time": 0,
    "date-first": 20200218,
    "postoffice": [

        {
            "index": 101000,
            "tp": 1,
            "name": "МОСКВА",
            "region": 1000000001045,
            "regid": 77,
            "place": 1000000001045,
            "parent": 127950,
            "type": 3,
            "pvz": 1,
            "item-check-men": 1,
            "item-check-view": 1,
            "move": 1,
            "pack-max": 99
        },
        {
            "index": 690000,
            "tp": 2,
            "name": "ВЛАДИВОСТОК ПОЧТАМТ",
            "region": 1005,
            "regid": 25,
            "place": 1000000031441,
            "parent": 690700,
            "type": 15
        }
    ],
    "tariff": [
        {
            "id": "5072",
            "name": "Нормативный срок доставки отправлений 1 класса",
            "steps": [
                {
                    "name": "Прямая между населенными пунктами",
                    "route": [
                        "5072",
                        "45000000",
                        "5701000001"
                    ],
                    "z": 4,
                    "id": "5072-45000000-5701000001"
                }
            ],
            "fromi": 101000,
            "from": "МОСКВА",
            "toi": 690000,
            "to": "ВЛАДИВОСТОК ПОЧТАМТ",
            "delivery": {
                "min": 2,
                "max": 4
            }
        }
    ],
    "delivery": {
        "min": 2,
        "max": 4
    },
    "typcatname": "Посылка 1 класса",
    "now": "20200603T204906"
}
CREATE PROCEDURE [dbo].[api_ruPostDelivery_request]
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2)
	@username nvarchar(32)  -- текущий пользователь.
    --
    ,@resultType nvarchar(32) = 'Json' 		-- Json		тип результата
	,@codeObject nvarchar(32) = '47030'  	-- Код объекта тарификации
    										-- 47030 - Посылка 1 класса -- ПРИМЕР c6v.ru
											-- 27030 - Посылка (частное лицо или предприятие) - Посылка стандарт

	,@indexFrom	nvarchar(32) = '101000'   	-- Индекс места отправления -- 101000 "МОСКВА".

	,@indexTo   nvarchar(32) = '690000'   	-- Индекс места назначения -- 108803 "ВОСКРЕСЕНСКОЕ". -- владивосток 690000

    ,@operDate   nvarchar(8)  = ''          --'20200527'  -- Дата тарификации YYYYMMDD
    										-- Дату необходимо указывать по местному времени.Если дата не указана–принимаетсязначение текущей датыпо московскому времени

AS
BEGIN

-- Дата тарификации YYYYMMDD
-- Дату необходимо указывать по местному времени.Если дата не указана–принимаетсязначение текущей датыпо московскому времени
-- 112 = ггггммдд --'20200527'
IF  LEN(  ISNULL ( @operDate   , '' ) )=0
SET @operDate  =  CONVERT ( nvarchar(8) , GETDATE() , 112 )
-- exec as_print @str = @operDate

DECLARE @apiUrl 		nvarchar(max) = '' 		-- Финальная строка для отправки -- @apiStr -- ФАКТИЧЕСКИ ЭТО Url
DECLARE @apiCommomStr 	nvarchar(max) = '' 	    -- Общая часть для всех запросов
SET     @apiCommomStr   = 'https://delivery.pochta.ru/delivery/v1/calculate?' -- ? знак в конце Обязательно

SET  @apiUrl  = @apiUrl + @apiCommomStr
                        + @resultType
                        + IIF ( LEN(  ISNULL ( @codeObject , '' ) )>0, '&object=' + @codeObject, '' )
                        + IIF ( LEN(  ISNULL ( @indexFrom  , '' ) )>0, '&from=' + @indexFrom, '' )
                        + IIF ( LEN(  ISNULL ( @indexTo    , '' ) )>0, '&to=' + @indexTo, '' )
                        + IIF ( LEN(  ISNULL ( @operDate   , '' ) )>0, '&date=' + @operDate, '' )


    -- ОТЛАДКА
    -- exec as_print @str='api_ruPostTariff_request'
	insert into as_trace (text, username, code , created )   values( @apiUrl , @username, 'api_ruPostDelivery_request' , GETDATE() )
    -- ФАКТИЧЕСКИ ВЕСЬ ЗАПРОС ОТПРАВЛЯЕСТ В Url
    select '' Msg, 1 Result, @apiUrl AS Url


	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
	-- select 'id' name, '5' value, '' [type] -- form (в форме передается), header (в http headers), get запросы передавайте прямо в URL
END

Почта РФ — Сроки Доставки — PROCEDURE [api_ruPostDelivery_response]

 Результат запроса может быть как сообщение с информацией, так и сообщение с ошибкой.

 Список возможных сообщений об ошибках.

  1. ‘Ошибка! Строка @response не является JSON!’ (Проверка ответа оператором ISJSON() )
  2. ‘Ошибка! Запрос @response вернул ошибку! ‘… @errorText.

Пример текста ответа – response – с ошибкой

{
    "caption": "Ошибки тарификации",
    "version": "1.13.3.390",
    "data": {
        "id": 47030,
        "typ": 47,
        "cat": 3,
        "dir": 0,
        "name": "Посылка 1 класса",
        "seq": 47030,
        "date": 20200603,
        "date-first": 20200218
    },
    "error": [
        "Неверное значение параметра \"Индекс места назначения\" (to). значение \"6900001111\" не является параметром почтового объекта. (1301)"
    ],
    "errors": [
        {
            "msg": "Неверное значение параметра \"Индекс места назначения\" (to). значение \"6900001111\" не является параметром почтового объекта.",
            "code": 1301
        }
    ]
}

Если ошибок в ответе не обнаружено, из ответа выбираются такие данные:

  •  Минимальное нормативное количество дней доставки отправления
  •  Максимальное нормативное количество дней доставки отправления
  •  Название операции
  •  Дата и Время выполнения

Пример текста – результат: «Операция: Посылка 1 класса Срок доставки: от 2 до 4 дней.»

CREATE PROCEDURE [dbo].[api_ruPostDelivery_response]
	@response nvarchar(max),
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2 - те же что и на request)

	@username nvarchar(32)
AS
BEGIN
    -- ОТЛАДКА
    -- exec as_print @str='api_ruPostDelivery_response'
	insert into as_trace (text, username, code , created  ) values(@response, @username, 'api_ruPostDelivery_response' , GETDATE() )


    DECLARE @json1 NVARCHAR(MAX)  = N''
	SET @json1 = @response

    -- Для проверки правильности JSON формата существует функция ISJSON, которая возвращает 1, если это JSON, 0 — если нет и NULL, если был передан NULL
    DECLARE @presentJSON bit = 0
    SELECT @presentJSON = ISNULL( ISJSON( @json1 ) , 0 )
    -- SELECT @presentJSON
    IF @presentJSON <> 1
    BEGIN
        SELECT 'Ошибка! Строка @response не является JSON!' Msg, 0 Result, @response Response
        RETURN
    END

	-- Обработка ошибки в ответе
    DECLARE @presentError bit = 0, @errorText NVARCHAR(MAX), @errorCode NVARCHAR(MAX), @errorMsg NVARCHAR(MAX)

	DECLARE  @typcatname NVARCHAR(MAX) -- Название операции
           , @now		NVARCHAR(MAX) -- Дата и Время выполнения
           --
    DECLARE @deliveryDaysMin NVARCHAR(MAX)
	DECLARE @deliveryDaysMax NVARCHAR(MAX)

	-- Чтобы извлечь скалярное значение из JSON, можно воспользоваться функцией JSON_VALUE:
    SELECT @presentError = IIF( JSON_VALUE( @json1, '$.error[0]') IS NULL  , 0 , 1 )
           , @errorText    = JSON_VALUE( @json1, '$.error[0]')
           , @errorCode    = JSON_VALUE( @json1, '$.errors[0].code')
           , @errorMsg     = JSON_VALUE( @json1, '$.errors[0].msg')
           -- Данные
           , @typcatname 	= JSON_VALUE( @json1, '$.typcatname')
           , @now 			= JSON_VALUE( @json1, '$.now')
           , @deliveryDaysMin = JSON_VALUE( @json1, '$.delivery.min')
	 	   , @deliveryDaysMax = JSON_VALUE( @json1, '$.delivery.max')

      IF @presentError = 1
      BEGIN
          SELECT 'Ошибка! Запрос @response вернул ошибку! '+ ISNULL( @errorText, '' ) Msg, 0 Result, @response Response
          RETURN
      END

    DECLARE @deliveryText NVARCHAR(MAX)
    -- Срок доставки: от 2 до 4 дней.
    IF ISNULL( @deliveryDaysMin, '' ) <> ISNULL( @deliveryDaysMax, '' ) SET @deliveryText = 'Срок доставки: от ' + ISNULL( @deliveryDaysMin, '' )+' до '+ISNULL( @deliveryDaysMax, '' )+' дней.'
    IF ISNULL( @deliveryDaysMin, '' )  = ISNULL( @deliveryDaysMax, '' ) SET @deliveryText = 'Срок доставки: ' + ISNULL( @deliveryDaysMin, '' )+' дней.'

	-- SELECT 1
	select 'Операция: '+ ISNULL( @typcatname, '' ) +' '+ @deliveryText AS  Msg
          , 1 Result, @response Response

	-- SELECT 2 Внешние действия

END

Falcon Space — функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space

Насколько полезной была статья?

Google поиск по нашей документации

Оставить заявку

Вход в личный кабинет

Написать в техподдержку

Отправить заявку

База знаний

    Услуги

  • Создание интернет-магазина
  • SEO-продвижение
  • Маркетплейсы
  • Контекстная реклама
  • Техподдержка

    Продукты

  • Плагины и приложения
  • База знаний
  • СмартБид — биддер ставок Яндекс Маркет

    Кейсы

  • SEO-продвижение
  • Поиск по товарам
  • Контекстная реклама
  • Продвижение на маркетплейсах

    О нас

  • О компании
  • Отзывы
  • Вакансии

    Цены

  • Акции и спецпредложения
  • Цены на услуги
  • Bodysite.Club ♔

Создание интернет-магазина

  • Интернет-магазин на готовой теме дизайна
  • Индивидуальная разработка
  • Переход на Shop-Script
  • Интеграция с 1С, Мой Склад
  • Интеграция с маркетплейсами

SEO-продвижение

  • Тарифы на продвижение
  • Разовая SEO-оптимизация
  • Подключение к «Поиск по товарам»
  • SEO-аудит интернет-магазина
  • Безопасный переезд

Маркетплейсы

  • Подключение
    • Ozon
    • Яндекс Маркет
    • СберМегаМаркет
    • Wildberries
  • Продвижение
    • Ozon
    • Яндекс Маркет
    • СберМегаМаркет
    • Wildberries

Контекстная реклама

  • Настройка Яндекс Директ
  • Ведение Яндекс Директ

Техподдержка

  • Доработки по часовым ставкам
  • Наполнение интернет-магазинов

База знаний

Запрос в поддержку

База знаний

Интеграция с AliExpressИнтеграция с OZONИнтеграция с Яндекс.МаркетЯндекс.Маркет PROSEO-фильтрMeta Robots TagИнформация о доставке и оплатеЧасто задаваемые вопросыГруппы товаровSEO-оптимизацияКаталог отзывовGoogle ПокупкиЭлектронная коммерцияПоиск PROSEO-регионыТурбо-страницыSEO-редиректыLink canonical ​Last-Modified​Заказ обратного звонка​HTML-карта сайта​Навигация в хлебных крошкахКупить в 1 кликSitemap PROЗаказ в 1 шагБренды PROМассовые измененияМобильное приложение IOS, AndroidЗащита контента для Shop-ScriptАвтообновление курса валют Защита контента для приложения «Блог»FAQ (Общие вопросы)Интеграция с Tiu.ruПередача заказов из корзин Турбо-страницMobiSite 2.0MegaShop 2.0Mobisite 3.0

Баг-репортыПолезная информацияИдеи по улучшениюFAQ

Войдите в личный кабинет для возможности задавать вопросы и отвечать на комментарии.

Баг-репорты

Не подгружается доставка из плагина «Тарификация Почта России»

Виктор

20 апреля 2022 13:08

1 комментарий

На рассмотрении

+1

При получении заказов с Алиэкспресс не выбирается доставка из плагина «Тарификация Почта России». Везде в созданных заказах отображается «Доставка с AliExpress» в качестве способа доставки. Хотя в настройках плагина все выбрано.

<h3></h3>

1 комментарий

Поддержка Bodysite

Поддержка Bodysite

+1

Добрый день. К сожалению, не удаётся воспроизвести на своих проектах. Для диагностики нужно предоставить доступы к вашему сайту в поддержку support@bodysite.ru

13 мая 2022 11:26

Добавить комментарий

Чтобы добавить комментарий, войдите в личный кабинет

Теги:Доставка с AliExpress

Похожие публикации

  • На рассмотренииНе подгружается доставка из плагина «Тарификация Почта России»

    1 ответ

    Виктор 20 апреля 2022 13:08

    +1

    Виктор

    +1

    20 апреля 2022 13:08

    1 ответ

    Теги:Доставка с AliExpress

  • Настройка плагина HTML-карта сайта под разные витрины

    0 ответов

    Сергей Галицкий 14 апреля 2020 18:19

    +2

    Сергей Галицкий

    +2

    14 апреля 2020 18:19

    0 ответов

  • ИсправленоСтили оформления плагина Информация о доставке и оплате

    3 ответа

    Игорь Авдеев 12 ноября 2020 22:19

    +2

    Игорь Авдеев

    +2

    12 ноября 2020 22:19

    3 ответа

  • ИсправленоРабота плагина в бразуере Мозилла

    1 ответ

    Поддержка Bodysite 20 июля 2018 15:29

    +1

    Поддержка Bodysite

    +1

    20 июля 2018 15:29

    1 ответ

    Теги:плагинхлебные крошки

    Эта проблема будет исправлена в обновлении. 

    Поддержка Bodysite

    Поддержка Bodysite

  • Не принятоОшибки при бэкапах в Vesta CP из за плагина

    1 ответ

    Сергей Правдин 20 апреля 2019 19:19

    +1

    Сергей Правдин

    +1

    20 апреля 2019 19:19

    1 ответ

    Проблема с таблицей в базе данных, а не с самим плагином.При удалении плагина через «Инсталлер» движок удаляет таблицы плагина, поэтому и заработало после удаления.

    Поддержка Bodysite

    Поддержка Bodysite

Подпишитесь на рассылку

Все самое актуальное об электронной коммерции в вашем почтовом ящике 1 раз в месяц

Нажимая на кнопку «Подписаться», я соглашаюсь принимать рекламные сообщения на условиях политики обработки персональных данных

Понравилась статья? Поделить с друзьями:
  • Правила квалификации при субъективной ошибке
  • Появление ошибки во время обновления либо восстановления iphone
  • Право врача на ошибку эссе
  • Почта пишет внутренняя ошибка 15
  • Правильное суждение об ошибках идентификации пациента