Основа Falcon SpaceРуководстваОсновные компонентыВозможностиКоммуникация пользователейДизайн, стилизация, юзабилитиЛендингиУниверсальный APIИнтеграцииКаталогиНавигацияДокументыДополнительные компонентыПродвижение, SEOСистемные моментыСистемное администрированиеHOWTOТаблицыФормыПоля формыЗагрузка файлов, картинокHOWTO SQLHOWTO JSHOWTO ВерсткаРешение проблемСоветы по реализации
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
Интеграция с платежным шлюзом LifePay
Платежный шлюз LifePay позволяет организовать прием средст на сайте.
Сайт шлюза - https://life-pay.ru
Выставление счета: https://apidoc.life-pay.ru/bill/index/#create
Оповещение о результате: https://apidoc.life-pay.ru/notification/index#
Выставление счета
Узнаем в ЛК lifepay свой апи-ключ, сохраняем в настройках
Создаем вызов внешнего АПИ (например, в форме в SaveItem в SELECT 2).
Исходящий апи-запрос (request)
CREATE PROCEDURE [dbo].[api_lifepay_bill_request]
@parameters ExtendedDictionaryParameter READONLY, -- (Key, Value2)
@username nvarchar(32) -- current site user
AS
BEGIN
declare @finID int=isnull(try_cast((SELECT Value2 from @parameters where [Key]='finID') as int),0) –документ, с которого берем параметры
-- SELECT 1 Msg, Result, Url (outer request url)
select '' Msg, 1 Result, 'https://api.life-pay.ru/v1/bill' Url
declare @prm nvarchar(max)=
(select '{"apikey":"'+dbo.as_setting('lifepay_key','')+'",'+
' "login":"'+dbo.as_setting('lifepay_login','')+'",'+
' "amount":'+cast(f.amount as nvarchar)+','+
' "description":"Оплата за заказ '+cast(o.id as nvarchar)+' от '+convert(nvarchar,o.created,104)+'",'+
' "customer_phone":"'+u.phone+'",'+ –телефон в формате 7хххххххххх
' "customer_email":"'+u.email+'"}'
from srv_finances f
join srv_orders o on o.id=f.orderID
join as_users u on u.id in(f.userFromID,f.userToID)
where f.id=@finID)
–заносим в протокол
insert as_trace(header,[text],code,created) values('lifepay request','prm='+@prm,'lifepay',getdate())
-- SELECT 2 PARAMETERS - request parameters
select 'data' name, @prm value, 'json' [type]
END
API-ответ (response)
CREATE PROCEDURE [dbo].[api_lifepay_bill_response]
@response nvarchar(max),
@parameters ExtendedDictionaryParameter READONLY, --(Key, Value2 - same as in request)
@username nvarchar(32)
AS
BEGIN
declare @finID int=isnull(try_cast((SELECT Value2 from @parameters where [Key]='finID') as int),0)
declare @code int=-1, @msg nvarchar(max)='not json'
if isJson(@response)=1 select @code=isnull(try_cast(json_value(@response,'$.code')as int),-2), @msg=isnull(json_value(@response,'$.message'),'')
–протоколируем
insert as_trace(header,[text],code,created) values('lifepay response',left('code='+cast(@code as nvarchar)+',message='+@msg+',other='+@response,2000),'lifepay',getdate())
–если ошибок нет - запоминаем внешний ИД счета
if @code=0 update srv_finances set lifepay_num=json_value(@response,'$.data.number') where id=@finID
if @code>0 update srv_finances set statusID=(select id from srv_financeStatuses where code='error') where id=@finID
-- SELECT 1
select '' Msg, 1 Result, @response Response
-- SELECT 2 Outer actions
END
Оповещение о проведении операции
Cоздаем обработку входящего вызова АПИ
в настройках ЛК lifepay в закладке интеграции прописываем путь к методу
CREATE PROCEDURE [dbo].[api_lifepay-status_lifepay-status]
@parameters ExtendedDictionaryParameter READONLY,
@username nvarchar(256)
as
begin
declare @s nvarchar(max)=isnull((select value2 from @parameters where [key]='data'),'')
–протоколируем
insert as_trace(header,[text],code,created) values('lifepay webhook',left(@s,2000),'lifepay',getdate())
if isJson(@s)=0 begin
select 'Ошибка: запрос не в JSON' Msg, 0 Result, 405 errorCode
return
end
declare @num nvarchar(50)=json_value(@s,'$.number')
declare @status nvarchar(50)=json_value(@s,'$.status')
declare @finID int=isnull((select id from srv_finances where lifepay_num=@num),0)
if @finID=0 begin
select 'Ошибка: не найден первичный документ' Msg, 0 Result, 404 errorCode
return
end
-- SELECT 1 - API result metadata
select '' Msg, 1 Result, 0 errorCode
--select 2
update srv_finances set statusID=(select id from srv_financeStatuses where code=iif(@status='success','pay','error')), statusDate=getdate() where id=@finID
declare @orderID int=(select orderID from srv_finances where id=@finID)
exec dbo.srv_orderChangeStatus @orderID=@orderID, @status='', @comment='', @username='admin' –обработка смены статуса документа
-- SELECT 2 - API data with free col names
end
Falcon Space - функциональная веб-платформа разработки на узком стеке MS SQL/Bootstrap. Вводная по Falcon Space
Google поиск по нашей документации
Нужна бесплатная консультация?
Планируете делать веб-проект?
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта