Документация сервиса отправки корреспонденции (PostService) — различия между версиями
D.andreev (обсуждение | вклад) м (Защищена страница «Документация сервиса отправки корреспонденции (PostService)» ([Редактирование=Разрешено только администраторам] (бессро…) |
D.andreev (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | ''' | + | == Сервис отправки корреспонденции (PostService) == |
+ | |||
+ | === Ключевые особенности === | ||
+ | |||
+ | Отправка e-mail, sms, заказных писем и другие реализации; | ||
+ | |||
+ | Единая структура данных, набор статусов и принцип взаимодействия для всех реализаций; | ||
+ | |||
+ | Версионное API стокен-авторизацией, возможность подключения функции обратного вызова; | ||
+ | |||
+ | Ограниченное количество попыток отправки и получение статусов во внешних сервисах интеграции; | ||
+ | |||
+ | Распределенная обработка поступивших запросов по авторизованным клиентам сервиса; | ||
+ | |||
+ | Логирование входящих запросов и ответов с привязкой к Hashstamp (идентификатор запроса/ответа). | ||
+ | |||
+ | === Репозиторий === | ||
+ | |||
+ | https://gl.abonent.plus/services/postservice | ||
+ | |||
+ | === Стек технологий === | ||
+ | |||
+ | .NET 5.0 ASP.NET Core PostgreSql | ||
+ | |||
+ | === Адрес доступа === | ||
+ | |||
+ | Тестовый контур: | ||
+ | |||
+ | https://post-service.abonentplus.ru/ (http://192.168.51.12:51001/) | ||
+ | |||
+ | Релизный контур: | ||
+ | |||
+ | https://post-service.abonent.plus/ (http://192.168.77.3:4444/) | ||
+ | |||
+ | === База данных === | ||
+ | |||
+ | ==== Подключение ==== | ||
+ | |||
+ | Настройки подключения к БД задаются в «appsettings.json» | ||
+ | |||
+ | [[File:PostService_001.png|718x178px]] | ||
+ | |||
+ | ==== Генерация контекстных классов ==== | ||
+ | |||
+ | Обновление с помощью батника, отредактировать по необходимости UpdateDbClasses.bat | ||
+ | |||
+ | [[File:PostService_002.png|264x563px]] | ||
+ | |||
+ | ==== Реляционная модель ==== | ||
+ | [[File:PostService_003.png|655x607px]] | ||
+ | |||
+ | ==== Перечисляемые типы ==== | ||
+ | |||
+ | Все перечисляемые типы, относящиеся к контексту базы данных находятся в Classes/Database/PostServiceContextEnum | ||
+ | |||
+ | === Описание API === | ||
+ | |||
+ | ==== Авторизация ==== | ||
+ | |||
+ | ''/api/GetToken'' Получить токен авторизации | ||
+ | |||
+ | <blockquote>по необходимости передавать дополнительные настройки externalSettings и идентификатор externalId</blockquote> | ||
+ | |||
+ | ==== Сервис ==== | ||
+ | |||
+ | Методы доступны только при использовании авторизационного токена (заголовок Authorization в значение Bearer ****, пример в TestPostService/ApiServiceTest/AuthTest): | ||
+ | |||
+ | ''/api/Service/SendPost'' Передать запрос на отправку | ||
+ | |||
+ | <blockquote>пример использования в TestPostService/ApiServiceTest/RussianPostSendTest</blockquote> | ||
+ | |||
+ | ''/api/Service/CheckPost'' Получить статус отправки | ||
+ | |||
+ | <blockquote>пример использования в TestPostService/ApiServiceTest/RussianPostCheckTest</blockquote> | ||
+ | |||
+ | ''/api/Service/GetPostResult'' Получить результат отправки | ||
+ | |||
+ | <blockquote>пример использования в TestPostService/ApiServiceTest/RussianPostGetResultTest</blockquote> | ||
+ | |||
+ | ==== Общее ==== | ||
+ | |||
+ | Методы проверки работоспособности: | ||
+ | |||
+ | ''/api/Common/ApiTest'' Тестовый метод проверки API | ||
+ | |||
+ | <blockquote>в случае успеха метод возвращает в теле ответа один символ "+"</blockquote> | ||
+ | |||
+ | ''/api/Common/AuthTest'' Тестовый метод проверки авторизации | ||
+ | |||
+ | <blockquote>в случае успеха метод возвращает в теле ответа один символ "+"</blockquote> | ||
+ | |||
+ | ''/api/Common/RussianPostChannelTest'' Тестовый метод проверки канала связи с Почтой РФ | ||
+ | |||
+ | <blockquote>в случае успеха метод возвращает в теле ответа один символ "+"</blockquote> | ||
+ | |||
+ | ==== Быстрый старт ==== | ||
+ | |||
+ | Добавить пользователя в таблицу БД api_user, получить токен с помощью API-метода getToken, реализовать или использовать методы сервиса отправки на примере отправки InnerEmail. | ||
+ | |||
+ | Для добавления своего типа отправки необходимо: | ||
+ | |||
+ | * добавить реализацию и тип отправки в Classes/Database/PostServiceContextEnum.cs | ||
+ | * добавить имеющуюся интеграционную документацию в Documents/%Название_отправки%/ | ||
+ | * добавить вспомогательные классы в Exchange/%Название_отправки%/, минимальный набор показан в InnerEmail реализации. | ||
+ | * добавить хелпер отправки Helpers/%Название_отправки%/ подготовить методы SendRequest, NewProcessing, WaitProcessing, FailProcessing, DoneProcessing | ||
+ | * добавить фоновую обработку в Background/%Название_отправки%Service.cs | ||
+ | * добавить модульные тесты по возможности в TestPostService/Exchange/%Название_отправки%Test.cs слой 1 по Message и Sender.SendMessage, слой 2 по PostDocument и Helper.SendRequest |
Версия 18:16, 7 сентября 2021
Сервис отправки корреспонденции (PostService)
Ключевые особенности
Отправка e-mail, sms, заказных писем и другие реализации;
Единая структура данных, набор статусов и принцип взаимодействия для всех реализаций;
Версионное API стокен-авторизацией, возможность подключения функции обратного вызова;
Ограниченное количество попыток отправки и получение статусов во внешних сервисах интеграции;
Распределенная обработка поступивших запросов по авторизованным клиентам сервиса;
Логирование входящих запросов и ответов с привязкой к Hashstamp (идентификатор запроса/ответа).
Репозиторий
https://gl.abonent.plus/services/postservice
Стек технологий
.NET 5.0 ASP.NET Core PostgreSql
Адрес доступа
Тестовый контур:
https://post-service.abonentplus.ru/ (http://192.168.51.12:51001/)
Релизный контур:
https://post-service.abonent.plus/ (http://192.168.77.3:4444/)
База данных
Подключение
Настройки подключения к БД задаются в «appsettings.json»
Генерация контекстных классов
Обновление с помощью батника, отредактировать по необходимости UpdateDbClasses.bat
Реляционная модель
Перечисляемые типы
Все перечисляемые типы, относящиеся к контексту базы данных находятся в Classes/Database/PostServiceContextEnum
Описание API
Авторизация
/api/GetToken Получить токен авторизации
по необходимости передавать дополнительные настройки externalSettings и идентификатор externalId
Сервис
Методы доступны только при использовании авторизационного токена (заголовок Authorization в значение Bearer ****, пример в TestPostService/ApiServiceTest/AuthTest):
/api/Service/SendPost Передать запрос на отправку
пример использования в TestPostService/ApiServiceTest/RussianPostSendTest
/api/Service/CheckPost Получить статус отправки
пример использования в TestPostService/ApiServiceTest/RussianPostCheckTest
/api/Service/GetPostResult Получить результат отправки
пример использования в TestPostService/ApiServiceTest/RussianPostGetResultTest
Общее
Методы проверки работоспособности:
/api/Common/ApiTest Тестовый метод проверки API
в случае успеха метод возвращает в теле ответа один символ "+"
/api/Common/AuthTest Тестовый метод проверки авторизации
в случае успеха метод возвращает в теле ответа один символ "+"
/api/Common/RussianPostChannelTest Тестовый метод проверки канала связи с Почтой РФ
в случае успеха метод возвращает в теле ответа один символ "+"
Быстрый старт
Добавить пользователя в таблицу БД api_user, получить токен с помощью API-метода getToken, реализовать или использовать методы сервиса отправки на примере отправки InnerEmail.
Для добавления своего типа отправки необходимо:
- добавить реализацию и тип отправки в Classes/Database/PostServiceContextEnum.cs
- добавить имеющуюся интеграционную документацию в Documents/%Название_отправки%/
- добавить вспомогательные классы в Exchange/%Название_отправки%/, минимальный набор показан в InnerEmail реализации.
- добавить хелпер отправки Helpers/%Название_отправки%/ подготовить методы SendRequest, NewProcessing, WaitProcessing, FailProcessing, DoneProcessing
- добавить фоновую обработку в Background/%Название_отправки%Service.cs
- добавить модульные тесты по возможности в TestPostService/Exchange/%Название_отправки%Test.cs слой 1 по Message и Sender.SendMessage, слой 2 по PostDocument и Helper.SendRequest