Izmaiņu vēsture
Dokumenta versija | Izmaiņu apraksts | Izmaiņas datums |
---|---|---|
1.2 | Ir labots funkcijas "Nosūtīt dokumentu" lauka Details70 apraksts | 2021-04-12 |
1.1 | Ir labots funkcijas "Transakciju saraksts" XML lauku uniqueID un trnID apraksts | 2020-07-17 |
1.0 | Sākotnējā dokumentācijas publicēšana | 2017-01-13 |
Pieslēgšanas instrukcija
Vispārējā informācija
„Enterprise Link PRO” sniedz piekļuvi informācijai par veiktajiem darījumiem, kā arī iespēju nodot Bankai rīkojumus turpmākai izpildei.
Pakalpojuma aktivizēšana
Lai pieslēgtu pakalpojumu, iRietumu iestatījumos izvēlieties kontu un uzklikšķiniet uz „Aktivēt”.
Izvēlieties pakalpojuma veidu „Maksājumu uzdevumu pārlūkošana un pārsūtīšana (PRO)”! Ierakstiet piekariņa ģenerēto vienreiz izmantojamo paroli un uzklikšķiniet uz „Apstiprināt”.
Nokopējiet piekļuves identificētāju, kuru turpmāk izmantosiet savā pielikumā kā elektronisko caurlaidi (parametrs “ticket”).
Rīkojuma izveides loģika
Pilns rīkojuma izveides cikls sastāv no trim soļiem. Pirmajā solī tiek izmantota funkcija „Nosūtīt dokumentu”. Funkcija reģistrē rīkojumu, piešķir ienākošā dokumenta references numuru un sniedz tā pārbaudes rezultātus. Nepieciešamības gadījumā, piemēram, pēc kļūdu labošanas dokumentu var nosūtīt no jauna.
Izpildot otro soli, jāpieprasa bankā reģistrētais dokuments, norādot references numuru, ko veic ar funkcijas „Saņemt dokumentu parakstīšanai” palīdzību. Vienā no laukiem Jūs saņemsiet atpakaļ rīkojuma XML dokumentu.
Izpildot trešo soli, atpakaļ saņemtais XML dokuments jāparaksta ar elektronisko XML parakstu, pamatojoties uz sertifikātu pēc standarta XMLDSig, un jānosūta parakstītais dokuments bankai, lietojot funkciju „Nosūtīt parakstīto dokumentu”.
Kā izsaukt servisu
Pieprasījuma formāts
Piemērs kods:
curl -d "function=<Function name>&ticket=<Ticket>&refno=<Reference number>&language=<Language code>" -E ./<Filename>.pem:<Password> https://<domain>/elinkpro/Process
<?php
/**
* Process Enterprise Link Pro 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} $cert_path path to certificate file
* @param {String} $cert_passwd certificate password
* @return {String} response content
*/
function process_enterprise_link_pro( $arguments, $cert_path, $cert_passwd ) {
$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://<domain>/elinkpro/Process",
CURLOPT_POSTFIELDS => http_build_query($arguments),
CURLOPT_SSLCERT => $cert_path,
CURLOPT_SSLCERTPASSWD => $cert_passwd
) );
$result = curl_exec( $ch );
curl_close( $ch );
return $result;
}
?>
/**
* Enterprise Link Pro class for Java 7
*
* MAVEN dependencies:
* org.apache.httpcomponents : httpclient : 4.4
*/
public class EnterpriseLinkPro {
private static final String ELINK_PRO_HOST = "https://<domain>";
private static final String PROCESS_PATH = "/elinkpro/Process";
private static final String KEYSTORE_TYPE = "PKCS12";
private HttpHost host;
private HttpClient httpClient;
private String filePath;
private String password;
public EnterpriseLinkPro(String filePath, String password) throws GeneralSecurityException, IOException {
this.filePath = filePath;
this.password = password;
this.host = HttpHost.create(ELINK_PRO_HOST);
this.httpClient = HttpClientBuilder.create()
.setSSLSocketFactory(createSSLConnectionSocketFactory())
.build();
}
private SSLConnectionSocketFactory createSSLConnectionSocketFactory() throws GeneralSecurityException, IOException {
KeyStore keyStore = KeyStore.getInstance(KEYSTORE_TYPE);
keyStore.load(new FileInputStream(this.filePath), this.password.toCharArray());
SSLContext sslContext = SSLContextBuilder.create()
.loadKeyMaterial(keyStore, this.password.toCharArray())
.build();
return new SSLConnectionSocketFactory(sslContext);
}
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);
return EntityUtils.toString(response.getEntity(), Consts.UTF_8);
}
}
#!/usr/bin/perl
use LWP::UserAgent;
use HTTP::Request::Common;
# Process Enterprise Link Pro request
#
# @param {Array} $arguments array with arguments for request
# @param {String} $cert_path path to certificate file
# @param {String} $cert_passwd certificate password
# @return {String} response content
sub process_enterprise_link_pro {
my ( $arguments, $cert_path, $cert_passwd ) = @_;
my $ua = LWP::UserAgent->new( ssl_opts => {
SSL_use_cert => 1,
SSL_cert_file => $cert_path,
SSL_passwd_cb => sub { $cert_passwd }
} );
my $req = POST 'https://<domain>/elinkpro/Process', $arguments;
my $response = $ua->request( $req );
return $response->content();
}
/**
* Enterprise Link Pro class for .NET 4.5
*
* Required references:
* System.Net.Http
* System.Net.Http.WebRequest
*/
public class EnterpriseLinkPro
{
private static readonly String ELINK_PRO_URL = "https://<domain>/elinkpro/Process";
private HttpClient client;
public EnterpriseLinkPro(String certPath, String password)
{
var certHandler = new WebRequestHandler();
certHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
certHandler.UseDefaultCredentials = false;
certHandler.ClientCertificates.Add(new X509Certificate2(certPath, password));
this.client = new HttpClient(certHandler);
}
public async Task<String> Process(Dictionary<string, string> values)
{
var response = await client.PostAsync(ELINK_PRO_URL, new FormUrlEncodedContent(values));
var responseString = await response.Content.ReadAsStringAsync();
return responseString;
}
}
Adrese: https://<domain>/elinkpro/Process
Metode: Post
Autorizācija: jāizmanto sertifikāts no Rietumu ID, uz kuru ir noregulēts pieslēgums.
Pieprasījuma parametri: parametri atšķiras atkarībā no funkcijas. Sīkāks funkciju apraksts ir sniegts turpmāk.
Atbildes formāts informācijas pieprasījuma gadījumā
Struktūra:
<response>
<code>atbildes kods*</code>
<error/>
<!-- tagu komplekts atkarībā no funkcijas -->
</response>
XML formāts tiek izmantots, saņemot veikto darījumu sarakstu un sīkāku informāciju par tiem, lietojot attiecīgi funkcijas „Transakciju saraksts” un „Izejošā maksājuma detaļas".
* – atpakaļ nododamais funkcijas kods
Atbildes kods | Apraksts |
---|---|
0 | Funkcija veiksmīgi izpildīta |
1 | Sistēmas kļūda |
2 | Minētajā periodā ar minēto valūtu transakciju nav |
4 | Kļūda parametros |
6 | Kļūdaina elektroniskā caurlaide (parametrs “ticket”) |
Atbildes formāts rīkojumiem
Struktūra:
{
"code": "atbildes kods*",
"error": "kļūdas teksts",
"signatureRequired": [ "CER" ],
"refNo": "references numurs",
"error_code": "kļūdas kods",
"error_message": "kļūdas teksts",
"execute_message": "izpildes teksts",
"error_field": "lauka, uz kuru attiecas kļūda, nosaukums",
"error_level": "kļūdas būtiskuma kods**"
}
JSON formāts tiek izmantots, noformējot maksājumu uzdevumus.
* – atpakaļ nododamais funkcijas kods
Atbildes kods | Apraksts |
---|---|
0 | Funkcija veiksmīgi izpildīta |
1 | Sistēmas kļūda |
2 | Dati nav atrasti |
4 | Kļūda parametros |
5 | Nav sesijas, vai kļūdainie sesijas parametri |
6 | Kļūdaina elektroniskā caurlaide (parametrs “ticket”) |
** – kļūdas būtiskuma rādītājs
Atbildes kods | Apraksts |
---|---|
0 | kļūdu nav |
2 | nebūtiska kļūda. Rīkojums nevar būt izpildīts uzreiz (nav naudas u.tml.), bet būs apstrādāts vēlāk |
4 | būtiska kļūda. Rīkojums netiks izpildīts |
Funkcija „Transakciju saraksts”
Funkcija tiek izmantota, lai saņemtu visas konta transakcijas.
Pieprasījuma parametri
Piemērs kods:
curl -d "function=Transactions&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#" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "Transactions",
"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#"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "Transactions"));
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 = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "Transactions",
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#"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "Transactions" },
{ "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#" }
}
);
Parametrs | Apraksts |
---|---|
function* | Transactions |
ticket* | Elektroniskā caurlaide, kas ir izsniegta, pieslēdzot kontu servisam “iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934 |
ccy | Valūtas kods atbilstoši standartam ISO-4217, piemēram, ccy=EUR |
dateFrom* | Izraksta perioda sākuma datums ISO yyyy-MM-dd formātā, piemēram, dateFrom=2012-01-26 |
dateTill* | Izraksta perioda beigu datums ISO yyyy-MM-dd formātā, piemēram, dateTill=2012-02-28 |
language | Izraksta (piezīmju u. tml.) valoda, piemēram, language=RU. Pieejamie varianti: RU, EN, LV |
trnID | Transakcijas ID, no kuras sākas nākamā lappuse (izmanto izrakstam pa lappusēm). Pirmajai lappusei parametrs netiek norādīts. |
* obligātie parametri
XML lauku apraksts
Atbildes piemērs:
<?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 lauks | Apraksts |
---|---|
<uniqueID> | Unikālais transakcijas identificētājs |
<trnID> | Transakcijas ID, kas tiek izmantots pieprasījumā lai iegūtu nākamo lapu |
<date> | Transakcijas datums |
<refno> | Transakcijas atsauces numurs |
<docno> | Klienta iestatītais dokumenta numurs |
<benname> | Saņēmēja nosaukums |
<benacc> | Saņēmēja konta numurs |
<benid> | Saņēmēja identificētājs |
<benbank> | Saņēmēja banka |
<benbankswift> | Saņēmēja bankas SWIFT kods |
<details> | Transakcijas nosaukums |
<amount> | Transakcijas summa. “-” norāda, ka tā ir debeta transakcija. |
<currency> | Transakcijas valūta |
<saldo> | Atlikums pēc transakcijas |
<trtype> | Darījuma kods |
<trndesc> | Darījuma koda atšifrējums |
<more> | Transakciju pastāvēšanas pazīme. Parametrs “true” liecina, ka nav saņemtas visas transakcijas un ir jāpieprasa turpinājums (norādot pēdējās saņemtās transakcijas identificētāju <trnID>). |
Funkcija „Izejošā maksājuma detaļas”
Funkcija tiek izmantota, lai saņemtu informāciju par noteiktu izejošo transakciju.
Pieprasījuma parametri
Piemērs kods:
curl -d "function=OutgoingPaymentDetails&ticket=JGFIGDMG5965SF44557548958345975934&refno=IVID05249900342&language=RU" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "OutgoingPaymentDetails",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"refno" => "IVID05249900342",
"language" => "RU"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "OutgoingPaymentDetails"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("refno", "IVID05249900342"));
params.add(new BasicNameValuePair("language", "RU"));
String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "OutgoingPaymentDetails",
ticket => "JGFIGDMG5965SF44557548958345975934",
refno => "IVID05249900342",
language => "RU"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "OutgoingPaymentDetails" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "refno", "IVID05249900342" },
{ "language", "RU" }
}
);
Parametrs | Apraksts |
---|---|
function* | OutgoingPaymentDetails |
ticket* | Elektroniskā caurlaide, kas ir izsniegta, pieslēdzot kontu servisam “iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934. |
refno* | Transakcijas atsauces numurs |
language | Izraksta (piezīmju u. tml.) valoda, piemēram, language=RU. Pieejamie varianti: RU, EN, LV |
* obligātie parametri
XML lauku apraksts
Atbildes piemērs:
<?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 lauks | Apraksts |
---|---|
<ref_no> | Transakcijas atsauces numurs |
<state_id> | Transakcijas statuss * |
<doc_number> | Klienta iestatītais dokumenta numurs |
<reg_date> | Transakcijas reģistrācijas datums |
<reg_datetime> | Reģistrācijas datums un laiks |
<urgency> | Transakcijas steidzamība ** |
<urgency_code> | Steidzamības kods ** |
<rem_acc> | Nosūtītāja konts |
<rem_name> | Nosūtītāja nosaukums |
<rem_addr> | Nosūtītāja adrese |
<rem_regno> | Nosūtītāja reģistrācijas numurs |
<rem_country> | Nosūtītāja valsts |
<rem_res> | Vai nosūtītājs ir Latvijas rezidents? Pieejamie varianti: RES, NONRES |
<pmnt_amount> | Transakcijas summa |
<pmnt_ccy> | Transakcijas valūta |
<pmnt_value> | Valutēšanas datums |
<cor_name> | Korespondentbankas nosaukums |
<cor_addr> | Korespondentbankas adrese |
<cor_addr1> | |
<cor_bic> | Korespondentbankas SWIFT kods |
<cor_eltype> | Nacionālā koda tips |
<cor_el> | Nacionālais kods |
<cor_country> | Korespondentbankas valsts |
<bbank_acc> | Saņēmēja bankas konts |
<bbank_name> | Saņēmēja bankas nosaukums |
<bbank_addr> | Saņēmēja bankas adrese |
<bbank_addr1> | |
<bbank_bic> | Saņēmēja bankas SWIFT kods |
<bbank_country> | Saņēmēja bankas valsts |
<bbank_eltype> | Nacionālā koda tips |
<bbank_el> | Nacionālais kods |
<ben_name> | Saņēmēja nosaukums |
<ben_acciban> | Saņēmēja konts IBAN formātā |
<ben_addr> | Saņēmēja adrese |
<ben_addr1> | |
<ben_country> | Saņēmēja valsts |
<ben_regno> | Saņēmēja reģistrācijas numurs |
<ben_res> | Vai saņēmējs ir Latvijas rezidents? Pieejamie varianti: RES, NONRES |
<charge_type> | Komisijas tips *** |
<pmnt_details> | Rīkojuma detaļas |
<add_info> | Papildinformācija |
<rietumuid> | Rietumu ID |
<charge_amnt> | Komisijas summa. Rādītājs netiek nosūtīts atpakaļ. |
<charge_ccy> | Komisijas valūta. Rādītājs netiek nosūtīts atpakaļ. |
<amk_code> | Transakcijas AMK kods. Tiek izmantots, ja Latvijas rezidents pārskaita nerezidentam vairāk par EUR 5000. |
<tran_type_desc> | Transakcijas tipa apraksts |
<lng> | Pieprasījumā minētā valoda |
<oper_type> | Darījuma tips. Iespējamie varianti (valoda ir atkarīga no |
<state_id_desc> | Transakcijas statusa kods * |
<cor_bank_acc> | Saņēmēja bankas konts korespondentbankā |
<oper_type_v> | Darījuma tipa kods. Pieejamie varianti: D, C |
<pmnt_amount_text> | Transakcijas summas tekstuālais atšifrējums |
* - iespējamie transakciju statusa varianti
Statusa apraksts | Kods |
---|---|
Bankā | 0, 3, 4 |
Parakstīšanai | 20 |
Atlikts | 1 |
Atcelts | 2, 7 |
Nosūtīts | 5, 6 |
** - iespējamie steidzamības varianti
Steidzamības apraksts | Kods |
---|---|
Standarta | 1 |
Steidzams (Express) | 2 |
Ekonomiskais | 3 |
*** - iespējamie komisijas tipu varianti
Komisijas tips | Apraksts |
---|---|
OUR | Maksā maksātājs |
BEN | Maksā saņēmējs |
SHA | Tiek maksāts dalīti |
Funkcija „Nosūtīt dokumentu”
Funkcija reģistrē maksājuma uzdevuma dokumentu bankā un nosūta atpakaļ informāciju par kļūdām, ja tādas tiek konstatētas.
Pieprasījuma parametri
Piemērs kods:
curl -d "function=PostDocument&ticket=JGFIGDMG5965SF44557548958345975934&language=RU&doc=<XML content>" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "PostDocument",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"language" => "RU",
"doc" => "<XML content>"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "PostDocument"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("doc", "<XML content>"));
String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "PostDocument",
ticket => "JGFIGDMG5965SF44557548958345975934",
language => "RU",
doc => "<XML content>"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "PostDocument" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "language", "RU" },
{ "doc", "<XML content>" }
}
);
Parametrs | Apraksts |
---|---|
function* | PostDocument |
ticket* | elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934. |
language | valoda, kurā sniedzami ziņojumi par kļūdām. Pieejamie varianti: RU, EN, LV |
doc* | dokumenta teksts XML formātā |
* obligātie parametri
Maksājuma uzdevuma XML formāts
XML dokumenta paraugs:
<RBdocument type="payment">
<DocNo>1-3</DocNo>
<SendCopyeMail/>
<SendCopyiRietumu>N</SendCopyiRietumu>
<User>000000</User>
<System></System>
<AddInfo72>additional info</AddInfo72>
<AmkCode>0</AmkCode>
<Amount>100.00</Amount>
<BenBank>
<BenBankAcc>A111111</BenBankAcc>
<BenBankAddr1>AXION SWISS BANK SA</BenBankAddr1>
<BenBankAddr2>LUGANO</BenBankAddr2>
<BenBankAddr3>1, VIA BOSSI</BenBankAddr3>
<BenBankBic>UNCECH22XXX</BenBankBic>
<BenBankCountry>CH</BenBankCountry>
<BenBankEl/>
<BenBankElType/>
</BenBank>
<Beneficiary>
<BenAcc>CH0000000000000000000</BenAcc>
<BenAddr1>TEST COMPANY LIMITED</BenAddr1>
<BenAddr2>address line 1</BenAddr2>
<BenAddr3>address line 2</BenAddr3>
<BenCountry>CH</BenCountry>
<BenID>1234567</BenID>
</Beneficiary>
<Ccy>EUR</Ccy>
<Charge>OUR</Charge>
<Details70>payment details</Details70>
<Intermediary>
<IntBankAcc/>
<IntBankAddr1>ASIA PACIFIC FINANCIAL SERVICES CHI</IntBankAddr1>
<IntBankAddr2>NA LIMITED</IntBankAddr2>
<IntBankAddr3>LANZHOU GANSU</IntBankAddr3>
<IntBankBic>APFVCNB1XXX</IntBankBic>
<IntBankCountry>CN</IntBankCountry>
<IntBankEl/>
<IntBankElType/>
</Intermediary>
<Rate>0.0</Rate>
<Sender>
<SenderAcc>LV10RTMB0000000000000</SenderAcc>
<SenderCountry/>
</Sender>
<Urgency>1</Urgency>
</RBdocument>
Sekmīga JSON atbilde:
{
"code": 0,
"error": "",
"signatureRequired": [ "CER", "DGP", "OTP" ],
"refNo": "HVEE07099900001",
"error_code": "IERR_OK",
"error_message": "The order has been executed (IERR_OK)",
"execute_message": "",
"error_field": "",
"error_level": 0,
"fee_ccy": "",
"fee_amount": 0.0,
"errors": [
{
"error_code": "IERR_OK",
"error_message": "The order has been executed (IERR_OK)",
"execute_message": "",
"error_field": "",
"error_level": 0
}
]
}
Sekmīga JSON atbilde ar maksājuma izpildes kļūdām:
{
"code": 0,
"error": "",
"signatureRequired": [ "CER", "DGP", "OTP" ],
"refNo": "HVEE07099900002",
"error_code": "IPM_BENNOT2",
"error_message": "Beneficiary name not found\/ not indicated (Beneficiary name not found)",
"execute_message": "",
"error_field": "BenAddr1",
"error_level": 4,
"fee_ccy": "",
"fee_amount": 0.0,
"errors": [
{
"error_code": "IPM_BENNOT2",
"error_message": "Beneficiary name not found\/ not indicated (Beneficiary name not found)",
"execute_message": "",
"error_field": "BenAddr1",
"error_level": 4
},
{
"error_code": "IERR_FVALUE",
"error_message": "Postponed payment. The payment instruction will be postponed until selected execution date. (Future Value)",
"execute_message": "",
"error_field": "",
"error_level": 2
}
]
}
Lauks | Apraksts | Garums | Pieļaujamie apzīmējumi | Obligāti |
---|---|---|---|---|
<DocNo> | dokumenta numurs | 15 | charset_All* | N |
<System> | sistēma, atstāt tukšu | Y | ||
<User> | lietotāja identifikators - Rietumu ID | 6 | 0-9 | Y |
<Amount> | maksājuma summa | 15.2 | Y | |
<Ccy> | valūta | 3 | ISO 4217 3-burtu kods |
Y |
<Sender> | ||||
<SenderAcc> | nosūtītāja konts | 21 | IBAN. Vienmēr konts Rietumu Bankā | Y |
</Sender> | ||||
<Beneficiary> | ||||
<BenAcc> | saņēmēja konts | 34 | charset_ACCOUNT** | Y |
<BenAddr1> | saņēmēja nosaukums | 34 | charset_All* | Y |
<BenAddr2> | saņēmēja adrese (rinda 1) | 34 | charset_All* | N |
<BenAddr3> | saņēmēja adrese (rinda 2) | 34 | charset_All* | N |
<BenCountry> | saņēmēja valsts | 2 | ISO 3166-1 alpha-2 code | Y |
<BenID> | saņēmēja reģistrācijas numurs | 34 | charset_All* | Y, ja saņēmēja valsts = LV |
</Beneficiary> | ||||
<BenBank> | ||||
<BenBankAcc> | saņēmēja bankas konts korespondentbankā (RKZ – payment processing centre) | 34 | charset_ACCOUNT** | N |
<BenBankAddr1> | saņēmēja bankas nosaukums | 34 | charset_All* | Y |
<BenBankAddr2> | saņēmēja bankas adrese Nr. 1 | 34 | charset_All* | N |
<BenBankAddr3> | saņēmēja bankas adrese Nr. 2 | 34 | charset_All* | N |
<BenBankBic> | saņēmēja bankas SWIFT | 11 | A-Za-z0-9 | N |
<BenBankCountry> | saņēmēja bankas valsts | 2 | ISO 3166-1 alpha-2 code | Y |
<BenBankEl> | nacionālais klīringa kods | 30 | charset_All* | N |
<BenBankElType> | klīringa koda tips | 2 | ELTYPE*** | Y, ja aizpildīts <BenBankEl> |
</BenBank> | ||||
<Intermediary> | ||||
<IntBankAcc> | konts korespondentbankā (RKZ – payment processing centre) | 34 | charset_ACCOUNT** | N |
<IntBankAddr1> | korespondentbankas nosaukums | 34 | charset_All* | N |
<IntBankAddr2> | korespondentbankas adrese Nr. 1 | 34 | charset_All* | N |
<IntBankAddr3> | korespondentbankas adrese Nr. 2 | 34 | charset_All* | N |
<IntBankBic> | korespondentbankas SWIFT | 11 | A-Za-z0-9 | N |
<IntBankCountry> | korespondentbankas valsts | 2 | ISO 3166-1 alpha-2 code | Y, ja aizpildīts <IntBankAddr1> |
<IntBankEl> | nacionālais klīringa kods | 30 | charset_All* | N |
<IntBankElType> | klīringa koda tips | 2 | ELTYPE*** | Y, ja aizpildīts <IntBankEl> |
</Intermediary> | ||||
<Details70> | piezīmes | 140 | charset_All* | Y |
<AddInfo72> | papildinformācija | 200 | charset_All* | N |
<Rate> | fiksēta vērtība „0.0” | 1.1 | Y | |
<SendCopyeMail> | e-pasta adrese SWIFT kopijas saņemšanai. Maksas pakalpojums | 60 | A-Za-z0-9а-яА-Я!#$%’*+-/=?^_`{|}~.@ | N |
<SendCopyiRietumu> | SWIFT kopijas saņemšana sistēmā „iRietumu”. Maksas pakalpojums | 1 | Y/N | N |
<Urgency> | steidzamība | 1 | 1 - Parasts maksājums (Normal) 2 - Steidzams maksājums (Urgent) 3 - Ekonomiskais (Econom) |
Y |
<DesiredDate> | vēlamais izpildes datums | 10 | YYYY-MM-DD | N |
<Charge> | komisijas maksājumu tips | 3 | BEN - par saņēmēja līdzekļiem OUR - par nosūtītāja līdzekļiem SHA - sadalīts maksājums DEF - automātisks maksājums (vērtību izvēlēsies banka, ņemot vērā maksājuma parametrus) |
Y |
<AmkCode> | ārējā maksājuma kods pēc Latvijas Bankas rokasgrāmatas | 3 | 0-9 | Y, ja tas ir maksājums, ko LV rezidents veic LV nerezidentam, par summu, kas ir lielāka par 10 000 EUR |
* – A-Za-z0-9?:().,’+{};!?&-_[]`/“<space>а-яА-Я <latviešu alfabēta simboli>
** – A-Za-z0-9?:().,’+{};!?&-_[]`/”<space>
*** – divzīmju kods, vērtības ir sniegtas tabulā
Kods | Apraksts |
---|---|
RU | Bank Identification Code (БИК/BIC) |
AT | Austrian Bankleitzahl |
AU | Australian Bank State Branch (BSB) |
BL | German Bankleitzahl |
CC | Canadian Payments Association Payment Routing |
CH | CHIPS Universal Identifier |
CP | USA CHIPS Participant Identifier |
ES | Spanish Domestic Interbanking Code |
FW | USA Fedwire Routing Number |
HK | Bank Code of Hong Kong |
IE | Irish National Clearing Code (NSC) |
IT | Italian Domestic Identification Code |
MF | MFO (Other) |
NZ | New Zealand National Clearing Code |
PT | Portuguese National Clearing Code |
SC | UK Domestic Sort Code |
SW | Swiss Clearing Code (BC or SIC) |
Funkcija „Saņemt dokumentu parakstīšanai”
Funkcija nodod atpakaļ agrāk reģistrēto dokumentu tā turpmākai parakstīšanai.
Pieprasījuma parametri
Piemērs kods:
curl -d "function=GetDocumentForSign&ticket=JGFIGDMG5965SF44557548958345975934&language=RU&refNo=HVEE07099900001" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "GetDocumentForSign",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"language" => "RU",
"refNo" => "HVEE07099900001"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "GetDocumentForSign"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("refNo", "HVEE07099900001"));
String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "GetDocumentForSign",
ticket => "JGFIGDMG5965SF44557548958345975934",
language => "RU",
refNo => "HVEE07099900001"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "GetDocumentForSign" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "language", "RU" },
{ "refNo", "HVEE07099900001" }
}
);
Parametrs | Apraksts |
---|---|
function* | GetDocumentForSign |
ticket* | elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934. |
language | valoda, kurā sniedzami ziņojumi par kļūdām. Pieejamie varianti: RU, EN, LV |
refNo* | dokumenta references numurs |
* obligātie parametri
Atbildes piemērs:
{
"code": 0,
"error": "",
"signatureRequired": [ "CER" ],
"expectedSignatures": [],
"existingSignatures": [],
"doc": "XML dokumenta teksts"
}
Funkcija „Nosūtīt parakstīto dokumentu”
Piemērs kods:
# W3C specification for XMLDSig is available here: http://www.w3.org/TR/xmldsig-core/
# OpenSSL documentation is available here: https://www.openssl.org/docs/apps/openssl.html
#
# Manually signing XML document using console tools is counterproductive so please check other solutions.
<?php
/**
* Sign XML content using XMLDSig enveloped method for PHP 5.3
*
* Requires classes XMLSecurityKey and XMLSecurityDSig
* from https://github.com/formapro/xmlseclib
*
* @param string $XMLContent
* @param string $certificatePath
* @param string $certificatePassword
*
* @return string signed XML
* @throws Exception
*
* Usage:
* $signedContent = XMLDSig_SignEnveloped($contentToSign, './cert.pem', 'qwerty');
*/
function XMLDSig_SignEnveloped($XMLContent, $certificatePath, $certificatePassword) {
if (!function_exists('openssl_pkey_get_private'))
throw new Exception('Openssl PHP extension is required in ');
$certificateContent = file_get_contents($certificatePath);
$privateKey = openssl_pkey_get_private($certificateContent, $certificatePassword);
if (!$privateKey)
throw new Exception("Unable to load private key in ");
$keyDetails = openssl_pkey_get_details($privateKey);
$document = new DOMDocument();
$document->loadXML($XMLContent);
$objXMLSecurityKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type' => 'private'));
$objXMLSecurityKey->loadKey($privateKey);
$objXMLSecDSig = new XMLSecurityDSig("");
$objXMLSecDSig->setCanonicalMethod(XMLSecurityDSig::EXC_C14N_COMMENTS);
$objXMLSecDSig->addReference($document, XMLSecurityDSig::SHA1, array('http://www.w3.org/2000/09/xmldsig#enveloped-signature'), array('force_uri' => true));
$objXMLSecDSig->sign($objXMLSecurityKey, $document->documentElement);
$objXMLSecDSig->add509Cert($certificateContent);
$RSAKeyValueTpl = "<KeyValue><RSAKeyValue><Modulus>%s</Modulus><Exponent>%s</Exponent></RSAKeyValue></KeyValue>";
$modulus = base64_encode($keyDetails['rsa']['n']);
$exponent = base64_encode($keyDetails['rsa']['e']);
$RSAKeyValue = sprintf($RSAKeyValueTpl, $modulus, $exponent);
return str_replace("</KeyInfo>", $RSAKeyValue . "</KeyInfo>", $document->saveXML());
}
?>
/**
* XMLDSig class for Java 7
*
* Required:
* 1. Bouncy Castle 1.38 or newer
* from https://www.bouncycastle.org/java.html
*
* 2. Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files
* from http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
*
* Usage:
* XMLDSig xmlDSig = new XMLDSig("./cert.p12", "qwerty");
* String signedContent = xmlDSig.signEnveloped(contentToSign);
*/
public class XMLDSig {
private KeyStore keyStore;
private String alias;
private XMLSignature signature;
private DocumentBuilderFactory documentBuilderFactory;
private TransformerFactory transformerFactory;
private String filePath;
private String password;
public XMLDSig(String filePath, String password) throws GeneralSecurityException, IOException {
this.filePath = filePath;
this.password = password;
Security.addProvider(new BouncyCastleProvider());
keyStore = loadKeystore();
alias = getAlias();
signature = createSignature();
documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
transformerFactory = TransformerFactory.newInstance();
}
private KeyStore loadKeystore() throws GeneralSecurityException, IOException {
KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");
keyStore.load(new FileInputStream(filePath), password.toCharArray());
return keyStore;
}
private String getAlias() throws GeneralSecurityException {
String alias = null;
Enumeration<String> enumeration = keyStore.aliases();
while(enumeration.hasMoreElements()) {
alias = (String)enumeration.nextElement();
break;
}
if (alias.isEmpty()) {
throw new RuntimeException("Key store does not contain entry with alias");
}
return alias;
}
private XMLSignature createSignature() throws GeneralSecurityException {
XMLSignatureFactory signatureFactory = XMLSignatureFactory.getInstance("DOM");
return signatureFactory.newXMLSignature(createSignedInfo(signatureFactory), createKeyInfo(signatureFactory));
}
private SignedInfo createSignedInfo(XMLSignatureFactory signatureFactory) throws GeneralSecurityException {
CanonicalizationMethod canonicalizationMethod = signatureFactory.newCanonicalizationMethod(CanonicalizationMethod.INCLUSIVE_WITH_COMMENTS,
(C14NMethodParameterSpec) null);
SignatureMethod signatureMethod = signatureFactory.newSignatureMethod(SignatureMethod.RSA_SHA1, null);
DigestMethod digestMethod = signatureFactory.newDigestMethod(DigestMethod.SHA1, null);
Transform transform = signatureFactory.newTransform(Transform.ENVELOPED, (TransformParameterSpec) null);
Reference reference = signatureFactory.newReference("", digestMethod, Collections.singletonList(transform), null, null);
return signatureFactory.newSignedInfo(canonicalizationMethod, signatureMethod, Collections.singletonList(reference));
}
private KeyInfo createKeyInfo(XMLSignatureFactory signatureFactory) throws GeneralSecurityException {
KeyInfoFactory keyInfoFactory = signatureFactory.getKeyInfoFactory();
ArrayList<XMLStructure> keys = new ArrayList<XMLStructure>();
X509Certificate certificate = getX509Certificate();
keys.add(keyInfoFactory.newKeyValue(certificate.getPublicKey()));
X509Data certificateInfo = keyInfoFactory.newX509Data(Collections.singletonList(certificate));
keys.add(certificateInfo);
return keyInfoFactory.newKeyInfo(keys);
}
private X509Certificate getX509Certificate() throws GeneralSecurityException {
return (X509Certificate) keyStore.getCertificate(alias);
}
private PrivateKey getX509PrivateKey() throws GeneralSecurityException {
return (PrivateKey) keyStore.getKey(alias, password.toCharArray());
}
public String signEnveloped(String documentSource) throws Exception {
DocumentBuilder newDocumentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = newDocumentBuilder.parse(new InputSource(new StringReader(documentSource)));
DOMSignContext signContext = new DOMSignContext(getX509PrivateKey(), document.getDocumentElement());
signature.sign(signContext);
StringWriter writer = new StringWriter();
Transformer transformer = transformerFactory.newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(writer));
return writer.toString();
}
}
#!/usr/bin/perl
use XML::XPath;
use MIME::Base64;
use Crypt::OpenSSL::X509;
use Crypt::OpenSSL::RSA;
use File::Slurp;
use Digest::SHA1 qw(sha1);
use XML::CanonicalizeXML;
# Sign XML content using XMLDSig enveloped method for Perl 5.20
#
# Certificate in PEM format without encryption can be extracted from P12 certificate
# openssl pkcs12 -in ATTID1TR.p12 -out certkey.pem -clcerts -nodes
#
# @param {String} $XMLContent XML content to be signed
# @param {String} $certificatePath path to certificate file in PEM format without encryption
# @return {String} XML content
#
# Usage:
# my $signedContent = XMLDSig_SignEnveloped($contentToSign, "./certkey.pem");
sub XMLDSig_SignEnveloped {
my ( $XMLContent, $certificatePath ) = @_;
my $xml;
my $parser = XML::XPath->new( xml => $XMLContent );
my $nodeset = $parser->find('/');
foreach my $node ($nodeset->get_nodelist) {
$xml = XML::XPath::XMLParser::as_string( $node );
last;
}
$signed = $XMLContent;
my $certContent = read_file($certificatePath);
my $rsaKey = Crypt::OpenSSL::RSA->new_private_key( $certContent );
$rsaKey->use_pkcs1_padding();
my $bigNum = ( $rsaKey->get_key_parameters() )[1];
my $bin = $bigNum->to_bin();
my $exp = encode_base64( $bin, '' );
$bigNum = ( $rsaKey->get_key_parameters() )[0];
$bin = $bigNum->to_bin();
my $mod = encode_base64( $bin, '' );
my $keyContent = "<KeyValue><RSAKeyValue><Modulus>$mod</Modulus><Exponent>$exp</Exponent></RSAKeyValue></KeyValue>";
my $x509 = Crypt::OpenSSL::X509->new_from_string( $certContent );
my $certString = $x509->as_string();
$certString =~ s/-----BEGIN CERTIFICATE-----//;
$certString =~ s/-----END CERTIFICATE-----//;
$certString =~ s/\n//g;
$certContent = "<X509Data><X509Certificate>$certString</X509Certificate></X509Data>";
my $keyInfo = "<KeyInfo>".$certContent.$keyContent."</KeyInfo>";
my $canonical = XML::CanonicalizeXML::canonicalize( $xml, '<XPath>(//. | //@* | //namespace::*)</XPath>', "", 1, 1 );
my $bin_digest = sha1( $canonical );
my $digest = encode_base64( $bin_digest, '' );
my $digest_xml = qq{<Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>$digest</DigestValue></Reference>};
my $signed_info = qq{<SignedInfo xmlns="http://www.w3.org/2000/09/xmldsig#"><CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#WithComments"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>$digest_xml</SignedInfo>};
$canonical_sign_info = XML::CanonicalizeXML::canonicalize( $signed_info, '<XPath>(//. | //@* | //namespace::*)</XPath>', "", 1, 1 );
my $bin_signature = $rsaKey->sign( $canonical_sign_info );
my $signature = encode_base64( $bin_signature, "" );
my $signature_xml = qq{<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">$signed_info<SignatureValue>$signature</SignatureValue>$keyInfo</Signature>};
$signed =~ s/(<\/[^>]*>)$/$signature_xml$1/;
return $signed;
};
/**
* XMLDSig class for .NET 4.5
*
* Required references:
* System.Security
*
* Usage:
* var xmlDSig = new XMLDSig("./cert.p12", "qwerty");
* var signedContent = xmlDSig.SignEnveloped(contentToSign);
*/
public class XMLDSig
{
private X509Certificate2 x509Certificate2;
private RSACryptoServiceProvider privateKey;
public XMLDSig(String certificatePath, String certificatePassword)
{
x509Certificate2 = new X509Certificate2(certificatePath, certificatePassword);
privateKey = (RSACryptoServiceProvider)x509Certificate2.PrivateKey;
}
public String SignEnveloped(String XMLContent)
{
var document = new XmlDocument();
document.PreserveWhitespace = true;
document.LoadXml(XMLContent);
SignedXml signedXML = new SignedXml(document);
signedXML.SigningKey = privateKey;
signedXML.SignedInfo.CanonicalizationMethod = SignedXml.XmlDsigC14NWithCommentsTransformUrl;
signedXML.SignedInfo.SignatureMethod = SignedXml.XmlDsigRSASHA1Url;
Reference reference = new Reference();
reference.Uri = "";
reference.AddTransform(new XmlDsigEnvelopedSignatureTransform());
signedXML.SignedInfo.AddReference(reference);
KeyInfo keyInfo = new KeyInfo();
keyInfo.AddClause(new KeyInfoX509Data(x509Certificate2));
keyInfo.AddClause(new RSAKeyValue(privateKey));
signedXML.KeyInfo = keyInfo;
signedXML.ComputeSignature();
XmlElement xmlDigitalSignature = signedXML.GetXml();
document.DocumentElement.AppendChild(document.ImportNode(xmlDigitalSignature, true));
return document.OuterXml;
}
}
Funkcija nosūta izpildei parakstīto dokumentu bankai. Ja parādās kļūdas, tie tiks attēloti.
Pirms dokumenta izsūtīšanas tas jāparaksta pēc standarta XMLDSig (XML Digital Signature), metode „Enveloped”. Jāparaksta tikai maksājuma uzdevuma sekcija, kas ietverta XML tagos
Pieprasījuma parametri
Piemērs kods:
curl -d "function=PostSignedDocument&ticket=JGFIGDMG5965SF44557548958345975934&language=RU&refNo=HVEE07099900001&doc=<XML content>" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "PostSignedDocument",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"language" => "RU",
"refNo" => "HVEE07099900001",
"doc" => "<XML content>"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "PostSignedDocument"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("language", "RU"));
params.add(new BasicNameValuePair("refNo", "HVEE07099900001"));
params.add(new BasicNameValuePair("doc", "<XML content>"));
String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "PostSignedDocument",
ticket => "JGFIGDMG5965SF44557548958345975934",
language => "RU",
refNo => "HVEE07099900001",
doc => "<XML content>"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "PostSignedDocument" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "language", "RU" },
{ "refNo", "HVEE07099900001" },
{ "doc", "<XML content>" }
}
);
Parakstīta XML dokumenta paraugs
<RBdocument type="payment">
<DocNo>1-3</DocNo>
<SendCopyeMail/>
<SendCopyiRietumu>N</SendCopyiRietumu>
<User>000000</User>
<System>ELinkPRO</System>
<AddInfo72>additional info</AddInfo72>
<AmkCode>0</AmkCode>
<Amount>100.00</Amount>
<BenBank>
<BenBankAcc>A111111</BenBankAcc>
<BenBankAddr1>AXION SWISS BANK SA</BenBankAddr1>
<BenBankAddr2>LUGANO</BenBankAddr2>
<BenBankAddr3>1, VIA BOSSI</BenBankAddr3>
<BenBankBic>UNCECH22XXX</BenBankBic>
<BenBankCountry>CH</BenBankCountry>
<BenBankEl/>
<BenBankElType/>
</BenBank>
<Beneficiary>
<BenAcc>CH0000000000000000000</BenAcc>
<BenAddr1>TEST COMPANY LIMITED</BenAddr1>
Инструкция по настройке Enterprise Link PRO
23
<BenAddr2>address line 1</BenAddr2>
<BenAddr3>address line 2</BenAddr3>
<BenCountry>CH</BenCountry>
<BenID>1234567</BenID>
</Beneficiary>
<Ccy>EUR</Ccy>
<Charge>OUR</Charge>
<Details70>payment details</Details70>
<Intermediary>
<IntBankAcc/>
<IntBankAddr1>ASIA PACIFIC FINANCIAL SERVICES CHI</IntBankAddr1>
<IntBankAddr2>NA LIMITED</IntBankAddr2>
<IntBankAddr3>LANZHOU GANSU</IntBankAddr3>
<IntBankBic>APFVCNB1XXX</IntBankBic>
<IntBankCountry>CN</IntBankCountry>
<IntBankEl/>
<IntBankElType/>
</Intermediary>
<Rate>0.0</Rate>
<Sender>
<SenderAcc>LV10RTMB0000000000000</SenderAcc>
<SenderCountry/>
</Sender>
<Urgency>1</Urgency>
<RegistrationDateTime>2014-07-07T10:42:26</RegistrationDateTime>
<RefNo>HVEE07099900001</RefNo>
<SignerSID>jcs_WhEny0eiG1s1FppetEw</SignerSID>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>Z/G0FYqtbpB6Wof2CQkuIoDOAVs=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>gJg8hHotw6fvuaPErg68rTH/OVnVYmohrfsYfwIW0vVhCLmDuTowEmgdnJWYzcKn2lttReQoV8cJ
KX8uvTgrasmrHYZ3zuq9BH70yh0P7fZjb4gZRv0ptxtWFBgBuF4gkp7u4f5SYG4mckiN6+pBic4H
asvbrfvTrXJSmy3/oBE=</SignatureValue>
<KeyInfo>
<KeyValue>
<RSAKeyValue>
<Modulus>tPr8PUX9Cf5o2j25o1g1Tb/W6MiCDED9C0LlP9k/hK9uJkUL3fbMEfMDjtRa83+AfnYHMTG81tNp
h9+aLOeKNobDKG3KCYxEXqvfGva0a9OBLi8lULzVdqit+hBfCEpwKCSZNshu2AXA7KFw58CWTzth
+2A8f7z5GcgdTgxJu1E=</Modulus>
<Exponent>Aw==</Exponent>
</RSAKeyValue>
</KeyValue>
<X509Data>
<X509Certificate>MIICcDCCAdmgAwIBAgIGAUTPAVTCMA0GCSqGSIb3DQEBBQUAMG8xCzAJBgNVBAYTAkxWMRYwFAYD
VQQKEw1SaWV0dW11IEJhbmthMR4wHAYDVQQLExVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxKDAmBgNV
BAMTHyh0ZXN0KSBSQiBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMTQwMzE3MDc0NjE0WhcNMTYw
MzA2MDc0NjE0WjBDMQ8wDQYDVQQDDAY0MjM2NzMxIzAhBgNVBAsMGkRpZ2l0YWwgSWRlbnRpZmll
ciBDbGFzcyAyMQswCQYDVQQGEwJMVjCBnTANBgkqhkiG9w0BAQEFAAOBiwAwgYcCgYEAtPr8PUX9
Cf5o2j25o1g1Tb/W6MiCDED9C0LlP9k/hK9uJkUL3fbMEfMDjtRa83+AfnYHMTG81tNph9+aLOeK
NobDKG3KCYxEXqvfGva0a9OBLi8lULzVdqit+hBfCEpwKCSZNshu2AXA7KFw58CWTzth+2A8f7z5
GcgdTgxJu1ECAQOjRTBDMAsGA1UdDwQEAwIB/jA0BgNVHSUBAf8EKjAoBggrBgEFBQcDAQYIKwYB
BQUHAwIGCCsGAQUFBwMJBggrBgEFBQcDBDANBgkqhkiG9w0BAQUFAAOBgQADBNN0K6wYm9G09yII
cPl8APAkbGPTm3eCUy50kkD9DnNwJilGY5Pdm1aqKQZ5GmbP+P4k6d6XKjB9TJSiBxzRLBurULes
LPaVxqWDp54gT7FFRr8Gz0CiaKdTr2xrzO+sCaMs3PzZ48WPrBZeYSedwPr7Gu3JjzxCD3dTq/BM
Ng==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</RBdocument>
Sekmīga JSON atbilde:
{
"code": 0,
"error": "",
"refNo": " HVEE07099900003",
"error_code": "IERR_OK",
"error_message": "",
"error_field": "",
"error_level": 0
}
Sekmīga JSON atbilde ar maksājuma izpildes kļūdām:
{
"code": 0,
"error": "",
"refNo": " HVEE07099900004",
"error_code": "IERR_SIG_BAD",
"error_message": "Invalid signature",
"execute_message": "",
"error_field": "",
"error_level": 4,
"errors": [
{
"error_code": "IERR_SIG_BAD",
"error_message": "Invalid signature",
"execute_message": "",
"error_field": "",
"error_level": 4
}
]
}
Parametrs | Apraksts |
---|---|
function* | PostSignedDocument |
ticket* | elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934. |
language | valoda, kurā sniedzami ziņojumi par kļūdām. Pieejamie varianti: RU, EN, LV |
refNo* | dokumenta references numurs |
doc* | parakstītā dokumenta teksts XML formātā |
* obligātie parametri
ISO 20022
AS Rietumu Banka atbalsta ISO 20022 XML standarta dokumentu pieņemšanu caur Enterprise Link Pro sistēmu.
Darbam ar ISO 20022 XML standarta dokumentiem izmantojamas sekojošās funkcijas:
- PostISO20022
- ISO20022Status
- GetISO20022ForSign
Funkcija „Maksājumu ierosināšanas ziņojums”
Maksājumu ierosināšanas ziņojuma ISO 20022 XML pain.001.001.03 formāta nosūtīšanai no klienta Bankā tiek izmantota funkcija PostISO20022.
Pirms dokumenta izsūtīšanas tas jāparaksta pēc standarta XMLDSig (XML Digital Signature), metode „Enveloped”. Jāparaksta tikai maksājuma uzdevuma sekcija, kas ietverta XML tagos un XAdES.
Pieprasījuma parametri
Piemērs kods:
curl -d "function=PostISO20022&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&resultFormat=XML&doc=<XML content>" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "PostISO20022",
"rid" => "123456",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"resultFormat" => "XML",
"doc" => "<XML content>"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "PostISO20022"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("resultFormat", "XML"));
params.add(new BasicNameValuePair("doc", "<XML content>"));
String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "PostISO20022",
rid => "123456",
ticket => "JGFIGDMG5965SF44557548958345975934",
resultFormat => "XML",
doc => "<XML content>"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "PostISO20022" },
{ "rid", "123456" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "resultFormat", "XML" },
{ "doc", "<XML content>" }
}
);
Piemērs:
<Document>
<CstmrPmtStsRpt>
<GrpHdr>
<MsgId>1459416333517</MsgId>
<CreDtTm>2016-01-31T12:25:33</CreDtTm>
<InitgPty>
<Id>
<OrgId>
<BICOrBEI>RTMBLV2X</BICOrBEI>
</OrgId>
</Id>
</InitgPty>
</GrpHdr>
<OrgnlGrpInfAndSts>
<OrgnlMsgId>000000UniqMessageId-000012345678989</OrgnlMsgId>
<OrgnlMsgNmId>pain.001.001.03</OrgnlMsgNmId>
<OrgnlCreDtTm>2016-03-22T10:03:35</OrgnlCreDtTm>
<GrpSts>ACSP</GrpSts>
<StsRsnInf>
<Rsn>
<Cd>NARR</Cd>
</Rsn>
<AddtlInf>Accepted for execution. RefNo : XIEG01319900188</AddtlInf>
</StsRsnInf>
</OrgnlGrpInfAndSts>
</CstmrPmtStsRpt>
</Document>
Parametrs | Apraksts |
---|---|
function* | PostISO20022 |
rid* | Rietumu ID numurs |
ticket* | Elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934 |
resultFormat* | XML |
doc* | Parakstītā dokumenta teksts XML formātā. Parakstam jābūt pēc standarta XMLDSig (XML Digital Signature), metode „Enveloped”. |
* obligātie parametri
Atbilde tiek sniegta Maksājumu statusa atbildes ziņojuma ISO 20022 XML pain.002.001.03 formātā par maksājumu uzdevumu pakas pieņemšanu tālakai apstrādei kopumā.
Funkcija „Maksājumu statusa atbildes ziņojums”
Maksājumu statusa atbildes ziņojuma ISO 20022 XML pain.002.001.03 formātā saņemšanai no Bankas klientam tiek izmantota funkcija ISO20022Status.
Pieprasījuma parametri
Piemērs kods:
curl -d "function=ISO20022Status&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&resultFormat=XML&msgId=1234566333517" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "ISO20022Status",
"rid" => "123456",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"resultFormat" => "XML",
"msgId" => "1234566333517"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "ISO20022Status"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("resultFormat", "XML"));
params.add(new BasicNameValuePair("msgId", "1234566333517"));
String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "ISO20022Status",
rid => "123456",
ticket => "JGFIGDMG5965SF44557548958345975934",
resultFormat => "XML",
msgId => "1234566333517"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "ISO20022Status" },
{ "rid", "123456" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "resultFormat", "XML" },
{ "msgId", "1234566333517" }
}
);
Parametrs | Apraksts |
---|---|
function* | ISO20022Status |
rid* | Rietumu ID numurs |
ticket* | Elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934 |
resultFormat* | XML |
msgId* | Pieprasītā maksājuma uzdevuma faila identifikators no oriģinālā maksājumu ierosināšanas ziņojuma (pain.001.001.03), par kuru tiek pieprasīts statuss. |
* obligātie parametri
Funkcija „Dokumenta saņemšana parakstīšanai”
Dokumenta saņemšana parakstīšanai vairāklīmeņu paraksta shēmas izmantošanas gadījumā tiek izmantota funkcija GetISO20022ForSign.
Pieprasījuma parametri
Piemērs kods:
curl -d "function=GetISO20022ForSign&rid=123456&ticket=JGFIGDMG5965SF44557548958345975934&resultFormat=XML&msgId=1234566333517" -E ./cert.pem:qwerty https://<domain>/elinkpro/Process
<?php
$response = process_enterprise_link_pro( array(
"function" => "GetISO20022ForSign",
"rid" => "123456",
"ticket" => "JGFIGDMG5965SF44557548958345975934",
"resultFormat" => "XML",
"msgId" => "1234566333517"
), "./cert.pem", "qwerty" );
?>
EnterpriseLinkPro enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("function", "GetISO20022ForSign"));
params.add(new BasicNameValuePair("rid", "123456"));
params.add(new BasicNameValuePair("ticket", "JGFIGDMG5965SF44557548958345975934"));
params.add(new BasicNameValuePair("resultFormat", "XML"));
params.add(new BasicNameValuePair("msgId", "1234566333517"));
String result = enterpriseLinkPro.process(params);
$response = process_enterprise_link_pro( [
function => "GetISO20022ForSign",
rid => "123456",
ticket => "JGFIGDMG5965SF44557548958345975934",
resultFormat => "XML",
msgId => "1234566333517"
], './cert.pem', 'qwerty' );
var enterpriseLinkPro = new EnterpriseLinkPro("./cert.p12", "qwerty");
var result = await enterpriseLinkPro.Process(new Dictionary<string, string>
{
{ "function", "GetISO20022ForSign" },
{ "rid", "123456" },
{ "ticket", "JGFIGDMG5965SF44557548958345975934" },
{ "resultFormat", "XML" },
{ "msgId", "1234566333517" }
}
);
Parametrs | Apraksts |
---|---|
function* | GetISO20022ForSign |
rid* | Rietumu ID numurs |
ticket* | Elektroniska caurlaide, ko piešķir, pieslēdzot kontu pakalpojumam sistēmā „iRietumu”, piemēram, ticket=JGFIGDMG5965SF44557548958345975934 |
resultFormat* | XML |
msgId* | Pieprasītā maksājuma uzdevuma faila identifikators no oriģinālā maksājumu ierosināšanas ziņojuma (pain.001.001.03), par kuru tiek pieprasīts statuss. |
* obligātie parametri
ISO 20022 XML formāta dokumentu noformēšana
Maksājumu ierosināšanas ziņojums pain.001.001.03
Vispārējās prasības
Dotu dokumentu jāizmanto kopā ar formāta aprakstu ISO 20022 Message Definition Report, jo dotais dokuments satur informāciju tikai par tiem ziņojumu elementiem, kas tiek izmantotas Bankā. Ja ziņojumi satur šajā dokumentā neaprakstītus elementus, tie tiks ignorēti.
Kodējums
AS Rietumu Banka atbalsta “UTF-8 without BOM kodējumu”.
Maksājuma ierosināšanas ziņojumu satura apraksts
Ziņojums satur divus obligātos blokus: Galvene (Header) un Maksājumu informācija (Payment Information).
Galvene (Header): Šis bloks tiek norādīts tikai vienu reizi un satur faila identificējošus elementus – maksājuma identifikators, ziņojuma izveides datums un laiks, maksājuma iniciējošā puse (pārstāvis).
Maksājumu informācija (Payment Information): Failā var būt norādīts viens (vai vairāki) maksājumu bloki. Katrs šāds bloks satur elementus, pēc kuriem tiek identificēts maksātājs (Debitors)- Debitors, Debitora konts, Maksājuma tips, maksājuma izpildes datums. Tāpat šajā blokā ir informācija par maksājumiem (Credit Transfers), kas satur informāciju par maksājuma saņemēju, saņēmēja banku, pārskaitījuma summu un maksājuma informāciju.
Zemāk parādītajā tabula aprakstīti ziņojumos izmantotie lauki sekojošā formātā:
ISO Index No. | Or. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|---|
[1..1] | + Message root |
ISO Index No. – Ziņojuma elementa numurs. Numurs atbilst ISO 20022 XML Ziņojumu aprakstam, kurš ir atrodams vietnē www.iso20022.org zem “Catalogue of ISO 20022 messages” ar atsauci “pain.001.001.03”.
Or. – Norāda uz izvēlni. Ziņojumā var tikt iekļauts viens vai otrs elements.
Mult. – Norāda uz elementa izmantošanas obligātumu un šī elementa parādīšanās biežumu. Iespējamās vērtības un to nozīme:
- [1..1] – Elements ir obligāts un var tikt norādīts vienu reizi;
- [1..n] – Elements ir obligāts un var tikt norādīts vienu vai vairākas reizes;
- [0..1] – Elementu drīkst nenorādīt. Ja elements tiek norādīts, tas var būt darīts tikai vienu reizi;
- [0..n] – Elementu drīkst nenorādīt. Ja elements tiek norādīts, tas var būt darīts vienu vai vairākas reizes.
Ziņojuma elements – Elementa nosaukums atbilstoši ISO 20022 XML.
XML tags – Atbilstošā elementa XML tags ziņojumā.
ISO Tips – XML tagā ievadītās informācijas apraksts.
Komentāri par laukā ievadāmo informāciju – Papildu komentāri par lauka aizpildīšanu.
Ziņojuma elementi
ISO Index No. | Or. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|---|
Customer Credit Transfer Initiation | <CstmrCdtTrfInitn> | |||||
1.0 | [1..1] | +GroupHeader | <GrpHdr> | Component | ||
1.1 | [1..1] | ++MessageIdentification | <MsgId> | Max35Text | Unikāls ziņojuma identifikators, ko piešķir ziņojuma radītājs. Pirmām 6 zīmes jāsakrīt ar Rietumu ID numuru. | |
1.2 | [1..1] | ++CreationDateTime | <CreDtTm> | ISODateTime | (GGGG-MM-DDThh:mm:ss, piemēram: 2015-11-21T09:15:39). | |
1.6 | [1..1] | ++NumberOfTransactions | <NbOfTxs> | Max15NumericText | Kopējais maksājumu skaits failā. | |
1.7 | [0..1] | ++ControlSum | <CtrlSum> | Decimal Number | Kopējā maksājumu summa (neatkarīgi no valūtas). Piemērs 100EUR; 60USD; 50GBP- lauka vērtība 210. | |
1.8 + | [1..1] | ++Initiating Party | <InitgPty> | Party Identification Component | Informācija par maksājumu iniciētāju - klienta pārstāvi. Tiek pieņemts, bet netiek izmantots. | |
9.1.0 | [0..1] | +++Name | <Nm> | Max140Text | ||
9.1.12 | [0..1] | +++Identification | <Id> | Component | ||
9.1.13 | {Or | [1..1] | ++++OrganisationIdentification | <OrgId> | Component | Organizācijas Identifikators. |
9.1.14 | [0..1] | +++++BICOrBEI | <BICOrBEI> | Identifier | ||
9.1.15 | [0..n] | +++++Other | <Othr> | Component | ||
9.1.16 | [1..1] | ++++++Identification | <Id> | Max35Text | ||
9.1.17 | [0..1] | ++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.18 | [1..1] | +++++++Code | <Cd> | Code | Ja tiek norādīts nodokļa maksātāja kods - TXID. | |
9.1.21 | Or} | [1..1] | ++++PrivateIdentification | <PrvtId> | Component | Privātpersonas identifikators. |
9.1.27 | [0..n] | +++++Other | <Othr> | Component | ||
9.1.28 | [1..1] | ++++++Identification | <Id> | Max35Text | Privātpersonas personas kods. | |
9.1.29 | [0..1] | ++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.30 | [1..1] | +++++++Code | <Cd> | Code | Ja tiek norādīts personas kods - NIDN. | |
2.0 | [1..n] | +PaymentInformation | <PmtInf> | Component | Maksājumu informācijas bloks. | |
2.1 | [1..1] | ++PaymentInformation Identification | <PmtInfId> | Max35Text | Unikāls maksājuma bloka identifikators (piešķir maksājumu iniciators). | |
2.2 | [1..1] | ++PaymentMethod | <PmtMtd> | Code | Tiek pieņemts tikai kods TRF. | |
2.4 | [0..1] | ++NumberOfTransactions | <NbOfTxs> | Max15NumericText | Maksājumu skaits konkrētā <PmtInf> sadāļā. | |
2.5 | [0..1] | ++ControlSum | <CtrlSum> | Decimal Number | Maksājumu kopsumma konkrētā <PmtInf> sadaļā, neatkarīgi no valūtas. | |
2.6 | [0..1] | ++PaymentTypeInformation | <PmtTpInf> | Component | Elementu kopums kas norāda maksājuma tipu/prioritāti. | |
2.11 | [0..1] | +++LocalInstrument | <LclInstrm> | Choice Component | ||
2.12 | {Or | [1..1] | ++++Code | <Cd> | Code | Maksājuma izpildes ātrums visiem maksājuma uzdevumiem dotajā blokā. SDCL - Ekspress, jebkura cita vērtība - Standarta. Ja šī informācija aizpildīta arī zemākā līmenī, lauks tiek ignorēts. |
2.13 | Or} | [1..1] | ++++Proprietary | <Prtry> | Max35Text | Maksājuma prioritāte: NORM - Ekonomiskais; HIGH - Standarta; EXPR - Ekspress. Ja šī informācija aizpildīta arī zemākā līmenī (lauks 2.38), lauks tiek ignorēts. |
2.17 | [1..1] | ++RequestedExecutionDate | <ReqdExctnDt> | ISODate | Datums, kad maksājumi tiks nosūtīti izpildei. Ne tālāk kā 30 dienas nākotnē. Pagātnes datumi netiek pieņemti. | |
2.19 + | [1..1] | ++Debtor | <Dbtr> | Party Identification Component | Dati par maksātāju. Maksātājs tiek identificēts pēc maksātāja konta numura (lauks. 2.20). | |
9.1.0 | [0..1] | +++Name | <Nm> | Max140Text | Tiek pieņemts, bet netiek izmantots. Tiks izmantota informācija no Rietumu Bankas datu bāzes par klientu, balstoties uz maksātāja konta numura. | |
9.1.1 | [0..1] | +++PostalAddress | <PstlAdr> | Component | Tiek pieņemts, bet netiek izmantots. | |
9.1.10 | [0..1] | ++++Country | <Ctry> | CountryCode | Tiek pieņemts, bet netiek izmantots. | |
9.1.11 | [0..7] | ++++AdressLine | <AdrLine> | Max70Text | Tiek pieņemts, bet netiek izmantots. | |
9.1.12 | [0..1] | +++Identification | <Id> | Choice Component | Tiek pieņemts, bet netiek izmantots. | |
9.1.13 | {Or | [1..1] | ++++OrganisationIdentification | <OrgId> | Component | Tiek pieņemts, bet netiek izmantots. Tiks izmantota informācija no Rietumu Bankas datu bāzes par klientu, balstoties uz maksātāja konta numura (lauks. 2.20). |
9.1.14 | [0..1] | +++++BICOrBEI | <BICOrBEI> | Identifier | ||
9.1.15 | [0..n] | +++++Other | <Othr> | Component | ||
9.1.16 | [1..1] | ++++++Identification | <Id> | Max35Text | ||
9.1.17 | [0..1] | ++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.18 | [1..1] | +++++++Code | <Cd> | Code | ||
9.1.21 | Or} | [1..1] | ++++PrivateIdentification | <PrvtId> | Component | Tiek pieņemts, bet netiek izmantots. Tiks izmantota informācija no Rietumu Bankas datu bāzes par klientu, balstoties uz maksātāja konta numura (lauks. 2.20). |
9.1.22 | [0..1] | +++++DateAndPlaceOfBirth | <DtAndPlcOfBirth> | Component | ||
9.1.23 | [1..1] | ++++++BirthDate | <BirthDt> | ISODate | ||
9.1.25 | [1..1] | ++++++CityOfBirth | <CityOfBirth> | Max35Text | ||
9.1.26 | [1..1] | ++++++CountryOfBirth | <CtryOfBirth> | CountryCode | ||
9.1.27 | [0..n] | +++++Other | <Othr> | Component | ||
9.1.28 | [1..1] | ++++++Identification | <Id> | Max35Text | ||
9.1.29 | [0..1] | ++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.30 | [1..1] | +++++++Code | <Cd> | Code | ||
2.20 + | [1..1] | ++DebtorAccount | <DbtrAcct> | Component | Informācija par Maksātāja kontu, no kura tiks veikti darījumi. | |
1.1.0 | [1..1] | +++Identification | <Id> | Account Identification Component | Maksātāja konta identifikators. | |
1.1.1 | [1..1] | ++++IBAN | <IBAN> | IBANIdentifier | Konta numurs IBAN formātā. Šajā laukā tiek norādīts konta numurs no kura tiks veikti maksājumi. | |
1.1.11 | [0..1] | +++Currency | <Ccy> | Currency Code | Tiek pieņemts, bet netiek izmantots. Maksājuma valūta tiks noteikta pēc katra maksājuma CCY. | |
2.21 + | [1..1] | ++DebtorAgent | <DbtrAgt> | Financial Institution Identification Component | ||
6.1.0 | [1..1] | +++FinancialInstitutionIdentification | <FinInstnId> | Component | ||
6.1.1 | [0..1] | ++++BIC | <BIC> | BICIdentifier | Bankas BIC kods - RTMBLV2X | |
2.23 + | [0..1] | ++UltimateDebtor | <UltmtDbtr> | Party Identification Component | Tiek pieņemts, bet netiek izmantots. | |
9.1.0 | [0..1] | +++Name | <Nm> | Max140Text | ||
9.1.1 | [0..1] | +++PostalAddress | <PstlAdr> | Component | ||
9.1.10 | [0..1] | ++++Country | <Ctry> | CountryCode | ||
9.1.11 | [0..7] | ++++AdressLine | <AdrLine> | Max70Text | ||
9.1.12 | [0..1] | +++Identification | <Id> | Choice Component | ||
9.1.13 | {Or | [1..1] | ++++OrganisationIdentification | <OrgId> | Component | |
9.1.14 | [0..1] | +++++BICOrBEI | <BICOrBEI> | Identifier | ||
9.1.15 | [0..n] | +++++Other | <Othr> | Component | ||
9.1.16 | [1..1] | ++++++Identification | <Id> | Max35Text | ||
9.1.17 | [0..1] | ++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.18 | [1..1] | +++++++Code | <Cd> | Code | ||
9.1.21 | Or} | [1..1] | ++++PrivateIdentification | <PrvtId> | Component | |
9.1.22 | [0..1] | +++++DateAndPlaceOfBirth | <DtAndPlcOfBirth> | Component | ||
9.1.23 | [1..1] | ++++++BirthDate | <BirthDt> | ISODate | ||
9.1.25 | [1..1] | ++++++CityOfBirth | <CityOfBirth> | Max35Text | ||
9.1.26 | [1..1] | ++++++CountryOfBirth | <CtryOfBirth> | CountryCode | ||
9.1.27 | [0..n] | +++++Other | <Othr> | Component | ||
9.1.28 | [1..1] | ++++++Identification | <Id> | Max35Text | ||
9.1.29 | [0..1] | ++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.30 | [1..1] | +++++++Code | <Cd> | Code | ||
9.1.33 | [0..1] | +++CountryOfResidence | <CtryOfRes> | CountryCode | ||
2.24 | [0..1] | ++ChargeBearer | <ChrgBr> | Code | Norāda uz pusi kura sedz ar darījumu saistīto komisijas maksu. Atļauts viens no kodiem: DEBT- komisijas maksā maksātājs; SHAR vai SLEV- komisijas maksā dalīti; CRED- komisijas maksā saņēmējs. Ja lauks netiek aizpildīts, tas tiek uzskatīts kā SHAR. Ja šī informācija aizpildīta arī zemākā līmenī (lauks 2.51), lauks tiek ignorēts. | |
2.27 | [1..n] | ++CreditTransferTransactionInformation | <CrdtTrfTxInf> | Component | Katrs <CrdtTrfTxInf> bloks satur informāciju par vienu unikālu maksājuma uzdevumu. | |
2.28 | [1..1] | +++PaymentIdentification | <PmtId> | Component | Maksājuma identifikācijas sadaļa. | |
2.29 | [0..1] | ++++InstructionIdentification | <InstrId> | Max35Text | Tiek pieņemts, bet netiek izmantots. | |
2.3 | [1..1] | ++++End-To-EndIdentification | <EndToEndId> | Max35Text | Unikālais maksajuma numurs. Tiek nodots saņēmēja bankā ja vien tas ir iespejams. | |
2.31 | [0..1] | +++PaymentTypeInformation | <PmtTpInf> | Component | Satur informāciju par konkrēta maksājuma prioritāti. | |
2.33 | [0..1] | ++++ServiceLevel | <SvcLvl> | Choice Component | Tiek pieņemts, bet netiek izmantots. | |
2.34 | [1..1] | +++++Code | <Cd> | Code | ||
2.36 | [0..1] | ++++LocalInstrument | <LclInstrm> | Choice Component | ||
2.38 | [1..1] | +++++Proprietary | <Prtry> | Max35Text | Maksājuma prioritāte: NORM - Ekonomiskais; HIGH - Standarta; EXPR - Ekspress. Ja šī informācija aizpildīta arī augstākā līmenī (lauks 2.13), tad augstāka līmeņa lauks tiek ignorēts. | |
2.39 | [0..1] | ++++CategoryPurpose | <CtgyPurp> | Choice Component | Tiek pieņemts, bet netiek izmantots. | |
2.4 | [1..1] | +++++Code | <Cd> | Code | ||
2.42 | [1..1] | +++Amount | <Amt> | Maksajuma summa un valūta. | ||
2.43 | [1..1] | ++++InstructedAmount | <InstdAmt Ccy=“AAA”> | Amount | Darījuma summa un valūta. Piemērs, ja nepieciešams pārskaitīt 1000 EUR: <InstdAmt Ccy=“EUR”>1000</InstdAmt>. Ir obligāti janorāda gan summa, gan valūta. | |
2.51 | [0..1] | +++ChargeBearer | <ChrgBr> | Code | Norāda uz pusi kura sedz ar darījumu saistīto komisijas maksu. Atļauts viens no kodiem: DEBT- komisijas maksā maksātājs; SHAR vai SLEV- komisijas maksā dalīti; CRED- komisijas maksā saņēmējs. Ja lauks netiek aizpildīts, tas tiek uzskatīts kā SHAR. (ja vien sugstākā līmenī (lauks 2.24) nav norādīts citādi) | |
2.70 + | [0..1] | +++UltimateDebtor | <UltmtDbtr> | Identification | Tiek pieņemts, bet netiek izmantots. | |
9.1.0 | [0..1] | ++++Name | <Nm> | Max140Text | ||
9.1.1 | [0..1] | ++++PostalAddress | <PstlAdr> | Component | ||
9.1.10 | [0..1] | +++++Country | <Ctry> | CountryCode | ||
9.1.11 | [0..7] | +++++AdressLine | <AdrLine> | Max70Text | ||
9.1.12 | [0..1] | ++++Identification | <Id> | Choice Component | ||
9.1.13 | {Or | [1..1] | +++++OrganisationIdentification | <OrgId> | Component | |
9.1.14 | [0..1 | ++++++BICOrBEI | <BICOrBEI> | Identifier | ||
9.1.15 | [0..n] | ++++++Other | <Othr> | Component | ||
9.1.16 | [1..1] | +++++++Identification | <Id> | Max35Text | ||
9.1.17 | [0..1] | +++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.18 | [1..1] | ++++++++Code | <Cd> | Code | ||
9.1.21 | Or} | [1..1] | +++++PrivateIdentification | <PrvtId> | Component | |
9.1.22 | [0..1] | ++++++DateAndPlaceOfBirth | <DtAndPlcOfBirth> | Component | ||
9.1.23 | [1..1] | +++++++BirthDate | <BirthDt> | ISODate | ||
9.1.25 | [1..1] | ++++++CityOfBirth | <CityOfBirth> | Max35Text | ||
9.1.26 | [1..1] | +++++++CountryOfBirth | <CtryOfBirth> | CountryCode | ||
9.1.27 | [0..n] | ++++++Other | <Othr> | Component | ||
9.1.28 | [1..1] | +++++++Identification | <Id> | Max35Text | ||
9.1.29 | [0..1] | +++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.30 | [1..1] | ++++++++Code | <Cd> | Code | ||
9.1.33 | [0..1] | ++++CountryOfResidence | <CtryOfRes> | CountryCode | ||
2.71 + | [0..1] | +++IntermediaryAgent1 | <IntrmyAgt1> | Financial Institution Identification Component | Saņēmējbankas korespondentbanka. | |
6.1.0 | [1..1] | ++++FinancialInstitutionIdentification | <FinInstnId> | Component | ||
6.1.1 | [0..1] | +++++BIC | <BIC> | BICIdentifier | Bankas Identifikācijas kods - BIC. Norādīt tikai priekš SWIFT. | |
6.1.2 | [0..1] | +++++ClearingSystemMemberIdentification | <ClrSysMmbId> | Component | Klīringa sistēma, kuras identifikators tiek norādīts. Jānorāda, ja norādītais BIC nav SWIFT. | |
6.1.3 | [0..1] | ++++++ClearingSystemIdentification | <ClrSysId> | Choice Component | ||
6.1.4 | [1..1] | +++++++Code | <Cd> | Code | Klīringa sistēmas identifikators no http://www.iso20022.org/external_code_list.page saraksta ExternalClearingSystemIdentification1Code. Jānorāda, ja norādītais BIC nav SWIFT. | |
6.1.6 | [1..1] | ++++++MemberIdentification | <MmbId> | Max35Text | Korespondentbankas identifikators noteiktajā klīringa sistēmā. Jānorāda, ja norādītais BIC nav SWIFT. | |
6.1.7 | [0..1] | +++++Name | <Nm> | Max140Text | Korespondentbankas nosaukums. | |
6.1.8 | [0..1] | +++++PostalAddress | <PstlAdr> | Component | Korespondentbankas pasta adrese. | |
6.1.17 | [0..1] | ++++++Country | <Ctry> | CountryCode | ||
6.1.18 | [0..7] | ++++++AdressLine | <AdrLine> | Max70Text | Tiek izmantotas pirmās 140 zīmes, kopā ar bankas nosaukumu. | |
6.1.25 | [0..1] | ++++BranchIdentification | <BrnchId> | Component | Tiek pieņemts, bet netiek izmantots. | |
6.1.26 | [0..1] | +++++Identification | <Id> | Max35Text | ||
6.1.27 | [0..1] | +++++Name | <Nm> | Max140Text | ||
6.1.28 | [0..1] | +++++PostalAddress | <PstlAdr> | Component | ||
6.1.37 | [0..1] | ++++++Country | <Ctry> | CountryCode | ||
6.1.38 | [0..7] | ++++++AdressLine | <AdrLine> | Max70Text | ||
2.72 + | [0..1] | +++IntermediaryAgentAccount1 | <IntrmyAgt1Acct> | Cash Account Component | Saņēmējbankas korespondentbankas konta numurs. | |
1.1.0 | [1..1] | ++++Identification | <Id> | Identification | ||
1.1.1 | {Or | [1..1] | +++++IBAN | <IBAN> | IBANIdentifier | Tikai IBAN konta numuram. |
1.1.2 | Or} | [1..1] | +++++Other | <Othr> | Component | |
1.1.3 | [1..1] | ++++++Identification | <Id> | Max34Text | ||
1.1.4 | [0..1] | ++++++SchemeName | <SchmeNm> | Choice Component | ||
1.1.5 | [1..1] | +++++++Code | <Cd> | Code | ||
2.73 + | [0..1] | +++IntermediaryAgent2 | <IntrmyAgt2> | Financial Institution Identification Component | Tiek pieņemts, bet netiek izmantots. | |
2.74 + | [0..1] | +++IntermediaryAgentAccount2 | <IntrmyAgt2Acct> | Cash Account Component | Tiek pieņemts, bet netiek izmantots. | |
2.77 + | [0..1] | +++CreditorAgent | <CdtrAgt> | Financial Institution Identification Component | Saņēmēja banka | |
6.1.0 | [1..1] | ++++FinancialInstitutionIdentification | <FinInstnId> | Component | ||
6.1.1 | [0..1] | +++++BIC | <BIC> | BICIdentifier | Bankas Identifikācijas kods - BIC. Norādīt tikai priekš SWIFT. | |
6.1.2 | [0..1] | +++++ClearingSystemMemberIdentification | <ClrSysMmbId> | Component | Klīringa sistēma, kuras identifikators tiek norādīts. Jānorada, ja norādītais BIC nav SWIFT. | |
6.1.3 | [0..1] | ++++++ClearingSystemIdentification | <ClrSysId> | Choice Component | ||
6.1.4 | [1..1] | +++++++Code | <Cd> | Code | Klīringa sistēmas identifikators no http://www.iso20022.org/external_code_list.page saraksta ExternalClearingSystemIdentification1Code. Jānorāda, ja norādītais BIC nav SWIFT. | |
6.1.6 | [1..1] | ++++++MemberIdentification | <MmbId> | Max35Text | Saņēmējtbankas identifikators noteiktajā klīringa sistēmā. | |
6.1.7 | [0..1] | +++++Name | <Nm> | Max140Text | Saņēmēja bankas nosaukums. | |
6.1.8 | [0..1] | +++++PostalAddress | <PstlAdr> | Component | Saņēmēja bankas pasta adrese. | |
6.1.17 | [0..1] | ++++++Country | <Ctry> | CountryCode | Valsts kods. | |
6.1.18 | [0..7] | ++++++AdressLine | <AdrLine> | Max70Text | Tiek izmantotas pirmās 140 zīmes, kopā ar bankas nosaukumu. | |
2.78 + | [0..1] | +++CreditorAgentAccount | <CdtrAgtAcct> | Cash Account Component | Saņēmējbankas konta numurs korespondentbankā. | |
1.1.0 | [1..1] | ++++Identification | <Id> | Account Identification Component | ||
1.1.1 | {Or | [1..1] | +++++IBAN | <IBAN> | IBANIdentifier | Tikai IBAN konta numuram. |
1.1.2 | Or} | [1..1] | +++++Other | <Othr> | Component | Ja konta numurs nav IBAN formātā. |
1.1.3 | [1..1] | ++++++Identification | <Id> | Max34Text | ||
2.79 + | [0..1] | +++Creditor | <Cdtr> | Party Identification Component | Informācijas bloks par maksājuma saņēmēju (Kreditors). | |
9.1.0 | [0..1] | ++++Name | <Nm> | Max140Text | Saņēmēja nosaukums/vārds uzvārds. SEPA maksājuma gadījumā lauka garums starpbanku posmā ir ierobežots līdz 70 zīmēm. | |
9.1.1 | [0..1] | ++++PostalAddress | <PstlAdr> | Component | Saņēmēja pasta adrese. | |
9.1.10 | [0..1] | +++++Country | <Ctry> | CountryCode | ||
9.1.11 | [0..7] | +++++AdressLine | <AdrLine> | Max70Text | Tiek izmantotas pirmās 140 zīmes, kopā ar saņēmēja nosaukumu. | |
9.1.12 | [0..1] | ++++Identification | <Id> | Choice Component | ||
9.1.13 | {Or | [1..1] | +++++OrganisationIdentification | <OrgId> | Component | Uzņēmuma identifikators. |
9.1.14 | [0..1] | ++++++BICOrBEI | <BICOrBEI> | Identifier | ||
9.1.15 | [0..n] | +++++++Other | <Othr> | Component | ||
9.1.16 | [1..1] | ++++++++Identification | <Id> | Max35Text | Uzņēmuma reģistrācijas numurs vai nodokļu maksātāja numurs. | |
9.1.17 | [0..1] | ++++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.18 | {Or | [1..1] | +++++++++Code | <Cd> | Code | Ja tiek norādīts nodokļa maksātāja kods - TXID. |
9.1.19 | Or} | [1..1] | +++++++++Proprietary | <Prtry> | Max35Text | |
9.1.20 | [0..1] | ++++++++Issuer | <Issr> | Max35Text | ||
9.1.21 | Or} | [1..1] | ++++++PrivateIdentification | <PrvtId> | Component | Privātpersonas Identifikators. |
9.1.22 | [0..1] | +++++++DateAndPlaceOfBirth | <DtAndPlcOfBirth> | Component | ||
9.1.23 | [1..1] | ++++++++BirthDate | <BirthDt> | ISODate | ||
9.1.25 | [1..1] | ++++++++CityOfBirth | <CityOfBirth> | Max35Text | ||
9.1.26 | [1..1] | ++++++++CountryOfBirth | <CtryOfBirth> | CountryCode | Valsts kods. | |
9.1.27 | [0..n] | ++++++Other | <Othr> | Component | ||
9.1.28 | [1..1] | +++++++Identification | <Id> | Max35Text | Ja tiek norādīts personas kods - NIDN. | |
9.1.29 | [0..1] | +++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.30 | {Or | [1..1] | ++++++++Code | <Cd> | Code | |
9.1.31 | Or} | [1..1] | ++++++++Proprietary | <Prtry> | Max35Text | |
9.1.32 | [0..1] | +++++++Issuer | <Issr> | Max35Text | ||
9.1.33 | [0..1] | ++++CountryOfResidence | <CtryOfRes> | CountryCode | Valsts kods. | |
2.80 + | [0..1] | +++CreditorAccount | <CdtrAcct> | Cash Account Component | Informācija par maksājuma saņēmēja konta numuru (kreditējamais konts. OBLIGĀTI aizpildāms lauks. | |
1.1.0 | [1..1] | ++++Identification | <Id> | Account Identification Component | ||
1.1.1 | {Or | [1..1] | +++++IBAN | <IBAN> | IBANIdentifier | Kreditējamais konts IBAN formātā. Obligāts maksājumiem Latvijā un SEPA maksājumiem. |
1.1.2 | Or} | [1..1] | +++++Other | <Othr> | Component | |
1.1.3 | [1..1] | ++++++Identification | <Id> | Max34Text | Saņēmēja konts ne-IBAN formātā. | |
2.81 + | [0..1] | +++UltimateCreditor | <UltmCdtr> | Party Identification Component | Tiek pieņemts, bet netiek izmantots. | |
9.1.0 | [0..1] | ++++Name | <Nm> | Max140Text | ||
9.1.12 | [0..1] | ++++Identification | <Id> | Choice Component | ||
9.1.13 | {Or | [1..1] | +++++OrganisationIdentification | <OrgId> | Component | |
9.1.14 | [0..1] | ++++++BICOrBEI | <BICOrBEI> | Identifier | ||
9.1.15 | [0..n] | +++++++Other | <Othr> | Component | ||
9.1.16 | [1..1] | ++++++++Identification | <Id> | Max35Text | ||
9.1.17 | [0..1] | ++++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.18 | [1..1] | +++++++++Code | <Cd> | Code | ||
9.1.21 | Or} | [1..1] | ++++++PrivateIdentification | <PrvtId> | Component | Privātpersonas identifikators. |
9.1.22 | [0..1] | +++++++DateAndPlaceOfBirth | <DtAndPlcOfBirth> | Component | ||
9.1.23 | [1..1] | ++++++++BirthDate | <BirthDt> | ISODate | ||
9.1.25 | [1..1] | +++++++CityOfBirth | <CityOfBirth> | Max35Text | ||
9.1.26 | [1..1] | ++++++++CountryOfBirth | <CtryOfBirth> | CountryCode | ||
9.1.27 | [0..n] | ++++++Other | <Othr> | Component | ||
9.1.28 | [1..1] | +++++++Identification | <Id> | Max35Text | ||
9.1.29 | [0..1] | +++++++SchemeName | <SchmeNm> | Choice Component | ||
9.1.33 | [0..1] | ++++CountryOfResidence | <CtryOfRes> | CountryCode | ||
2.86 | [0..1] | +++Purpose | <Purp> | Choice Component | ||
2.87 | [1..1] | ++++Code | <Cd> | ExternalPurposeCode | ||
2.89 | [0..10] | +++RegulatoryReporting | <RgltryRptg> | Component | Tiek izmantots AMK kodu ievadei, rubļu maksājumiem VO kodiem. | |
11.1.1 | [0..1] | ++++Authority | <Authrty> | Component | ||
11.1.3 | [0..1] | +++++Country | <Ctry> | CountryCode | Valsts kods (AMK gadījuma LV, Krievijas rubļu gadījumā RU). | |
11.1.4 | [0..n] | ++++Details | <Dtls> | Component | ||
11.1.5 | [0..1] | +++++Type | <Tp> | Max35Text | AMK - Ārējo maksājumu klasifikatora kods Latvijas gadījumā. VO - Valūtas operāciju kods Krievijas gadījumā. | |
11.1.7 | [0..1] | +++++Country | <Ctry> | CountryCode | ||
11.1.8 | [0..1] | +++++Code | <Cd> | Code | Precīzs informācijas/atskaites kods. AMK - 3 zīmes, VO - 5 zīmes utml. | |
11.1.10 | [0..1] | +++++Information | <Inf> | Max35Text | ||
2.98 | [0..1] | +++RemittanceInformation | <RmtInf> | Component | Maksājuma detaļas/mērķis. | |
2.99 | {Or | [0..1] | ++++Unstructured | <Ustrd> | Max140Text | Informācija saņēmējam (Maksājuma detaļas/mērķis) brīvā formā max 140 simboli. Nav atļauts aizpildīt vienlaicīgi ar strukturēto informāciju saņēmējam (Lauks 2.100). Elementu atļauts lietot tikai vienu reizi katrā maksājumā. |
2.1 | Or} | [0..1] | ++++Structured | <Strd> | Component | Informācija saņēmējam (Maksājuma detaļas/mērķis) Strukturētā formātā. Nav atļauts aizpildīt vienlaicīgi ar nestrukutŗēto informāciju saņēmējam (Lauks 2.99). Elementu atļauts lietot tikai vienu reizi katrā maksājumā. Kopējais komponentē atspoguļotās informācijas garums nedrīkst pārsniegt 140 zīmes. |
2.12 | [0..1] | +++++CreditorReferenceInformation | <CdtrRefInf> | Component | ||
2.121 | [0..1] | ++++++Type | <Tp> | Component | Kreditora noteiktās references tips. | |
2.122 | [1..1] | +++++++CodeOrProprietary | <CdOrPrtry> | Component | ||
2.123 | [1..1] | ++++++++Code | <Cd> | Code | ||
2.125 | [0..1] | ++++++++Issuer | <Issuer> | Max35Text | Maksājuma references izsniedzējs. | |
2.126 | [0..1] | ++++++Reference | <Ref> | Max35Text | Maksājuma references numurs. |
Specifiskas informācijas ievadīšana
AMK koda norādīšana
XML paraugs:
<RgltryRptg>
<Authrty>
<Ctry>LV</Ctry>
</Authrty>
<Dtls>
<Tp>AMK</Tp>
<Cd>111</Cd>
</Dtls>
</RgltryRptg>
Lai maksājumā norādītu AMK kodu, nepieciešams aizpildīt sadaļu „RegulatoryReporting” (lauks 2.89) ar sekojošu informāciju:
ISO Index No. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|
2.89 | [0..10] | +++RegulatoryReporting | <RgltryRptg> | Component | |
11.1.1 | [0..1] | ++++Authority | <Authrty> | Component | |
11.1.3 | [0..1] | +++++Country | <Ctry> | CountryCode | Valsts kods - LV. |
11.1.4 | [0..n] | ++++Details | <Dtls> | Component | |
11.1.5 | [0..1] | +++++Type | <Tp> | Max35Text | Koda tips - AMK. |
11.1.8 | [0..1] | +++++Code | <Cd> | Code | Precīzs darījuma kods Piemēram: 111 - preču eksports imports. |
Rubļu maksājums uz Krieviju
Lai norādītu korekti maksājuma izpildei nepieciešamo informāciju, jāaizpilda zemāk minētās sadaļas:
Saņēmēja bankas kods – BIK
ISO Index No. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|
2.77 + | [0..1] | +++CreditorAgent | <CdtrAgt> | Financial Institution Identification Component | Saņēmēja banka. |
6.1.0 | [1..1] | ++++FinancialInstitutionIdentification | <FinInstnId> | Component | Finanšu institūcijas identifikācijas sadaļa. |
6.1.2 | [0..1] | +++++ClearingSystemMemberIdentification | <ClrSysMmbId> | Component | |
6.1.3 | [0..1] | ++++++ClearingSystemIdentification | <ClrSysId> | Choice Component | Klīringa sistēmas identifikators. |
6.1.4 | [1..1] | +++++++Code | <Cd> | Code | Konstants kods - RUCBC. |
6.1.6 | [1..1] | ++++++MemberIdentification | <MmbId> | Max35Text | Saņēmēja bankas BIK koda vērtība. |
*Šajā sadaļā tiek norādīts arī saņēmēja bankas nosaukums un adrese.
Saņēmēja bankas korespondējošais konts
ISO Index No. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|
2.78 + | [0..1] | +++CreditorAgentAccount | <CdtrAgtAcct> | Cash Account Component | Saņēmējbankas konta numurs korespondentbankā. |
1.1.0 | [1..1] | ++++Identification | <Id> | ||
1.1.2 | [1..1] | +++++Other | <Othr> | ||
1.1.3 | [1..1] | ++++++Identification | <Id> | Saņēmēj bankas korespondentkonts (konta numurs). |
Saņēmēja INN kods
ISO Index No. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|
2.79 + | [0..1] | +++Creditor | <Cdtr> | Party Identification Component | |
9.1.12 | [0..1] | ++++Identification | <Id> | Choice Component | |
9.1.13 | [1..1] | +++++OrganisationIdentification | <OrgId> | Component Uzņēmuma identifikators. | |
9.1.15 | [0..n] | +++++++Other | <Othr> | Component | |
9.1.16 | [1..1] | ++++++++Identification | <Id> | Max35Text | INN kods (piemēram INN1234567890). |
9.1.17 | [0..1] | ++++++++SchemeName | <SchmeNm> | Choice Component | |
9.1.19 | [1..1] | +++++++++Proprietary | <Prtry> | Max35Text | Koda tips, konstante INN. |
Saņēmēja KPP kods
ISO Index No. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|
2.79 + | [0..1] | +++Creditor | <Cdtr> | Party Identification Component | |
9.1.12 | [0..1] | ++++Identification | <Id> | Choice Component | |
9.1.13 | [1..1] | +++++OrganisationIdentification | <OrgId> | Component | Uzņēmuma identifikators. |
9.1.15 | [0..n] | +++++++Other | <Othr> | Component | |
9.1.16 | [1..1] | ++++++++Identification | <Id> | Max35Text | KPP kods (piemēram KPP987654321). |
9.1.17 | [0..1] | ++++++++SchemeName | <SchmeNm> | Choice Component | |
9.1.19 | [1..1] | +++++++++Proprietary | <Prtry> | Max35Text | Koda tips, konstante KPP. |
Valūtas operācijas kods (VO kods)
ISO Index No. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|
2.89 | [0..10] | +++RegulatoryReporting | <RgltryRptg> | Component | |
11.1.1 | [0..1] | ++++Authority | <Authrty> | Component | Norāda uz informācijas saņēmēju (Piemēram valsts institūcija, kura pieprasa konrēto papildinformāciju par darījumu). |
11.1.3 | [0..1] | +++++Country | <Ctry> | CountryCode | Valsts kods - RU. |
11.1.4 | [0..n] | ++++Details | <Dtls> | Component | Precīza informācija par normatīvo prasību datiem. |
11.1.5 | [0..1] | +++++Type | <Tp> | Max35Text | Koda tips - VO. VO - Valūtas operčiju kods Krievijas gadījumā. |
11.1.10 | [0..1] | +++++Code | <Inf> | Max35Text | Valūtas operācijas kods (5 cipari). |
Maksājumu statusa atbildes ziņojums pain.002.001.03
Maksājuma statusa ziņojumu satura apraksts
Ziņojums satur divus obligātos blokus: Galvene (Header) un Informācija par oriģinālo maksājumu uzdevumu failu.
Galvene (Header): Šis bloks tiek norādīts tikai vienu reizi un satur faila identificējošus elementus – Maksājuma Identifikators, ziņojuma izveides datums un laiks , maksājuma iniciējošā puse.
Informācija par oriģinālo maksājumu uzdevumu failu: No klienta saņemta failā var būt norādīts viens (vai vairāki) maksājumu bloki, un klients saņem attiecīgo struktūru maksājuma statuss reporta dokumentam.
Zemāk parādītajā tabula aprakstīti ziņojumos izmantotie lauki sekojošā formātā:
ISO Index No. | Or. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|---|
[1..1] | + Message root |
ISO Index No. – Ziņojuma elementa numurs. Numurs atbilst ISO 20022 XML Ziņojumu aprakstam, kurš ir atrodams vietnē www.iso20022.org zem “Catalogue of ISO 20022 messages” ar atsauci “pain.001.001.03”.
Or. – Norāda uz izvēlni. Ziņojumā var tikt iekļauts viens vai otrs elements.
Mult. – Norāda uz elementa izmantošanas obligātumu un šī elementa parādīšanās biežumu. Iespējamās vērtības un to nozīme:
- [1..1] – Elements ir obligāts un var tikt norādīts vienu reizi;
- [1..n] – Elements ir obligāts un var tikt norādīts vienu vai vairākas reizes;
- [0..1] – Elementu drīkst nenorādīt. Ja elements tiek norādīts, tas var būt darīts tikai vienu reizi;
- [0..n] – Elementu drīkst nenorādīt. Ja elements tiek norādīts, tas var būt darīts vienu vai vairākas reizes.
Ziņojuma elements – Elementa nosaukums atbilstoši ISO 20022 XML.
XML tags – Atbilstošā elementa XML tags ziņojumā.
ISO Tips – XML tagā ievadītās informācijas apraksts.
Komentāri par laukā ievadāmo informāciju – Papildu komentāri par lauka aizpildīšanu.
Ziņojuma elementi
ISO Index No. | Mult. | Ziņojuma elements | <XML tags> | ISO Tips | Komentāri par laukā ievadāmo informāciju |
---|---|---|---|---|---|
0.0 | [1..1] | CustomerPaymentStatusReport | <CstmrPmtStsRpt> | ||
1.0 | [1..1] | +GroupHeader | <GrpHdr> | Component | Ziņojuma informācija. |
1.1 | [1..1] | ++MessageIdentification | <MsgId> | Max35Text | Unikāls ziņojuma identifikators, ko piešķir ziņojuma radītājs. |
1.2 | [1..1] | ++CreationDateTime | <CreDtTm> | ISODateTime | Laiks un datums, kad ziņojums izveidots (GGGG-MMDDThh:mm:ss Piemēram: 2012-11-21T09:10:49). |
1.3 | [1..1] | ++InitiatingParty | <InitgPty> | Component | Finanšu institūcija kurai pieder debetējamais konts (Banka kura veiks maksājumu). |
9.1.12 | [1..1] | +++Identification | <Id> | Component | |
9.1.13 | [1..1] | ++++OrganisationIdentification | <OrgId> | Component | |
9.1.14 | [1..1] | +++++BICOrBEI | <BICOrBEI> | Identifier | Bankas BIC kods. |
2 | [1..1] | +OriginalGroupInformationAndStatus | <OrgnlGrpInfAndSts> | Component | Informācija par maksājuma iniciēšanas ziņojumu. |
2.1 | [1..1] | ++OriginalMessageIdentification | <OrgnlMsgId> | Max35Text | Maksājuma uzdevuma ziņojuma identifikātors no attiecīgā pain.001.001 faila. |
2.2 | [1..1] | ++OriginalMessageNameIdentification | <OrgnlMsgNmId> | Max35Text | Maksājuma uzdevuma ziņojuma shēmas identifikātors - pain.001.001.03. |
2.6 | [0..1] | ++GroupStatus | <GrpSts> | TransactionGroupStatus3Code | Statuss uz visām transakcijam. AS Rietumu Banka izmanto sekojošus kodus: RJCT - ja visa maksajumu paka tika atcelta. PDNG - apstrādē. PART - kaut 1 maksājuma apstrāde no pakas nav pabeigta. ACSC - visu maksājumu apstrāde pabeigta. |
2.7 | [0..n] | ++StatusReasonInformation | <StsRsnInf> | Component | |
2.9 | [0..1] | +++Reason | <Rsn> | Component | |
2.10 | [1..1] | ++++Code | <Cd> | ExternalStatusReason1Code | |
2.12 | [0..n] | +++AdditionalInformation | <AddtlInf> | Max105Text | Tekstuāla informācija par izpildes statusu. |
3.0 | [0..n] | +OriginalPaymentInformationAndStatus | <OrgnlPmtInfAndSts> | Component | Informācija par maksājuma iniciēšanas paciņu. |
3.1 | [1..1] | ++OriginalPaymentInformationIdentification | <OrgnlPmtInfId> | Max35Text | Oriģināls maksājuma paciņas identifikātors no (<PmtInfId>). |
3.15 | [0..n] | ++TransactionInformationAndStatus | <TxInfAndSts> | Component | Informācija par maksājuma iniciēšanas transakciju. |
3.17 | [0..1] | +++OriginalInstructionIdentification | <OrgnlInstrId> | Max35Text | Oriģināls transakcijas identifikātors. |
3.18 | [0..1] | +++OriginalEndtoEndIdentification | <OrgnlEndToEndId> | Max35Text | Oriģināls transakcijas end-to-end identifikātors. |
3.19 | [0..1] | +++TransactionStatus | <TxSts> | TransactionIndividualStatus3Code | Transakcijas izpildes statuss. AS Rietumu Banka izmanto sekojošus kodus: RJCT - maksājums atcelts. PDNG - maksājums apstrādē. ACSC - maksājuma apstrāde pabeigta. |
3.20 | [0..n] | +++StatusReasonInformation | <StsRsnInf> | Component | Informācija par transakcijas izpildes statusu. |
3.21 | [0..1] | +++Originator | <Orgtr> | Component | |
9.1.12 | [0..1] | ++++Identification | <Id> | Component | |
9.1.13 | [1..1] | +++++OrganisationIdentification | <OrgId> | Component | |
9.1.14 | [1..1] | ++++++BICorBEI | <BICOrBEI> | AnyBICIdentifier | |
3.22 | [0..1] | ++++Reason | <Rsn> | Component | Transakcijas statusa iemesla kods. |
3.23 | [1..1] | +++++Code | <Cd> | ExternalStatusReason1Code | Statusa kodi pieejami http://www.iso20022.org/External_Code_Lists_and_DSS.page External Code Lists spreadsheet. Ja statusa kods ir NARR, tad informāciju skatīt AddtlInf elementā. |
3.25 | [0..n] | ++++AdditionalInformation | <AddtlInf> | Max105Text | Tekstuāla informācija par transakcijas izpildes statusu un/vai kļūdu ziņojumi. |
3.30 | [0..1] | +++AccountServicerReference | <AcctSvcrRef> | Max35Text | Rietumu Bankas piešķirtais transakcijas references numurs. |
3.32 | [0..1] | +++OriginalTransactionReference | <OrgnlTxRef> | Component | Informācija papildus identificēšanai konkrētai transakcijai. |
3.34 | [0..1] | ++++Amount | <Amt> | Component | |
3.35 | [1..1] | +++++InstructedAmount | <InstdAmt Ccy=“AAA”> | Amount | |
3.41 | [1..1] | ++++RequestedExecutionDate | <ReqdExctnDt> | DateTime | |
3.121 | [1..1] | ++++Debtor | <Dbtr> | Component | |
9.1.0 | [1..1] | +++++Name | <Nm> | Text | |
3.122 | [1..1] | ++++DebtorAccount | <DbtrAcct> | ||
1.1.0 | [1..1] | +++++Identification | <Id> | ||
1.1.1 | [1..1] | ++++++IBAN | <IBAN> | Identifier | |
1.1.11 | [1..1] | +++++Currency | <Ccy> | Code | |
3.123 | [1..1] | ++++DebtorAgent | <DbtrAgt> | ||
6.1.0 | [1..1] | +++++FinancialInstitutionIdentification | <FinInstnId> | ||
6.1.1 | [1..1] | ++++++BIC | <BIC> | Identifier | |
3.125 | [0..1] | ++++CreditorAgent | <CdtrAgt> | ||
6.1.0 | [1..1] | +++++FinancialInstitutionIdentification | <FinInstnId> | ||
6.1.1 | [1..1] | ++++++BIC | <BIC> | Identifier | |
6.1.2 | [1..1] | ++++++ClearingSystemMemberIdentification | <ClrSysMmbId> | ||
6.1.3 | [0..1] | +++++++ClearingSystemIdentification | <ClrSysId> | ||
6.1.4 | [1..1] | ++++++++Code | <Cd> | Code | |
6.1.6 | [1..1] | +++++++MemberIdentification | <MmbId> | Text | |
3.127 | [1..1] | ++++Creditor | <Cdtr> | ||
9.1.0 | [1..1] | +++++Name | <Nm> | Text | |
3.128 | [1..1] | ++++CreditorAccount | <CdtrAcct> | ||
1.1.0 | [1..1] | +++++Identification | <Id> | ||
1.1.1 | [1..1] | ++++++IBAN | <IBAN> | Identifier | |
1.1.2 | [1..1] | ++++++Other | <Othr> | ||
1.1.3 | [1..1] | +++++++Identification | <Id> | Text |