Документация сервиса отправки корреспонденции (PostService) — различия между версиями

Материал из doc.abonent.plus
Перейти к: навигация, поиск
м (Защищена страница «Документация сервиса отправки корреспонденции (PostService)» ([Редактирование=Разрешено только администраторам] (бессро…)
Строка 1: Строка 1:
'''PostService'''
+
== Сервис отправки корреспонденции (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»

PostService 001.png

Генерация контекстных классов

Обновление с помощью батника, отредактировать по необходимости UpdateDbClasses.bat

PostService 002.png

Реляционная модель

655x607px

Перечисляемые типы

Все перечисляемые типы, относящиеся к контексту базы данных находятся в 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