Интеграция 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 (Юкасса) Тинькофф Банк - уведомление в учетную систему по операциям с расчетным счетом Интеграция с Ютуб. Получение роликов канала
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
по ходу эксплуатации программы. Как создается функционал на платформе
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы