Получение данных о контрагенте - интеграция ЗаЧестныйБизнес

Здесь мы рассмотрим интеграцию с сервисом За честный бизнес (ЗЧБ) - 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


Страница-источник на сайте falconspace.ru