Инструкция по подключению
Общая информация
Enterprise link – это безопасный информационный доступ к транзакциям через XML шлюз для стыковки с ERP, бухгалтерскими или учетными системами.
Активизация Enterprise Link
Для подключения услуги Enterprise Link, в настройках iRietumu выберите счёт и нажмите «Активизировать».
Введите одноразовый пароль с брелока и нажмите «Подтвердить».
Скопируйте идентификатор доступа, который в дальнейшем используйте в своем приложении в качестве электронного пропуска (параметр ticket).
Вызов сервиса
Формат запроса
Пример кода:
curl -d "function=<Function name>&rid=<Rietumu ID>&ticket=<Ticket>&refno=<Reference number>&language=<Language code>" https://<домен>/elink/process.xml -u "<Username>:<Password>"
<?php
/**
* Process Enterprise Link request
*
* make sure that curl.cainfo in php.ini is targeted to last CA certificates
* last extracted CA can be downloaded here: http://curl.haxx.se/ca/cacert.pem
*
* @param {Array} $arguments ASSOC array with arguments for request
* @param {String} $username
* @param {String} $password
* @return {String} XML content
*/
function process_enterprise_link( $arguments, $username, $password ) {
$ch = curl_init();
curl_setopt_array( $ch, array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 120,
CURLOPT_URL => "https://<домен>/elink/process.xml",
CURLOPT_POSTFIELDS => http_build_query($arguments),
CURLOPT_HTTPAUTH => CURLAUTH_BASIC,
CURLOPT_USERPWD => $username . ":" . $password
) );
$result = curl_exec( $ch );
curl_close( $ch );
return $result;
}
?>
/**
* Enterprise Link class for Java 7
*
* MAVEN dependencies:
* org.apache.httpcomponents : httpclient : 4.4
*/
public class EnterpriseLink {
private static final String ELINK_HOST = "https://<домен>";
private static final String PROCESS_PATH = "/elink/process.xml";
private HttpHost host;
private String username;
private String password;
private HttpClient httpClient;
private HttpClientContext httpClientContext;
public EnterpriseLink(String username, String password) {
this.host = HttpHost.create(ELINK_HOST);
this.username = username;
this.password = password;
this.httpClient = HttpClientBuilder.create().build();
this.httpClientContext = createHttpClientContext();
}
private HttpClientContext createHttpClientContext() {
HttpClientContext httpClientContext = HttpClientContext.create();
AuthCache authCache = new BasicAuthCache();
authCache.put(host, new BasicScheme());
httpClientContext.setAuthCache(authCache);
CredentialsProvider credentialsProvider = new BasicCredentialsProvider();
credentialsProvider.setCredentials(new AuthScope(host,
AuthScope.ANY_REALM, AuthScope.ANY_SCHEME),
new UsernamePasswordCredentials(username, password));
httpClientContext.setCredentialsProvider(credentialsProvider);
return httpClientContext;
}
public String process(List<NameValuePair> params) throws ParseException,
IOException {
HttpPost httpPost = new HttpPost(PROCESS_PATH);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse response = httpClient.execute(host, httpPost,
httpClientContext);
return EntityUtils.toString(response.getEntity(), Consts.UTF_8);
}
}
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request::Common;
# Process Enterprise Link request
#
# @param {Array} $arguments array with arguments for request
# @param {String} $username
# @param {String} $password
# @return {String} XML content
sub process_enterprise_link {
my ( $arguments, $username, $password ) = @_;
my $ua = LWP::UserAgent->new;
my $req = POST 'https://<домен>/elink/process.xml', $arguments;
$req->authorization_basic( $username, $password );
my $response = $ua->request( $req );
return $response->content();
}
/**
* Enterprise Link class for .NET 4.5
*
* Required references:
* System.Net.Http
*/
public class EnterpriseLink
{
private static readonly String ELINK_URL = "https://<домен>/elink/process.xml";
private HttpClient client;
public EnterpriseLink(String username, String password)
{
this.client = new HttpClient();
var authString = Convert.ToBase64String(Encoding.ASCII.GetBytes(username + ":" + password));
var authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Basic", authString);
client.DefaultRequestHeaders.Authorization = authorization;
}
public async Task<String> Process(Dictionary<string, string> values)
{
var response = await client.PostAsync(ELINK_URL, new FormUrlEncodedContent(values));
var responseString = await response.Content.ReadAsStringAsync();
return responseString;
}
}
Адрес: https://<домен>/elink/process.xml
Авторизация: HTTP Basic
- пользователь – используйте Rietumu ID
- пароль – пароль генерируется автоматически из первых восьми символов первого полученного электронного пропуска. Пароль можно изменить в системе iRietumu в разделе Настройки -> Enterprise Link
Метод: Post
Формат ответа
Структура ответа:
<response>
<code>0</code>
<error/>
<!-- набор тэгов в зависимости от функции -->
</response>
Формат: XML
Код ответа | Описание |
---|---|
0 | всё ОК |
1 | системный сбой |
2 | нет транзакций за указанный период по указанной валюте |
4 | ошибка в параметрах |
6 | неверный электронный пропуск (параметр ticket) |
Таймаут транзакции = 2 минуты
Функция «Список транзакций»
Функция используется для получения всех транзакций по счёту.
Параметры запроса
Пример кода:
curl -d "function=Transactions&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&ccy=EUR&dateFrom=2012-01-26&dateTill=2012-02-28&language=RU&trnID=~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#" https://<домен>/elink/process.xml -u "123456:qwerty"
<?php
$response = process_enterprise_link( array(
"function" => "Transactions",
"rid" => "123456",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"ccy" => "EUR",
"dateFrom" => "2012-01-26",
"dateTill" => "2012-02-28",
"language" => "RU",
"trnID" => "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#"
), "123456", "qwerty" );
?>
EnterpriseLink enterpriseLink = new EnterpriseLink("123456", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "Transactions"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("ccy", "EUR"));
params.add(new BasicNameValuePair("dateFrom", "2012-01-26"));
params.add(new BasicNameValuePair("dateTill", "2012-02-28"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("trnID", "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#"));
String result = enterpriseLink.process(params);
$response = process_enterprise_link( [
function => "Transactions",
rid => "123456",
ticket => "JGFIGDMG5965SF44557548958345975934",
ccy => "EUR",
dateFrom => "2012-01-26",
dateTill => "2012-02-28",
language => "RU",
trnID => "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#"
], '123456', 'qwerty' );
var enterpriseLink = new EnterpriseLink("123456", "qwerty");
var result = await enterpriseLink.Process(new Dictionary<string, string>
{
{ "function", "Transactions" },
{ "rid", "123456" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "ccy", "EUR" },
{ "dateFrom", "2012-01-26" },
{ "dateTill", "2012-02-28" },
{ "language", "RU" },
{ "trnID", "~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#" }
}
);
Параметр | Описание |
---|---|
function* | Transactions |
rid* | Rietumu ID |
ticket* | электронный пропуск, выданный при подключении счета к сервису в iRietumu, например ticket=JGFIGDMG5965SF44557548958345975934 |
ccy | код валюты по стандарту ISO-4217, например ccy=EUR |
dateFrom* | дата начала периода выписки в формате ISO yyyy-MM-dd, например dateFrom=2012-01-26 |
dateTill* | дата конца периода выписки в формате ISO yyyy-MM-dd, например dateTill=2012-02-28 |
language* | язык выписки (примечаний и т. д.), например language=RU. Возможные варианты: RU, EN, LV |
trnID* | ID транзакции, с которой начинается следующая страница (используется для постраничной выписки). Для первой страницы параметр не указывается |
* обязательные параметры
Описание полей XML
Пример ответа:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<code>0</code>
<error/>
<transactions>
<transaction>
<uniqueID>EQ-28022013-HEAD-@@SC-7</uniqueID>
<trnID>~bb~Y#~bbEUR~12387.76#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512150262#~t2~2524554564#~td~01112012#</trnID>
<date>2012-11-01</date>
<refno>AAA2004</refno>
<docno/>
<benname/>
<benacc/>
<benid/>
<benbank/>
<benbankswift/>
<details/>
<narrative>Interest repay - fund.</narrative>
<amount>-9.82</amount>
<currency>EUR</currency>
<saldo>12387.76</saldo>
<trtype>YP</trtype>
<trntype>EQ_440</trntype>
<trndesc>Interest repay - fund.</trndesc>
<tcf>Y</tcf>
</transaction>
<transaction>
<uniqueID>EQ-28022013-HEAD-@@SC-8</uniqueID>
<trnID>~bb~Y#~bbEUR~12183.39#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030097#~of~seq_no#~t1~2512436843#~t2~2525131368#~td~12112012#</trnID>
<date>2012-11-12</date>
<refno>I5IC11129901953</refno>
<docno/>
<benname/>
<benacc/>
<benid/>
<benbank/>
<benbankswift/>
<details>6.97 LVL -- 10.00 EUR (0.697500000)</details>
<narrative>6.97 LVL -- 10.00 EUR (0.697500000)</narrative>
<amount>10.0</amount>
<currency>EUR</currency>
<saldo>12183.39</saldo>
<trtype>CONV</trtype>
<trntype>EQ_543</trntype>
<trndesc>Currency Exchange</trndesc>
<tcf>Y</tcf>
</transaction>
<transaction>
<uniqueID>EQ-28022013-HEAD-@@SC-9</uniqueID>
<trnID>~bb~Y#~bbLVL~2638.06#~cbd~03122012#~ctd~03122012#~fbd~31122000#~hd~05032005#~ls~2513030256#~of~seq_no#~t1~2512299603#~t2~2524860183#~td~07112012#</trnID>
<date>2012-11-07</date>
<refno>IVIC11079900909</refno>
<docno>11-1</docno>
<benname>ben name</benname>
<benacc>LV70RIKO000000000000</benacc>
<benid>111111-22222</benid>
<benbank>AS DNB BANKA</benbank>
<benbankswift>RIKOLV2X</benbankswift>
<details>konta papild.</details>
<narrative>59: /ID/ 111111-22222, ben name, Rez LV, Nr.LV70RIKO000000000000; 57: AS DNB BANKA, RIKOLV2X; 70: konta papild.;</narrative>
<amount>-100.0</amount>
<currency>LVL</currency>
<saldo>2638.06</saldo>
<trtype>OO</trtype>
<trntype>EQ_471</trntype>
<trndesc>External payment</trndesc>
<tcf>Y</tcf>
</transaction>
</transactions>
<more>false</more>
</response>
Поле XML | Описание |
---|---|
<trnID> | уникальный идентификатор транзакции |
<date> | дата транзакции |
<refno> | референтный номер транзакции |
<docno> | номер документа, заданный клиентом |
<benname> | название получателя |
<benacc> | номер счета получателя |
<benid> | идентификатор получателя |
<benbank> | банк получателя |
<benbankswift> | SWIFT код банка получателя |
<details> | назначение транзакции |
<amount> | сумма транзакции. Знак «-» означает, что транзакция дебетовая |
<currency> | валюта транзакции |
<saldo> | остаток после транзакции |
<trtype> | код операции |
<trndesc> | расшифровка кода операции |
<more> | признак наличия транзакций. Параметр true означает, что получены не все транзакции, и необходимо запросить продолжение (с указанием идентификатора последней полученной транзакции <trnID>) |
Функция «Детали исходящего платежа»
Функция используется для получения информации по конкретной исходящей транзакции.
Параметры запроса
Пример кода:
curl -d "function=OutgoingPaymentDetails&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&refno=IVID05249900342&language=RU" https://<домен>/elink/process.xml -u "123456:qwerty"
<?php
$response = process_enterprise_link( array(
"function" => "OutgoingPaymentDetails",
"rid" => "123456",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"refno" => "IVID05249900342",
"language" => "RU"
), "123456", "qwerty" );
?>
EnterpriseLink enterpriseLink = new EnterpriseLink("123456", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "OutgoingPaymentDetails"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("refno", "IVID05249900342"));
params.add(new BasicNameValuePair("language", "RU"));
String result = enterpriseLink.process(params);
$response = process_enterprise_link( [
function => "OutgoingPaymentDetails",
rid => "123456",
ticket => "JGFIGDMG5965SF44557548958345975934",
refno => "IVID05249900342",
language => "RU"
], '123456', 'qwerty' );
var enterpriseLink = new EnterpriseLink("123456", "qwerty");
var result = await enterpriseLink.Process(new Dictionary<string, string>
{
{ "function", "OutgoingPaymentDetails" },
{ "rid", "123456" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "refno", "IVID05249900342" },
{ "language", "RU" }
}
);
Параметр | Описание |
---|---|
function* | OutgoingPaymentDetails |
rid* | Rietumu ID |
ticket* | электронный пропуск, выданный при подключении счета к сервису в iRietumu, например ticket=JGFIGDMG5965SF44557548958345975934 |
refno* | референтный номер транзакции |
language | язык выписки (примечаний и т. д.), например language=RU. Возможные варианты: RU, EN, LV |
* обязательные параметры
Описание полей XML
Пример ответа:
<?xml version="1.0" encoding="UTF-8"?>
<response>
<code>0</code>
<error/>
<details>
<ref_no>IVID05249900342</ref_no>
<state_id>2</state_id>
<doc_number/>
<reg_date>2013-05-24T00:00:00</reg_date>
<reg_datetime>2013-05-24T16:04:58</reg_datetime>
<urgency>Standart</urgency>
<urgency_code>1</urgency_code>
<rem_acc>LV10RTMB0000000000000</rem_acc>
<rem_name>ABC Ltd.</rem_name>
<rem_addr>RĪGA LATVIA</rem_addr>
<rem_regno>123456789-0</rem_regno>
<rem_country>LV</rem_country>
<rem_res>RES</rem_res>
<pmnt_amount>1000.0</pmnt_amount>
<pmnt_ccy>AUD</pmnt_ccy>
<pmnt_value/>
<cor_name/>
<cor_addr/>
<cor_addr1/>
<cor_bic/>
<cor_eltype/>
<cor_el/>
<cor_country/>
<bbank_acc/>
<bbank_name>UBS AG</bbank_name>
<bbank_addr>ZURICH</bbank_addr>
<bbank_addr1>45, BAHNHOFSTRASSE</bbank_addr1>
<bbank_bic>UBSWCHZH80A</bbank_bic>
<bbank_country>CH</bbank_country>
<bbank_eltype/>
<bbank_el/>
<ben_name>ABC HOLDINGS LIMITED</ben_name>
<ben_addr>UNIT 88,19THFLOOR BASE</ben_addr>
<ben_addr1>200 DEF ROAD,Germany</ben_addr1>
<ben_acciban>CH5000111235FJ1234567</ben_acciban>
<ben_country>SZ</ben_country>
<ben_regno>123</ben_regno>
<ben_res>NONRES</ben_res>
<charge_type>BEN</charge_type>
<pmnt_details>test ALL FIELDS</pmnt_details>
<add_info>Поле Information to the Bank.</add_info>
<rietumuid>000000</rietumuid>
<charge_amnt>0.0</charge_amnt>
<charge_ccy/>
<amk_code>213</amk_code>
<tran_type_desc>Payment to another bank</tran_type_desc>
<lng>EN</lng>
<oper_type>Debit</oper_type>
<state_id_desc>Rejected</state_id_desc>
<cor_bank_acc/>
<oper_type_v>D</oper_type_v>
<pmnt_amount_text>one thousand, 00</pmnt_amount_text>
</details>
</response>
Поле XML | Описание |
---|---|
<ref_no> | референтный номер транзакции |
<state_id> | статус транзакции * |
<doc_number> | номер документа, заданный клиентом |
<reg_date> | дата регистрации транзакции |
<reg_datetime> | дата и время регистрации |
<urgency> | срочность транзакции ** |
<urgency_code> | код срочности ** |
<rem_acc> | счёт отправителя |
<rem_name> | наименование отправителя |
<rem_addr> | адрес отправителя |
<rem_regno> | регистрационный номер отправителя |
<rem_country> | страна отправителя |
<rem_res> | является ли отправитель резидентом Латвии. Возможные варианты: RES, NONRES |
<pmnt_amount> | сумма транзакции |
<pmnt_ccy> | валюта транзакции |
<pmnt_value> | дата валютации |
<cor_name> | наименование банка-корреспондента |
<cor_addr> | адрес банка-корреспондента |
<cor_addr1> | |
<cor_bic> | SWIFT код банка-корреспондента |
<cor_eltype> | тип национального кода |
<cor_el> | национальный код |
<cor_country> | страна банка-корреспондента |
<bbank_acc> | счёт банка получателя |
<bbank_name> | наименование банка получателя |
<bbank_addr> | адрес банка получателя |
<bbank_addr1> | |
<bbank_bic> | SWIFT код банка получателя |
<bbank_country> | страна банка получателя |
<bbank_eltype> | тип национального кода |
<bbank_el> | национальный код |
<ben_name> | наименование получателя |
<ben_acciban> | счёт получателя в формате IBAN |
<ben_addr> | адрес получателя |
<ben_addr1> | |
<ben_country> | страна получателя |
<ben_regno> | регистрационный номер получателя |
<ben_res> | является ли получатель резидентом Латвии. Возможные варианты: RES, NONRES |
<charge_type> | тип комиссии *** |
<pmnt_details> | детали распоряжения |
<add_info> | дополнительная информация |
<rietumuid> | Rietumu ID |
<charge_amnt> | сумма комиссии. Значение не возвращается |
<charge_ccy> | валюта комиссии. Значение не возвращается |
<amk_code> | АМК код транзакции. Используется, когда резидент Латвии переводит нерезиденту более 5 000 EUR. |
<tran_type_desc> | описание типа транзакции |
<lng> | язык, который передавался в запросе |
<oper_type> | тип операции. Возможные варианты (язык зависит от |
<state_id_desc> | код статуса транзакции * |
<cor_bank_acc> | счет банка получателя в банке-корреспонденте |
<oper_type_v> | код типа операции. Возможные варианты: D, C |
<pmnt_amount_text> | текстовая расшифровка суммы транзакции |
* - возможные варианты статуса транзакций
Описание статуса | Код |
---|---|
В Банке | 0, 3, 4 |
На подпись | 20 |
Отложено | 1 |
Отменено | 2, 7 |
Отправлено | 5, 6 |
** - возможные варианты срочности
Описание срочности | Код |
---|---|
Стандартный | 1 |
Экспресс | 2 |
Экономичный | 3 |
*** - возможные варианты типов комиссии
Тип комиссии | Описание |
---|---|
OUR | оплачивает отправитель |
BEN | оплачивает получатель |
SHA | оплачивается раздельно |