Кіріспе
Интернет-эквайринг – бұл банк карталарын пайдалана отырып, жалпыға қолжетімді Интернет желісі арқылы қызметтерді немесе тауарларды сатудың заманауи әдісі.
Интернетте сатып алу үдерісінің ерекшеліктері бар болғандықтан, тауарларды/қызметтерді сату операцияларын жүзеге асыру кезінде қатысатын тараптардың, яғни клиенттің, дүкеннің және банк-эквайердің арасындағы қауіпсіз қатынастарды қамтамасыз етудің қажеттілігі туындайды.
Банк карталары арқылы Интернетте қызметтерді немесе тауарларды сату үдерісін жоспарлаған дүкен төлемдердің қауіпсіздігін қамтамасыз ету бойынша процедураларды орындауы тиіс:
- Негізгі деректерді (жеке деректер, төлем карталарының деректемесі) ұсыну барысында клиенттермен байланысу кезінде криптографиялық амалдар (SSL/TLS) қолданылуы керек.
- Жүзеге асырылатын төлем бойынша ақпарат (сома, валюта, тапсырыстың сипаттамасы), сондай-ақ, төлемді орындау нәтижелері қаскүнемдердің қатынасуынан мұқият қорғалуы тиіс.
- Төлемді іске асыру кезінде картаны тексеру процедуралары орындалуы тиіс.
Осы шарттарды орындау үшін банк-эквайер Visa International және MasterCard – З-D Secure (Verified by Visa және MasterCard SecureCode) халықаралық төлем жүйелерімен жасақталған Интернеттегі төлемдердің қауіпсіздігін қамтамасыз етудің арнайы технологияларын пайдаланады.
Технологиялық платформа ретінде Интернет-дүкеннің сайты мен бизнес-процестерін өзгертпей, дүкенге қажетті қауіпсіздік процедураларын орындауға мүмкіндік беретін төлем шлюзі пайдаланылады.
Мобильді SDK
Мобильді құрылғыларды төлем шлюзімен байланыстыру үшін мобильді қолданбаға банк картасының мәліметтерін енгізу пішінін ендіру үшін біздің Мобильді SDK жиынтығын пайдалануыңызға болады.
Мобильді SDK жиынтығы төлем шлюзінің API экожүйесінің құрамдасы болып табылады және мобильді құрылғылардан онлайн-төлемдерді қабылдауға мүмкіндік береді. Мобильді SDK төлемдерді жасау пішінін сіздің iOS немесе Android жүйелерінің негізіндегі қолданбаңызға ендіруге мүмкіндік береді. Мобильді SDK төлем мәліметтерін енгізу процесінің қауіпсіздігін қамтамасыз етеді. Бұл мақалада бірінші төлемді алу қадамдары көрсетілген. Сіз реттеген барлық төлем әдістері клиенттеріңізге қолжетімді болады.
Орындау әдісі:
- Пайдаланушы мобильді қолданбаңызда төлеу әдісін таңдайды, қажетті деректерді енгізеді және төлем жасау қадамына өтеді;
- Мобильді қолданба seToken (өздігінен шифрланған токен) токенін жасап, төлем деректерін шифрлайды;
- Мобильді қолданба рұқсат алу үшін seToken токенін төлем шлюзіне жібереді.
iOS
SDK жиынтығы қолдау көрсететін төлем әдістері:
Төлем әдісі | Қолдау көрсету |
---|---|
Банк картасы | Иә |
Байлам (сақталған банк картасы) | Иә |
Apple Pay | Иә |
-
Талаптар:
iOS 10.0+
Android
SDK жиынтығы қолдау көрсететін төлем әдістері:
Төлем әдісі | Қолдау көрсету |
---|---|
Банк картасы | Иә |
Байлам (сақталған банк картасы) | Иә |
Google Pay | Иә |
-
Талаптар:
Android 5.0+
Қосу қадамдары
Төлемдерді мобильді қолданба арқылы қабылдау үшін төмендегі әрекеттерді орындау қажет:
- Интернет-дүкеніңізді банкте тіркеу;
- Сатушы консоліне қатынасу үшін сынақ есептік жазба деректерін алу;
- API әдістерін шақыру үшін сынақ есептік жазба деректерін алу;
- Төлем шлюзімен сынақ режимде байланыстыру;
- Сынақ режимде байланыстыру әдісі реттелген соң, қадамның орындалғанын тексеру үшін банктің қолдау көрсету қызметіне хабарласыңыз;
- Сатушы консоліне қатынасу үшін белсенді есептік жазба деректерін алу;
- API әдістерін шақыру үшін белсенді есептік жазба деректерін алу;
- Банкіңізбен жүйеңіздің белсенді режимге ауысуы туралы келісіңіз;
- Банк өкілімен интернет-дүкеннің белсенді режимде жұмыс істеуге дайындығы жөніндегі келісімшартқа қол қойыңыз;
- Белсенді режимде жұмысты бастау.
SDK арқылы төлеу процесі
SDK арқылы төлеу әдісі төмендегі диаграммада көрсетілген
1-қадам. Клиент тапсырысты мобильді қолданбада тіркеп, mdOrder
(rest/register.do) алады. Байламдарды пайдалану қажет болса, міндетті түрде clientId
параметрін беру керек.
2-қадам. Мобильді қолданба mdOrder
жіберу арқылы мобильді SDK жиынтығын іске қосады.
3-қадам. Мобильді SDK getSessionStatus.do әдісі арқылы тапсырыс туралы барлық қажетті ақпаратты алады.
4-қадам. Мобильді SDK карта деректерін енгізу пішінін көшіреді (байламдар мен Apple Pay жүйесі арқылы орындалуы мүмкін).
5-қадам. Клиент қажетті төлем әдісін таңдайды (карта, байлам, токендер арқылы төлеу).
6-қадам. SDK төлемге сұрауды жібереді.
* a. SDK карта арқылы төлеу үшін шлюз әдісін қолданады (processform.do). Картаны сақтау опциясы таңдалса, bindingNotNeeded=false
беріледі, таңдалмаса – bindingNotNeeded=true
беріледі (міндетті түрде false
болуы керек, параметрді елемеуге болмайды).
* b. SDK байлам арқылы төлеу үшін шлюз әдісін қолданады (processBindingForm.do). Осында тапсырыс нөмірі mdOrder
арқылы емес, orderId
арқылы берілетінін ескеріңіз.
* c. SDK токен арқылы төлеу үшін (/applepay/payment.do
немесе /google/payment.do
) шлюз әдісін қолданады.
7-қадам. Жауап ретінде төлем мәліметтері келеді. 7a-қадам. Төлем жасалса, күйін тексеру тармағына өтеміз (21-т.). 7b-қадам. 3DS2 талап етілсе, келесі тармаққа өтеміз.
8-қадам. SDK жиынтығы 3DS2 SDK іске қосады.
9-қадам. SDK құрылғы туралы шифрланған деректерді алады.
10-қадам. SDK шлюзді қайта шақырады, бірақ осыған шифрланған деректерді қосады.
11a-қадам. Frictionless жағдайында, процесс сәтті/сәтсіз төлеммен аяқталуы мүмкін, осы кезде күйін тексеру тармағына өту қажет. 11b-қадам. Challenge Flow жағдайында, ACS серверіне өту үшін SDK жиынтығы барлық қажетті деректерді 3DS2 SDK жиынтығына өткізу үшін алады.
12-қадам. SDK растау пішімі үшін 3DS2 SDK жиынтығын шақырады.
13-қадам. Бастапқы пішінді алу үшін 3DS2 SDK жиынтығы ACS серверімен байланысады.
14-қадам. Клиент растау кодын енгізеді.
15-қадам. 3DS2 SDK жиынтығы растау кодын ACS серверіне жібереді.
16-қадам. ACS операцияның сәтті не сәтсіз аяқталғаны туралы хабарлайды.
17-қадам. 3DS2 SDK хабарландырумен SDK жиынтығын шақырады.
18-қадам. SDK finish3dsVer2PaymentAnonymous.do
төлем шлюзі әдісін қолданады. Әдістің сипаттамасын осында қараңыз.
19-қадам. Төлем шлюзі қаражатты есептен шығарады.
20-қадам. SDK төлем шлюзінен жауап алады.
21-қадам. SDK тапсырыс күйін тексереді. Күйінде redirect
ЖӘНЕ remainingSecs > 0
өрісі БОЛМАСА, тағы бір рет төлем жасап көруге болады.
22-қадам. SDK callback хабарландыруына жіберу үшін тапсырыс бойынша қорытынды деректерді жинайды (операцияның, атрибуттарының сәтті-сәтсіз болғаны туралы деректер).
23-қадам. SDK мобильді қолданбаға төлемнің іске асырылғаны туралы хабарлайды.
Төлемдерді өңдеу
Төлем шлюзіндегі барлық төлемдер арнайы нысандар — Тапсырыстар ретінде өңделеді. Операцияны орындау үшін Тапсырысты тіркеп, авторизация деректерін жіберу керек.
1-қадам. Клиент өз құрылғысындағы мобильді қолданбада (МҚ) төлем жасауды бастайды;
2-қадам. Мобидьді қолданба тіркеу сұрауын дүкеннің мобильді қолданба бэкендіне (МҚБ) жібереді;
3-қадам. Дүкеннің мобильді қолданба бэкенді (МҚБ) тапсырысты тіркеу сұрауын төлем шлюзіне жібереді;
4-қадам. Төлем шлюзі тапсырысты тіркеп, бірегей идентификаторды жасайды;
5-қадам. Төлем шлюзі 3-қадамда сұрау бойынша алынған жауап ретінде тапсырыстың бірегей идентификаторын дүкеннің мобильді қолданба бэкендіне қайтарады;
6-қадам. Дүкеннің мобильді қолданба бэкенді идентификаторды мобильді қолданбаға жібереді;
7-қадам. Мобильді қолданбада төлем деректерін енгізу пішіні көрсетіледі;
8-қадам. Клиент төлем деректерін енгізеді;
9-қадам. Мобильді қолданба шифрланған хабарды жасайды;
10-қадам. Мобидьді қолданба шифрланған хабарды дүкеннің мобильді қолданба бэкендіне жібереді;
11-қадам. Дүкеннің мобильді қолданба бэкенді шифрланған хабарды төлемді жасау сұрауымен бірге төлем шлюзіне жібереді;
12-қадам. Төлем шлюзі шифрланған хабарды ашып, стандартты тексерулерді бастайды;
13-қадам. Төлем шлюзі 11-қадамда алынған сұрауға жауапты жібереді.
14-қадам. Дүкеннің мобильді қолданба бэкенді мобильді қолданбада банк-эмитентінің ACS серверіне қайта бағыттайды;
15-қадам. Мобильді қолданба банк-эмитентінің ACS серверінде аутентификация бетін талап етеді;
16-қадам. Банк-эмитентінің ACS сервері клиентке аутентификация бетін жібереді;
17-қадам. Клиент аутентификация деректерін енгізеді;
18-қадам. Банк-эмитентінің ACS сервері карта иесінің аутентификациясын орындайды;
19-қадам. Банк-эмитентінің ACS сервері мобильді қолданбада PARes қоса алғанда, төлем шлюзіне қайта бағыттайды;
20-қадам. Аутентификация сәтті өтсе, төлем шлюзі тапсырысқа рұқсат береді;
21-қадам. Төлем шлюзі мобильді қолданбада 2-қадамда алынған интернет-дүкеннің соңғы URL-мекенжайына қайта бағыттайды;
22-қадам. Мобильді қолданба дүкеннің мобильді қолданба бэкендінен тапсырыс туралы ақпаратты сұрайды;
23-қадам. Дүкеннің мобильді қолданба бэкенді төлем шлюзінен тапсырыс туралы ақпаратты талап етеді;
24-қадам. Төлем шлюзі дүкеннің мобильді қолданба бэкендіне тапсырыс туралы ақпаратты жібереді;
25-қадам. Дүкеннің мобильді қолданба бэкенді тапсырыс туралы ақпаратты мобильді қолданбаға жібереді;
26-қадам. Мобильді қолданба орындалған әрекеттердің нәтижелерін көрсетеді.
1-қадам. Тапсырысты тіркеу
Тапсырысты тіркеу үшін сервер-сервер байланысы арқылы register.do
сұрауын жіберу керек:
Сұрау параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
userName AN..30 Шартты түрде міндетті |
Дүкенді тіркеу кезінде алынған сатушының жүйеге кіру мәліметтері. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), userName параметрін жіберудің қажеті жоқ. |
merchant_api_username |
password AN..30 Шартты түрде міндетті |
Дүкенді тіркеу кезінде алынған сатушының құпиясөзі. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), password параметрін жіберудің қажеті жоқ. |
merchant_api_password |
token AN..30 Шартты түрде міндетті |
Тапсырысты тіркеу үшін пайдалануға болатын ашық кілт. Аутентификация кезінде пайдаланушы аты мен құпиясөз қолданылса, token параметрін жіберудің қажеті жоқ. |
|
orderNumber AN..32 Шартты түрде міндетті |
Дүкен жүйесіндегі тапсырыстың нөмірі (идентификаторы). Төлем шлюзінде әр дүкен үшін бірегей болады. Тапсырыс нөмірін төлем шлюзі жасаған жағдайда, осы параметрді жіберудің қажеті жоқ. | 1 |
amount N..12 Міндетті |
Минималды бірлікпен (мысалы, тиынмен) берілген төлем сомасы. | 12345 |
currency N3 Міндетті емес |
ISO 4217 төлем валютасының коды. Көрсетілмеген жағдайда, әдепкі мән пайдаланылады – 978 . |
810 |
returnUrl ANS..512 Міндетті |
Төлем сәтті аяқталған жағдайда, клиент қайта бағытталатын URL-мекенжайы. URL-мекенжайы, пайдаланылатын протоколды қоса алғанда, толық көрсетілуі керек. | https://www.shop.com/?result=return |
failUrl ANS..512 Міндетті емес |
Төлем сәтсіз аяқталған жағдайда, клиент қайта бағытталатын URL-мекенжайы. URL-мекенжайы, пайдаланылатын протоколды қоса алғанда, толық көрсетілуі керек. | https://www.shop.com/?result=fail |
description ANS..512 Міндетті емес |
Тапсырыстың сипаттамасы. Қаржылық есептемеге қосу үшін банк процессингінде осы өрістің тек бірінші 24 таңбасы көрсетіледі. | Товар интернет-магазина |
language A2 Міндетті емес |
ISO 639-1 Alpha-2 түріндегі тіл коды. Параметр көрсетілмесе, мерчант параметрлерінде әдепкі бойынша таңдалған тіл пайдаланылады. | en |
pageView ANS..20 Міндетті емес |
Сатып алушыға көрсетілетін төлем бетінің префиксі | mobile |
clientId ANS..255 Шартты түрде міндетті |
Дүкен жүйесіндегі сатып алушының идентификаторы. Байламдар функционалы үшін пайдаланылады. Байлам арқылы төлем жасаған кезде осы параметрді міндетті түрде жіберу керек, кері жағдайда, төлем сәтсіз аяқталады. | 123 |
merchantLogin AN..255 Міндетті емес |
Тапсырысты еншілес сатушы атынан тіркеу үшін оның логинін көрсету керек. | merchant_1 |
jsonParams Блок Міндетті емес |
Тапсырыстың қосымша параметрлерін жіберу блогы. Толығырақ. | {"backUrl":"https://ya.com/"} |
jsonParams.name ANS..255 Шартты түрде міндетті |
||
jsonParams.value ANS..255 Шартты түрде міндетті |
||
bindingId AN..255 Міндетті емес |
Бұрыннан бар байламның идентификаторы. Орнатылса, тапсырыс үшін төлемді тек байлам арқылы жасауға болады, ал төлем бетінде тек CVC кодын енгізу керек. | |
features ANS...255 Міндетті емес |
Операцияның арнайы параметрлері. |
FORCE_FULL_TDS , VERIFY
|
email ANS..40 Міндетті емес |
Клиенттің электрондық поштасы. | customer@mail.com |
phone ANS..12 Міндетті емес |
Клиенттің телефон нөмірі. | 79991234567 |
Жауап параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
errorCode N1 Міндетті |
Қате коды | 2 |
error AN..512 Шартты түрде міндетті |
Қате коды | No order found |
errorMessage AN..512 Шартты түрде міндетті |
Қате коды | No order found |
info AN..512 Шартты түрде міндетті |
Төлем жасау әрекетінің нәтижесі | Payment processed, redirecting... |
redirect AN..512 Шартты түрде міндетті |
Төлемнен кейінгі қайтару мекенжайы | https://merchant-site.com/ |
termUrl AN..512 Шартты түрде міндетті |
ACS серверінде аутентификация қажет болмағанда, талап етілмейді. | https://3dsec.berekebank.kz/payment/rest/finish3ds.do?lang=en |
acsUrl AN..512 Шартты түрде міндетті |
ACS серверінде аутентификация қажет болмағанда, талап етілмейді. | https://web.rbsuat.com/acs/auth/start.do |
paReq AN..512 Шартты түрде міндетті |
ACS серверінде аутентификация қажет болмағанда, талап етілмейді. | eJxVUttygjAQ/RWGdwzBBNRZ41jpdePN85A3vC4DlVUoZrGTdKMpjLquJv0s... |
Сұрау мысалдары
Bash
curl -X POST "__API_PREFIX__/rest/register.do?
userName=username&
password=password&
orderNumber=1&
amount=12345&
currency=978&
returnUrl=https%3A%2F%2Fwww.merchant.com&
description=description&
language=en&
clientId=1&
jsonParams=%7B%22name%22%3A%20%22value%22%7D&
features=VERIFY"
Node.js
const request = require("request")
request.post({
url: "__API_PREFIX__/rest/register.do",
form: {
userName: "username",
password: "password",
orderNumber: "1",
amount: 1234,
currency: 978,
returnUrl: "https://www.merchant.com",
description: "description",
language: "en",
clientId: "1",
features: "VERIFY"
}
})
PHP
<?php
$data = array(
"userName" => "username",
"password" => "password",
"orderNumber" => "1",
"amount" => 1234,
"currency" => 978,
"returnUrl" => "https://www.merchant.ru",
"description" => "description",
"language" => "en",
"clientId" => "1",
"features" => "VERIFY"
);
$data_string = json_encode($data);
$ch = curl_init("__API_PREFIX__/rest/register.do");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
Жауап мысалы
{
"orderId":"70906e55-7114-41d6-8332-4609dc6590f4",
"formUrl":"__API_PREFIX__/merchants/test/payment_ru.html?mdOrder=70906e55-7114-41d6-8332-4609dc6590f4"
}
2-қадам. Шифрланған хабарды алу
Шифрланған хабарды алу үшін Mobile SDK жиынтығын пайдалану қажет:
3-қадам. Авторизация үшін карта мәліметтерін жіберу
Авторизация үшін карта мәліметтерін жіберу кезінде сервер-сервер байланысындағы paymentOrder.do
сұрауы пайдаланылады:
Сұрау параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
userName AN..30 Міндетті |
Дүкенді тіркеу кезінде алынған сатушының жүйеге кіру мәліметтері. | merchant_api_username |
password AN..30 Міндетті |
Дүкенді тіркеу кезінде алынған сатушының құпиясөзі. | merchant_api_password |
seToken AN..30 Міндетті |
Карта мәліметтері бар шифрланған хабар | Dduur6hWg9dfp9aXos1QC8s/C6ZVujOc3qySy0VJEP1... |
language A2 Міндетті |
ISO 639-1 Alpha-2 түріндегі тіл коды. Параметр көрсетілмесе, мерчант параметрлерінде әдепкі бойынша таңдалған тіл пайдаланылады. | en |
ip AN..30 Міндетті емес |
Төлеушінің IP-мекенжайы | 255.255.255.1 |
email ANS..40 Міндетті емес |
Клиенттің электрондық поштасы. | customer@mail.com |
bindingNotNeeded boolean Міндетті емес |
Операциядан кейін байлам жасаудың қажеттілігі | true |
jsonParams Блок Міндетті емес |
Тапсырыстың қосымша параметрлер блогы. Қосымша ақпарат. | {"email":"ivanov@ivan.com", "phone":"9001234567"} |
jsonParams.name ANS..255 Шартты түрде міндетті |
||
jsonParams.value ANS..255 Шартты түрде міндетті |
Жауап параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
errorCode N1 Міндетті |
Қате коды | 2 |
error AN..512 Шартты түрде міндетті |
Қате коды | No order found |
errorMessage AN..512 Шартты түрде міндетті |
Қате коды | No order found |
info AN..512 Шартты түрде міндетті |
Төлем жасау әрекетінің нәтижесі | Payment processed, redirecting... |
redirect AN..512 Шартты түрде міндетті |
Төлемнен кейінгі қайтару мекенжайы | https://merchant-site.com/ |
termUrl AN..512 Шартты түрде міндетті |
ACS серверінде аутентификация қажет болмағанда, талап етілмейді. | https://3dsec.berekebank.kz/payment/rest/finish3ds.do?lang=en |
acsUrl AN..512 Шартты түрде міндетті |
ACS серверінде аутентификация қажет болмағанда, талап етілмейді. | https://web.rbsuat.com/acs/auth/start.do |
paReq AN..512 Шартты түрде міндетті |
ACS серверінде аутентификация қажет болмағанда, талап етілмейді. | eJxVUttygjAQ/RWGdwzBBNRZ41jpdePN85A3vC4DlVUoZrGTdKMpjLquJv0s... |
Сұрау мысалдары
Bash
curl -X POST "__API_PREFIX__/rest/paymentorder.do?
userName=username&
password=password&
MDORDER=f1dc9771-7244-7fea-84f4-58905e249650&
seToken=530mMcGg36q703D4LrKicakmVzwyPPJ0LpXU4iPS...ZY3NZyKrZVNM&
language=en"
Node.js
const request = require("request")
request.post({
url: "__API_PREFIX__/rest/paymentorder.do",
form: {
userName: "username",
password: "password",
MDORDER: "f1dc9771-7244-7fea-84f4-58905e249650",
seToken: "530mMcGg36q703D4LrKicakmVzwyPPJ0LpXU4iPSZY3NZyKrZVNM...",
language: "en"
}
})
PHP
<?php
$data = array(
"userName" => "username",
"password" => "password",
"MDORDER" => "f1dc9771-7244-7fea-84f4-58905e249650",
"seToken" => "530mMcGg36q703D4LrKicakmVzwyPPJ0LpXU4iPSZY3NZyKrZVNM...",
"language": "en"
);
$ch = curl_init("__API_PREFIX__/rest/paymentorder.do");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
Жауап мысалы
{
"errorCode":0,
"info":"Ваш платёж обработан, происходит переадресация...",
"acsUrl":"https://web.rbsuat.com/acs/auth/start.do",
"termUrl":"__API_PREFIX__/rest/finish3ds.do?lang=en",
"paReq":"eJxVUttygjAQ/RWGdwzBBNRZ41jpdUZ0tHbqYyShYCvQAB3L1zdRaWue9uzl7O7ZwOR4+LC+pKqyIh/buOfalszjQmT529=..."
}
4-қадам. Тапсырыстың күйі туралы ақпаратты алу
Тіркелген тапсырыстың күйі туралы ақпаратты алу үшін сервер-сервер байланысындағы getOrderStatusExtended.do
сұрауын пайдаланыңыз:
Сұрау параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
userName AN..30 Шартты түрде міндетті |
Дүкенді тіркеу кезінде алынған сатушының жүйеге кіру мәліметтері. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), userName параметрін жіберудің қажеті жоқ. |
merchant_api_username |
password AN..30 Шартты түрде міндетті |
Дүкенді тіркеу кезінде алынған сатушының құпиясөзі. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), password параметрін жіберудің қажеті жоқ. |
merchant_api_password |
token AN..30 Шартты түрде міндетті |
Тапсырысты тіркеу үшін пайдалануға болатын ашық кілт. Аутентификация кезінде пайдаланушы аты мен құпиясөз қолданылса, token параметрін жіберудің қажеті жоқ. |
567uijkfdjv12erfd9vjn |
orderId ANS36 Шартты түрде міндетті |
Төлем шлюзіндегі тапсырыстың бірегей идентификаторы | d9378a7a-5215-7eab-9d94-d5910007cc4a |
orderNumber AN..32 Шартты түрде міндетті |
Дүкен жүйесіндегі тапсырыстың бірегей нөмірі (идентификаторы). | order_15 |
language A2 Шартты түрде міндетті |
ISO 639-1 Alpha-2 түріндегі тіл коды. Параметр көрсетілмесе, мерчант параметрлерінде әдепкі бойынша таңдалған тіл пайдаланылады. | en |
Жауап параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
orderNumber AN..32 Шартты түрде міндетті |
Дүкен жүйесіндегі тапсырыстың нөмірі (идентификаторы). | |
orderStatus N2 Шартты түрде міндетті |
Осы параметрдің мәні төлем шлюзіндегі тапсырыстың күйін анықтайды. | |
actionCode N3 Міндетті |
Жауап коды. | |
actionCodeDescription AN..512 Міндетті |
Қате кодының сипаттамасы language сұрауының параметрлеріндегі тілде беріледі. |
|
errorCode N1 Міндетті |
Қате коды | 2 |
errorMessage AN..512 Шартты түрде міндетті |
Қате коды | No order found |
amount N..20 Міндетті |
Минималды бірлікпен (мысалы, центпен) берілген төлем сомасы. | |
currency N3 Шартты түрде міндетті |
ISO 4217 төлем валютасының коды. | |
date ANS Міндетті |
Тапсырысты тіркеу күні. | |
orderDescription AN..512 Шартты түрде міндетті |
Тіркеу кезінде көрсетілген тапсырыстың сипаттамасы | |
ip ANS..39 Міндетті |
Төлеушінің IP-мекенжайы. | |
authRefNum AN..24*Шартты түрде міндетті* |
Төлемді тіркеу кезінде берілетін төлем авторизациясының есептік нөмірі. | |
refundedDate ANS Шартты түрде міндетті |
Қаражатты қайтару күні мен уақыты. | |
cardAuthInfo Блок Шартты түрде міндетті |
secureAuthInfo құрылымы мен басқа параметрлері бар |
|
cardAuthInfo.maskedPan NS..19 Шартты түрде міндетті |
Төлемді жасау үшін пайдаланылатын жасырылған карта нөмірі. | |
cardAuthInfo.expiration N6 Шартты түрде міндетті |
Келесі пішімдегі картаның жарамдылық мерзімі: ЖЖЖЖАА | 201912 |
cardAuthInfo.cardholderName A..64 Шартты түрде міндетті |
Карта иесінің аты | John Doe |
cardAuthInfo.approvalCode AN6 Төлем авторизациясының коды |
||
cardAuthInfo.chargeback A..5 Шартты түрде міндетті |
Банк әрекеттерінен кейін төлемнің клиентке қайтарылуы: true /false
|
|
cardAuthInfo.paymentSystem N..10 Шартты түрде міндетті |
Төлем жүйесінің атауы: VISA/MASTERCARD/AMEX/JCB/CUP/MIR | |
cardAuthInfo.product AN..255 Міндетті |
Корпоративті карталар туралы қосымша ақпарат | |
cardAuthInfo.paymentWay AS..14 Шартты түрде міндетті |
Төлеу әдісі (карта мәліметтерін енгізу, байлам арқылы төлем жасау және т.б.). | |
cardAuthInfo.secureAuthInfo Блок |
Осы элементте eci және threeDSInfo элементтері бар. |
|
cardAuthInfo.secureAuthInfo.eci N..4 Шартты түрде міндетті |
Электрондық коммерциялық көрсеткіш. | |
cardAuthInfo.secureAuthInfo.threeDSInfo Блок Шартты түрде міндетті |
Осы элемент cavv және xid параметрлерінен тұрады. |
|
cardAuthInfo.secureAuthInfo.threeDSInfo.xid ANS..80 Шартты түрде міндетті |
Транзакцияның ECI-идентификаторы | MDAwMDAwMDEzODM4MTk0MzAzMjM=" |
cardAuthInfo.secureAuthInfo.threeDSInfo.cavv ANS..200*Шартты түрде міндетті* |
Карта иесінің аутентификациясын тексеру мәні. | |
bindingInfo Блок Шартты түрде міндетті |
Осы элементтің байлам туралы ақпараты бар | |
clientId ANS..255 Шартты түрде міндетті |
Тапсырысты тіркеу кезінде берілген дүкен жүйесіндегі сатып алушының идентификаторы | |
bindingId ANS..255 Шартты түрде міндетті |
Тапсырысты жасау кезінде жасалған немесе төлем жасау үшін пайдаланылатын байлам идентификаторы | |
authDateTime ANS Шартты түрде міндетті |
Авторизацияның күні/уақыты | |
terminalId AN..10 Шартты түрде міндетті |
Терминал идентификаторы | |
paymentAmountInfo Блок Шартты түрде міндетті |
Осы элементте сомалар бойынша ақпарат бар. | |
approvedAmount N..20 Шартты түрде міндетті |
Ұстап қалу сомасы (екі кезеңді төлемдерде пайдаланылады) | |
depositedAmount N..20 Шартты түрде міндетті |
Есептен шығару үшін расталған сома | |
refundedAmount N..20 Шартты түрде міндетті |
Қайтарылатын сома | |
paymentState A..10 Шартты түрде міндетті |
Төлемнің күйі | |
feeAmount N..20 Шартты түрде міндетті |
Комиссия сомасы. | |
bankInfo Блок Шартты түрде міндетті |
Осы элементте картаның банк-эмитенті туралы ақпарат бар | |
bankInfo.bankName A..200 Шартты түрде міндетті |
Банк-эмитент атауы. | |
bankCountryCode AN..4 Шартты түрде міндетті |
Эмитент банктің ел коды. | |
bankCountryName AN..160 Шартты түрде міндетті |
language сұрау параметрінде берілген тілде немесе, тіл көрсетілмеген жағдайда, пайдаланушы тілінде берілген банк-эмитент елінің атауы |
|
payerData Блок Шартты түрде міндетті |
Осы элементте төлеуші туралы ақпарат бар | |
email AN..255 Шартты түрде міндетті |
Клиенттің электрондық поштасы. |
Сұрау мысалдары
Bash
curl -X POST "__API_PREFIX__/rest/getOrderStatusExtended.do?
orderId=b9054496-c65a-4975-9418-1051d101f1b9&
language=en"
Node.js
const request = require("request")
request.post({
url: "__API_PREFIX__/rest/getOrderStatusExtended.do",
form: {
orderId: "b9054496-c65a-4975-9418-1051d101f1b9",
language: "en"
}
})
PHP
<?php
$data = array(
"orderId" => "b9054496-c65a-4975-9418-1051d101f1b9",
"language" => "en"
);
$ch = curl_init("__API_PREFIX__/rest/getOrderStatusExtended.do");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
Жауап мысалы
{
"expiration":"201512",
"cardholderName":"NIKOLA TESLA",
"depositAmount":789789,
"currency":"978",
"approvalCode":"123456",
"authCode":2,
"clientId":"69",
"bindingId":"07a90a5d-cc60-4d1b-a9e6-ffd15974a74f",
"ErrorCode":"0",
"ErrorMessage":"Success",
"OrderStatus":2,
"OrderNumber":"ordernumber_42",
"Pan":"411111**1111",
"Amount":789789
}
Тапсырыстан бас тарту (reversal)
Тапсырыстан бас тарту үшін сервер-сервер байланысындағы reverse.do
сұрауын пайдаланыңыз:
Сұрау параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
userName AN..30 Шартты түрде міндетті |
Дүкенді тіркеу кезінде алынған сатушының жүйеге кіру мәліметтері. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), userName параметрін жіберудің қажеті жоқ. |
merchant_api_username |
password AN..30 Шартты түрде міндетті |
Дүкенді тіркеу кезінде алынған сатушының құпиясөзі. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), password параметрін жіберудің қажеті жоқ. |
merchant_api_password |
orderId ANS36 Шартты түрде міндетті |
Төлем шлюзіндегі тапсырыстың бірегей идентификаторы | d9378a7a-5215-7eab-9d94-d5910007cc4a |
jsonParams Блок Міндетті емес |
Тапсырыстың қосымша параметрлерін жіберу блогы. Толығырақ. | {"email":"ivanov@ivan.com", "phone":"9001234567"} |
jsonParams.name ANS..255 Шартты түрде міндетті |
||
jsonParams.value ANS..255 Шартты түрде міндетті |
||
language A2 Міндетті емес |
ISO 639-1 Alpha-2 түріндегі тіл коды. Параметр көрсетілмесе, мерчант параметрлерінде әдепкі бойынша таңдалған тіл пайдаланылады. | en |
Жауап параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
errorCode N3 Міндетті |
Қате коды | 2 |
errorMessage AN..512 Шартты түрде міндетті |
Қате сипаттамасы | No order found |
Сұрау мысалдары
Bash
curl -X POST "__API_PREFIX__/rest/reverse.do?
orderId=b9054496-c65a-4975-9418-1051d101f1b9&
language=en"
Node.js
const request = require("request")
request.post({
url: "__API_PREFIX__/rest/reverse.do",
form: {
orderId: "b9054496-c65a-4975-9418-1051d101f1b9",
language: "en"
}
})
PHP
<?php
$data = array(
"orderId" => "b9054496-c65a-4975-9418-1051d101f1b9",
"language" => "en"
);
$ch = curl_init("__API_PREFIX__/rest/reverse.do");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
Жауап мысалы
{
"errorCode":"0",
"errorMessage":"Success"
}
Тапсырыс бойынша қаражатты қайтару (refund)
Қайтару үшін сервер-сервер байланысындағы refund.do
пайдаланыңыз:
Сұрау параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
userName AN..30 Шартты түрде міндетті) |
Дүкенді тіркеу кезінде алынған сатушының жүйеге кіру мәліметтері. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), userName параметрін жіберудің қажеті жоқ. |
merchant_api_username |
password AN..30 Шартты түрде міндетті) |
Дүкенді тіркеу кезінде алынған сатушының құпиясөзі. Аутентификация үшін пайдаланушы аты мен құпиясөз орнына токен пайдаланылса (token параметрі), password параметрін жіберудің қажеті жоқ. |
merchant_api_password |
orderId ANS36 Шартты түрде міндетті) |
Төлем шлюзіндегі тапсырыстың бірегей идентификаторы | d9378a7a-5215-7eab-9d94-d5910007cc4a |
amount N..12 Міндетті |
Минималды бірлікпен берілген қайтару сомасы. | 8800 |
jsonParams Блок Міндетті емес |
Тапсырыстың қосымша параметрлерін жіберу блогы. Толығырақ. | {"email":"ivanov@ivan.com", "phone":"9001234567"} |
jsonParams.name ANS..255 Шартты түрде міндетті |
||
jsonParams.value ANS..255 Шартты түрде міндетті |
||
language A2 Міндетті емес |
ISO 639-1 Alpha-2 түріндегі тіл коды. Параметр көрсетілмесе, мерчант параметрлерінде әдепкі бойынша таңдалған тіл пайдаланылады. | en |
Жауап параметрлері
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
errorCode N3, Міндетті |
Қате коды | 2 |
errorMessage AN..512 Шартты түрде міндетті |
Қате сипаттамасы | No order found |
Арнайы сипаттарды пайдалану (features)
Операцияларды орындау үшін арнайы параметрлерді пайдалануға болады:
Арнайы параметр | Сипаттама |
---|---|
AUTO_PAYMENT |
Төлем карта иесінің аутентификациясынсыз жүзеге асырылады (CVC және 3D-Secure жоқ). Осындай төлемдерді жасау үшін сатушыда тиісті рұқсаттар болуы керек. |
FORCE_TDS |
3-D Secure қорғанысын пайдалану арқылы төлемді мәжбүрлі түрде орындау. Карта 3-D Secure қорғанысына қолдау көрсетпесе, транзакция өтпейді. |
FORCE_SSL |
SSL арқылы (3-D Secure қорғанысы жоқ) төлемді мәжбүрлі түрде орындау. |
FORCE_FULL_TDS |
3-D Secure арқылы аутентификацияны орындағаннан кейін, PaRes күйі тек Y болуы керек, бұл пайдаланушының сәтті аутентификациясын қамтамасыз етеді. Кері жағдайда, транзакция өтпейді. |
VERIFY |
Тапсырысты тіркеу сұрауынан кейін осы мәнді көрсеткен кезде, карта иесі оның шотынан қаражат алынбай тексеріледі. Верификация картаның өз иесінде екеніне көз жеткізуге және осыдан кейін төлемдер жасаған кезде бұл картадан аутентификация деректерін (CVC, 3D-Secure) тексермей, қаражатты есептен шығаруға мүмкіндік береді. Тіркелу сәтті аяқталған соң, тапсырыс бірден REVERSED (бас тартылды) күйіне өтеді. |
Сұрау мысалдары
Bash
curl -X POST "__API_PREFIX__/rest/refund.do?
amount=500&
currency=978&
language=en&
orderId=5e97e3fd-1d20-4b4b-a542-f5995f5e8208"
Node.js
const request = require("request")
request.post({
url: "__API_PREFIX__/rest/refund.do",
form: {
amount: "500",
currency: "978",
language: "en",
orderId: "5e97e3fd-1d20-4b4b-a542-f5995f5e8208"
}
})
PHP
<?php
$data = array(
"amount" => "500",
"currency" => "978",
"orderId" => "5e97e3fd-1d20-4b4b-a542-f5995f5e8208",
"language" => "en"
);
$ch = curl_init("__API_PREFIX__/rest/refund.do");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
Жауап мысалы
{
"errorCode": "0",
"errorMessage": "Success"
}
API арқылы 3DS2 тапсырысын аяқтау
API арқылы 3DS2 тапсырысын аяқтау үшін Finish3dsVer2PaymentAnonymous.do
әдісі пайдаланылады.
Сұрау параметрлері
Міндетті | Атау | Түрі | Сипаттама |
---|---|---|---|
Иә | threeDSServerTransId |
String | 3DS серверінде жасалған транзакцияның идентификаторы. |
Иә | threeDSSDK |
String | Ықтимал мәндері: true немесе false . Төлемнің 3DS SDK арқылы түсетінін көрсететін жалауша. |
Иә (SDK болса) | threeDSSDKAppId |
String | SDK бірегей идентификаторы. |
Иә (SDK болса) | threeDSSDKTransId |
String | SDK жиынтығындағы транзакцияның бірегей идентификаторы. |
Иә (SDK болса) | threeDSSDKEncData |
String | Құрылғы туралы шифрланған деректер. |
Иә (SDK болса) | threeDSSDKEphemPubKey |
String | Эфемерлі кілттің ортақ бөлігі. ACS серверімен сеансты орнату үшін қажет. |
Жауап параметрлері
Міндетті | Атау | Түрі | Сипаттама |
---|---|---|---|
Иә | threeDSServerTransId |
String | 3DS серверінде жасалған транзакцияның идентификаторы. |
Иә (SDK болса) | threeDSSDKKey |
String | Құрылғы деректерін шифрлау кілті. |
Иә (SDK болса) | threeDSAcsSignedContent |
String | SDK үшін қол қойылған мазмұн, мазмұнға ACS серверінің URL-мекенжайы кіреді. |
Иә (SDK болса) | threeDSDsTransID |
String | ХТЖ ауқымындағы транзакцияның бірегей идентификаторы. |
Иә (SDK болса) | threeDSSDKKey |
String | Құрылғы деректерін шифрлау кілті. |
Қосымша ақпарат
Features қолдану
Операцияларды орындау үшін арнайы параметрлерді пайдалануға болады:
Арнайы параметр | Сипаттама |
---|---|
AUTO_PAYMENT |
Төлем карта иесінің аутентификациясынсыз жүзеге асырылады (CVC және 3D-Secure жоқ). Осындай төлемдерді жасау үшін сатушыда тиісті рұқсаттар болуы керек. |
FORCE_TDS |
3-D Secure қорғанысын пайдалану арқылы төлемді мәжбүрлі түрде орындау. Карта 3-D Secure қорғанысына қолдау көрсетпесе, транзакция өтпейді. |
FORCE_SSL |
SSL арқылы (3-D Secure қорғанысы жоқ) төлемді мәжбүрлі түрде орындау. |
FORCE_FULL_TDS |
3-D Secure арқылы аутентификацияны орындағаннан кейін, PaRes күйі тек Y болуы керек, бұл пайдаланушының сәтті аутентификациясын қамтамасыз етеді. Кері жағдайда, транзакция өтпейді. |
VERIFY |
Тапсырысты тіркеу сұрауынан кейін осы мәнді көрсеткен кезде, карта иесі оның шотынан қаражат алынбай тексеріледі. Верификация картаның өз иесінде екеніне көз жеткізуге және осыдан кейін төлемдер жасаған кезде бұл картадан аутентификация деректерін (CVC, 3D-Secure) тексермей, қаражатты есептен шығаруға мүмкіндік береді. Тіркелу сәтті аяқталған соң, тапсырыс бірден REVERSED күйіне өтеді. |
jsonParams пайдалану
jsonParams пішімін тапсырыс туралы қосымша ақпаратты пайдалану және сақтау үшін беру мақсатында қолдануға болады. Қосымша параметрлерді төлем шлюзінің мерчант консолінде көруге болады.
Қосымша параметрлер келесі жолмен беріледі {"<name1>":"<value1>",...,"<nameN>":"<valueN>"}
Осы өрістер кейін тізілімде көрсетілуі үшін банк процессингіне жіберілуі мүмкін.
Сонымен қатар, қосымша ретінде келесі параметрлерді көрсетуге болады:
Аты Деректер түрі Міндеттілігі |
Сипаттама | Мысал |
---|---|---|
email ANS..255 Шартты түрде міндетті |
Төлем бетінде көрсетілетін электрондық пошта. Сатушы параметрлерінде клиенттен хабарландыруларды алу параметрі таңдалған болса, клиенттің электрондық поштасын көрсету керек. | {"email": "client_mail@email.com"} |
phone AN..11 Міндетті) |
Клиенттің телефон нөмірі – төлем бетінде көрсетіледі | {"phone": "9001234567"} |
backToShopUrl ANS..255 Міндетті емес) |
Сатып алушыға интернет-дүкенге оралуға мүмкіндік беретін түймені көрсету үшін осы параметрде дүкеннің мекенжайын көрсету қажет. | {"backToShopUrl": "http://shop.com"} |
backToShopName ANS..255 Шартты түрде міндетті |
Сатып алушыға интернет-дүкенге оралуға мүмкіндік беретін түйменің атауы (backToShopUrl параметрі пайдаланылған жағдайда) |
{"backToShopName": "Cancel"} |
Тапсырыстың ықтимал күйлері (orderStatus)
Мәні | Сипаттама |
---|---|
0 |
Тапсырыс тіркелген, бірақ төленбеген |
1 |
Алдын ала авторизацияланған сома ұсталған (екі кезеңді төлемдер үшін) |
2 |
Тапсырыс сомасының толық авторизациясы орындалды |
3 |
Авторизациядан бас тартылды |
4 |
Тапсырыс қайтарылды |
5 |
Банк-эмитентінің ACS сервері арқылы авторизация іске қосылды |
6 |
Авторизация орындалмады |
errorCode мәндері
Мәні | Сипаттама |
---|---|
0 |
Сұрау қатесіз өңделді. |
1 |
orderId немесе orderNumber күтілуде |
5 |
Кіру рұқсаты жоқ. |
5 |
Пайдаланушы құпиясөзді өзгертуі керек. |
6 |
Тапсырыс табылмады. |
7 |
Жүйелік қате. |
Қауіпсіздік талаптары
Осы құжатта сипатталған функциялар қауіпсіздік талаптарына сәйкес орындалуы керек:
- Карта мәліметтерін ашық түрде жіберуге қатаң тиым салынады;
- Шифрлау клиент құқрылғысында орындалуы тиіс;
- Шифрланған хабарларды төлемді жасағаннан кейін сақтауға және/немесе қайта пайдалануға тиым салынады.
- Картаны сақтау PCI-DSS талаптарына сәйкес орындалуы тиіс. Байлам жасау үшін сақталатын карта мәліметтері (тиісті идентификаторлар) төлем шлюзінде сақталады.
- 3DSec аутентификациясы үшін эмитент ACS серверінің веб-парақшасы клиенттерге мобильді платформаның WebView көрінісі арқылы көрсетіледі. ACS бетінде сақталуы мүмкін мекенжай жолағының, сондай-ақ, белсенді элементтердің URL шақырулары өшірілуі керек;
PCI DSS қауіпсіздік талаптары
PCI DSS құжаттамасында шифрланған хабарларды пайдалану жолы төмендегідей сипатталады:
яғни, төлем деректерін үшінші тараптар өңдейді, бірақ дүкен сайты да карта мәліметтерінің қауіпсіздігі үшін жауапты болады.
Стандарттарға сәйкес келуі үшін, интернет-дүкен SAQ-EP талаптарына сай болып, тоқсан сайын ASV растауы алуы керек. Өзге талаптар қойылмайды.
1: Әдепкі бойынша, банк процессингіне келесі өрістер жіберіледі:
orderNumber
– дүкен жүйесіндегі тапсырыс идентификаторы,
description
– тапсырыс сипаттамасы (ең көбі, 24 таңба, рұқсат етілмеген таңбалар: %
, +
, күймешені қайтару \r
және жолды түсіру \n
).