Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Уведомление от ТБанка по операциям с расчетным счетом
На вашем расчетном счете происходит различные операции - приходы, расходы. Удобно получать в систему уведомление о событии операции по счету.
Например, вы можете отмечать факт прихода по такому-то платежу.
Важно. Здесь мы никак не влияем на состояние расчетного счета в банке, а только получаем информацию о движениях по нему.
Как это настроить для Тинькоф Бизнес?
Документация - https://developer.tinkoff.ru/docs/intro/webhook
Необходимо написать на почту openapi@tinkoff.ru (пишите с любой почты, которая привязана к компании или добавьте персонального менеджера в копию).
- Какое событие подключаете (статус платежа, новая операция по счету),
- Адреса метода API на вашей системе, например site.ru/api/action/mymethod
- ИНН компании.
После одобрения заявки при новой операции будет вызываться ваш метод.
Необходимо в /asapi реализовать метод входящего API (например, с кодом mymethod).
Обработка может выглядеть примерно так:
CREATE PROCEDURE [dbo].[api_tinkoff_mymethod]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(256)
as
begin
declare @ip nvarchar(max) = (select top 1 value2 from @parameters where lower([key])= 'userip')
declare @resp nvarchar(max) = isnull((select top 1 value2 from @parameters where lower([key])= 'inputstream'), '---')
exec [dbo].as_trace_warn
@code='tinkoff_tran',
@header = 'tinkoff_tran',
@itemID = 0,
@text = @resp,
@username = ''
execute as_print @ip
execute as_print @resp
-- Уведомления банка приходят с IP 212.233.80.7 и 91.218.132.2
if(@ip not in ('212.233.80.7' ,'91.218.132.2')) begin
select '' Msg, 1 Result, 0 errorCode
select 'BadIP' s1
return
end
declare @inn nvarchar(max) = JSON_value(@resp, '$.counterParty.inn')
declare @name nvarchar(max) = JSON_value(@resp, '$.counterParty.name')
declare @sum float = cast(JSON_value(@resp, '$.rubleAmount') as float)
declare @financeID int
declare @ctrID int = (select id from fin_contragents where inn = @inn)
if(@ctrID is not null) begin
set @financeID = (select id from fin_finances
where fromID=@ctrID and statusID in (1,2,6) and abs([sum]-@sum)<1 )
if(@financeID is not null) begin
exec [dbo].fin_setPayed @financeID = @financeID
end
end
-- SELECT 1 - вывод метаданных о результате операции метода API
select 'OK' Msg, 1 Result, 0 errorCode
-- SELECT 2 - вывод самих данных в API (в случае проблем проверьте что этот запрос приходит непустой)
select 'OK' s1
-- SELECT 3 Outer actions - отправка уведомлений
if(@financeID is not null) begin
select 'notification' type,
'Новый приход отмечен: '+isnull(cast(@sum as nvarchar), '0')+' руб. от '+ isnull(@name, '---') text ,
'someuser' [to], 'common' typeCode, '' url, '' additional
from fin_finances where id = @financeID
end
end
Здесь мы извлекаем из входящего JSON ИНН, название контрагента и сумму, находим в нашей базе незакрытую финансовую транзакцию этого контрагента с такой суммой и помечаем ее как проведенную. Также делаем уведомление некоему пользователю в системе.
Google поиск по нашей документации
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта