Получить курс валют от Банк России. Интеграция с ЦБ РФ API

Получение данных о котировках валют по API с сайта www.cbr.ru (ЦБ РФ).

Как реализовать

Вызов внешнего действия APIRequest при сохрании формы: 

CREATE PROCEDURE [dbo].[fm_watch_valuta_saveItem]
   @username nvarchar(256), 
   @itemID int, 
   @fieldvaluta nvarchar(256) = ''
AS
BEGIN
	-- 1 SELECT (Result, Msg)
	select 1 Result, ' ' Msg
    
    select 'apirequest' type, 'valuta' code, 'valuta' p1_name, @fieldvaluta p1_value
END

API вызов (тип GET, XML): 

CREATE PROCEDURE [dbo].[api_valuta_request]
	@parameters ExtendedDictionaryParameter READONLY,  -- входящие параметры для внутренней обработки (используйте Key, Value2)
	@username nvarchar(32)  -- текущий пользователь.
AS
BEGIN	
	declare @maxDate nvarchar(10) = convert(nvarchar(10), getdate(), 103)
    declare @minDate nvarchar(10) = convert(nvarchar(10), dateadd(day, -7, getdate()), 103)
    
	declare @valuta nvarchar(128) = (select top 1 Value2 from @parameters where [Key]='valuta')
	-- SELECT 1  Msg, Result, Url (адрес, куда будет идти запрос)
	select '' Msg, 1 Result, 'http://www.cbr.ru/scripts/XML_dynamic.asp?'+
    	'date_req1='+@minDate+'&date_req2='+@maxDate+'&VAL_NM_RQ=' + @valuta  Url  -- R01235   14/03/2001

	-- SELECT 2 PARAMETERS - параметры, которые будут передаваться во внешний источник
END

Обработка в JS (обратите внимание, что здесь работаем не с JSON а с XML через jQuery): 

<script>
  $(function(){
	as.formcallbacks["watch_valuta_saveItem"] = function(data, params){
		var ss = JSON.parse(data.additionalData)[0].items;
   	    var resp = $.grep(ss, function(v) {
    		return v.key == "response" 
		});
      	console.log(resp)
      	if(resp.length>0 && resp[0].value2) {
        	var el = resp[0].value2;          
          	console.log("valuta", el); 
          	var s = "";
          	$("record", el).each(function(){
              /*
              <Record Date="14.03.2001" Id="R01235">
<Nominal>1</Nominal>
<Value>28,6500</Value>
</Record>
*/	
            	s+='<div>' + $(this).attr("Date") + " - <span class='badge badge-light'>" + $("Value", this).html() + "</span></div>";	
            });
          	if(s){
            	as.sys.bootstrapAlert(
                  '<h3>'+$('.as-form-item[data-code=valuta] select option:selected').text() + ' к рублю</h3>' + s, 
                  {type: "info", delay: 1000000, icon: ' '});
              	return;
            }           	
        }  
        as.sys.bootstrapAlert("Что-то пошло не так", {type: "danger"});
	}
  });
</script>

Другие модули

Получение данных юридического лица по БИК

Чистка данных в ФИО через dadata. Подключение к Dadata API. Коррекция ввода данных человека

Как упростить ввод адреса на сайте. Подсказки dadata по адресу

Проверка орфографии текста через API Яндекс Spell

Поиск компании через Dadata Подсказки. Получение информации о компании через API

Dadata. Вывод товаров и услуг (МКТУ)

Как отправить письмо с шаблоном HTML

Рерайт на сайте, подбор синонимов через API. Получение текста по API

Последние обновления

SQL-инструмент для создания личных кабинетов на сайте

Суть подхода и история создания Falcon Space

Платформа Falcon Space

Это снижение стоимости владения

за счет меньшего количества людей для поддержки

Это быстрое внесение изменений

по ходу эксплуатации программы

Это современный интерфейс

полная адаптация под мобильные устройства