Здесь мы рассмотрим интеграцию с сервисом За честный бизнес (ЗЧБ) - https://zachestnyibiznesapi.ru
Сервис возвращает большое количество информации по нужному контрагенту.
Аккаунт может быть трех степеней, в зависимости от степени методы могут выдавать дополнительную информацию.
Каждый запрос имеет стоимость, по сравнению с ДАДАТА запросы дорогие, при общей схожести лучше информацию максимально тянуть из Дадаты, и только то чего там нет - из ЗЧБ.
Доступна информация:
Пример вызова
https://zachestnyibiznesapi.ru/paid/data/bankrupt-message-list?id=***&api_key=token
вместо id чаще всего ИНН, но иногда ОГРН, надо смотреть описание метода.
Токен получаем после регистрации на сайте сервиса.
формат на выходе - JSON, некоторые методы поддерживают XML.
Пример процедуры запроса к внешнему API (исходящий запрос API):
CREATE PROCEDURE [dbo].[api_zchb_get_request]
@parameters ExtendedDictionaryParameter READONLY, -- (Key, Value2)
@username nvarchar(32) -- current site user
AS
BEGIN
declare @token nvarchar(max)=isnull((select value from as_settings where code='zchb_token'),'')
declare @param nvarchar(max)=isnull((SELECT Value2 FROM @parameters WHERE [Key]='itemID'),'')
declare @method nvarchar(max)='fssp-list'
--обновляем
insert as_trace(header,username,code,created) values('api_zchb_get,caller='+@caller+',method='+@method+',param='+@param,@username,'api_zchb_get',getdate())
--select 1
select '' Msg, 1 Result, @method RequestParameterForResponse,
'https://zachestnyibiznesapi.ru/paid/data/'+@method+'?id='+@param+'&'+'api_key='+@token Url
END
Использовать API можно следующим образом (в таблице указываем название метода API - он будет вызываться до загрузки таблицы и поставлять в него данные)
CREATE PROCEDURE [dbo].[crud_zchb_fssp_getItems]
@filters ExtendedDictionaryParameter READONLY,
@sort sql_variant,
@direction nvarchar(8),
@page int,
@pageSize int,
@username nvarchar(32)
AS
BEGIN
declare @res nvarchar(max)=isnull((select Value2 from @filters where [Key]='zchb_get'),'')
select isnull(json_value(f.value,'$."Должник"'),'') name,
isnull(json_value(f.value,'$."Адрес"'),'') desc_name,
isnull(json_value(f.value,'$."НомИспПроизв"'),'') deloNum,
isnull('От '+convert(nvarchar,dbo.srv_ddt2date(json_value(f.value,'$."ДатаВозбуждения"')+'000'),104),'') desc_deloNum,
isnull(json_value(f.value,'$."Страховые взносы, включая пени"'),'') treb,
isnull('Исп.документ '+json_value(f.value,'$."ДатаИспДок"'),'')+
isnull(' от '+convert(nvarchar,dbo.srv_ddt2date(json_value(f.value,'$."ДатаИспДок"')+'000'),104),'') desc_treb,
isnull(dbo.as_num(try_cast(json_value(f.value,'$."СуммаДолга"')as int),2)+' руб.','') dolg,
isnull('Остаток долга '+dbo.as_num(try_cast(json_value(f.value,'$."ОстатокДолга"')as int),2)+' руб.','') desc_dolg,
isnull(json_value(f.value,'$."ОтделСудебПрист"'),'') pristav,
isnull(json_value(f.value,'$."АдрОтделаСудебПрист"'),'') desc_pristav
into #res
from openjson(@res,'$.body.docs') f
--select 1
select * from #res
order by name
OFFSET @PageSize * (@Page - 1) ROWS FETCH NEXT @PageSize ROWS ONLY
--select 2
select count(*) from #res
drop table #res
END