Интеграция API Почта РФ
Данный документ описывает реализацию обмена информацией между Falcon Space и почтой РФ.
Общие входные данные:
- Город отправления (Флаг - от двери);
- Город получения (Флаг - до двери);
- Длина, см;
- Ширина, см;
- Высота, см;
- Вес, г.
Общий алгоритм:
- Формирование текста запроса с параметрами
- Отправка запроса
- Получение ответа на запрос
- Парсинг ответа, получение данных.
Почта РФ с авторизацией - 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]
Результат запроса может быть как сообщение с информацией, так и сообщение с ошибкой.
Список возможных сообщений об ошибке.
- 'Ошибка! Строка @response не является JSON!' (Проверка ответа оператором ISJSON() )
- 'Ошибка! Запрос @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]
Результат запроса может быть как сообщение с информацией, так и сообщение с ошибкой.
Список возможных сообщений об ошибках.
- 'Ошибка! Строка @response не является JSON!' (Проверка ответа оператором ISJSON() )
- 'Ошибка! Запрос @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
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций Прием платежей через Яндекс.Кассу Онлайн-платежи. Интеграция с Робокассой (платежный шлюз) Zapier интеграция на платформе Falcon Space Интеграция коллтрекинга МАНГО ОФИС (режим Площадка) Интеграция API DaData.ru подсказки по адресам Интеграция API Курсы валют Центрального Банка РФ в веб-платформе Falcon Space Интеграция API Почта РФ Интеграция API Служба доставки СДЭК (CDEK) Интеграция API Служба доставки Деловые линии Интеграция импорт и парсинг файла CSV Интеграция API IpGeoBase Город по IP-адресу Интеграция API DaData.ru Город по IP-адресу Как вычислить расстояние между 2 точками с координатами через Google Maps Сканирование штрихкодов и QR кодов через камеру и с картинок Получение данных контрагента по ИНН Прием платежей на сайте через CloudPayments Как сделать интеграцию с Мой Склад Внедрение подсказок dadata на сайт Вывод точек на карте Яндекс. Интеграция с Яндекс Карты Интеграция с телефонией Zadarma.com Получение данных о контрагенте - интеграция с сервисом ЗаЧестныйБизнес Интеграция с AMO CRM Как импортировать данные в базу CRM из Google Контакты Вход/регистрация через ВКонтакте(vk.com) Интеграция CRM с онлайн чатом на сайте (Replain) Как связать yandex metrika clientID с пользователем на сайте и посмотреть полный путь его по сайту? Телеграм. Работа с файлами Как сделать обработку входящей почты (создание клиента в CRM из Email) Интеграция сайта с ChatGPT (openAI) Интеграция с Яндекс Метрика Интернет-эквайринг Тинькоф Банк Интеграция с платежным шлюзом LifePay Как сделать вебхук для передачи данных с Тильды на Falcon Space Пополнение средств через Yookassa (Юкасса) Тинькофф Банк - уведомление в учетную систему по операциям с расчетным счетом Интеграция с Ютуб. Получение роликов канала Интеграция с Ozon, Wildberries - извлечение статистики Вывод данных из различных удаленных SQL Server через технологию Linked Server
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта