NAV
cURL PHP Java Perl C#

Инструкция по подключению

Общая информация

Enterprise link – это безопасный информационный доступ к транзакциям через XML шлюз для стыковки с ERP, бухгалтерскими или учетными системами.

Для подключения услуги 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

Метод: 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>[email protected]@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>[email protected]@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>[email protected]@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 оплачивается раздельно