Призначення протоколу
Протокол призначений для взаємодії з сервером антіфрода. Сервер обробляє запити і відправляє відповіді в форматі JSON. Запит відправляється через HTTP POST.
Дані передаються в кодуванні utf-8
Авторизація
Авторизація мерчанта грунтується на наступних параметрах: login, md5 хеш від пароля і ip-адреси мерчанта
Валідація транзакції
4.1.1 Запит
Назва поля | Опис | Тип | Обов'язкове |
auth | авторизація | Auth | так |
order | опис замовлення | Order | так |
client | платник | Client | так |
receiverClient | отримувач (для P2P переказів) | ReceiverClient | так |
deliveryClient | отримувач | DeliveryClient | так |
bankData | банковскі дані про транзакцію | BankData | так |
{
auth: Auth,
order: Order,
client: Client,
receiverClient: ReceiverClient,
deliveryClient: DeliveryClient,
bankData: BankData
}
{
transactionId: 10245789,
reference: “HP232233”,
result: ”10”,
status: “OK”,
timestamp: 1414505799
}
Назва поля | Опис | Тип | Обов'язкове |
transactionId | номер транзакції в системі антифрод | Int | так |
reference | номер транзакції інтернет магазину | String(32) | так |
result | результат виконання запиту | Int | так |
status | статус транзакції | ENUM (OK, PENDING, FRAUD, UNKNOWN) | ні |
timestamp | дата та час відповіді у форматі UNIX-timestamp | Int | так |
score | Розрахований score для транзакции | Int | Нет |
5. Опис елементів протоколу
Параметри авторізаціі
Назва поля | Опис | Тип | Обов'язкове |
login | login мерчанта | String(10) | так |
passwordHash | MD5 хеш пароля | String(32) | так |
verify | Boolean | так |
Auth
{
login: “”,
passwordHash: “”,
verify: false
}
Інформація про замовлення
Назва поля | Опис | Тип | Обов'язкове |
product | масив продуктів | Array | ні |
aviaData | дані про авіапереліт | AviaData | ні |
extraInfo | додаткова інформація | String(256) | так |
reference | номер транзакції інтернет магазину | String(32) | так |
timestamp | валюта в цифровому форматі UNIX-timestamp | Integer | так |
currency | валюта в цифровом формате ISO 4217 | String(3) | так |
amount | сума платежу | Decimal(12,2) | так |
{
product: Array<Product>,
aviaData: AviaData,
extraInfo: “”,
reference: “HP232233”,
timestamp: 1414504233,
currency: “980”,
amount: 125.25
}
Інформація про авіапереліт
Назва поля | Опис | Тип | Обов'язкове |
departureDate | дата вильоту в форматі UNIT-timestamp | Int | так |
locationNumber | кількість точок перельоту (числове значення) | Int | так |
locationCodeN | код аеропорту в трибуквеному форматі | Array | так |
firstName | ім'я пасажира | String(20) | так |
lastName | прізвище пасажира | String(20) | так |
reservationCode | код квитка | String(15) | так |
{
departureDate: 1414504000,
locationNumber: 2,
locationCodeN: { “KBP” , ”ABC” },
firstName: “Ivan”,
lastName: “Ivanov”,
reservationCode: “GF64234”
}
Інформація про кошик платежів
Название поля | Опис | Тип | Обов'язкове |
quantity | кількість товару | Int | так |
product | найменування товару | String(256) | так |
{
quantity: 1,
product: “пополнение счета Киевстар”
}
Інформація про клієнта, який здійснює платіж
Назва поля | Опис | Тип | Обов'язкове |
address | адреса | String(128) | нет |
city | місто | String(128) | нет |
zipCode | індекс | String(10) | нет |
state | штат(область) | String(128) | нет |
country | країна в цифровому ISO 3166-1-Alpha 3 | String(3) | да |
firstName | ім'я кліента | String(20) | да |
lastName | прізвище клієнта | String(20) | да |
| Email клієнта | String(40) | да |
ip | ip-адреса, з якого заходив клієнт | String(15) | да |
phone | номер телефону в міжнародному форматі, наприклад 380501234567 | String(15) | да |
pan | Маскований номер карти, з якої була оплата товару | String(11) | да |
cardholderFirstName | ім'я власника карти, як зазначено на картці | String(40) | да |
cardholderLastName | прізвище власника карти, як зазначено на картці | String(40) | да |
machineId | ідентифікатор пристрою | String(32) | нет |
inputCardHolderTime | Час, витрачений користувачем на введення імені власника карти | Float | нет |
inputCardNumberTime | Час, витрачений користувачем на введення номера карти | Float | нет |
{
address: ”пр. Гагарина, 103”,
city: ”Днепропетровск”,
zipCode: 49000,
state: “”,
country: “804”,
firstName: “Иван”,
lastName: “Иванов”,
email: “client@domen.ua”,
ip: “77.120.11.12”,
phone: “380501234567”,
pan: “412348-1234”,
cardholderFirstName: “IVAN”,
cardholderLastName: “IVANOV”,
inputCardHolderTime: 125.15,
inputCardNumberTime: 35.47
}
Інформація про одержувача
Назва поля | Опис | Тип | обов'язкове |
address | адреса | String(128) | ні |
firstName | ім'я одержувача | String(20) | ні |
lastName | прізвище одержувача | String(20) | ні |
phone | номер телефону в міжнародному форматі, наприклад 380501234567 | String(15) | ні |
| Email отримувача | String(40) | ні |
country | країна в цифровому ISO 3166-1 | String(3) | ні |
city | місто | String(128) | ні |
zipCode | індекс | String(10) | ні |
state | штат(область) | String(128) | ні |
{
address: ”пр. Гагарина, 103”,
firstName: “Иван”,
lastName: “Иванов”,
phone: “380501234567”,
email: “client@domen.ua”,
country: “804”,
city: ”Днепропетровск”,
zipCode: 49000,
state: “”
}
Інформація про одержувача (для P2P переказів)
Назва поля | Опис | Тип | Обов'язкове |
card | pan картки одержувача | String(11) | так |
firstName | ім'я одержувача | String(20) | ні |
lastName | прізвище одержувача | String(20) | ні |
country | країна проживання одержувача в цифровому ISO 3166-1 | String(3) | ні |
address | адреса одержувача | String(128) | ні |
zipCode | поштовий індекс одержувача | String(8) | ні |
{
card:”412348-1234”,
firstName: “Иван”,
lastName: “Иванов”,
country: “804”,
address: ”пр. Гагарина, 103”,
zipCode: 49000
}
Інформація про авторизацію платежу в банку
Назваполя | Опис | Тип | Обов'язкове |
status | статус тразнкції () | ENUM (COMPLETE, REFUND, PENDING, AUTHORIZATION) | так |
timestamp | час транзакції в банку в форматі UNIX-timestamp | Int | так |
approvalCode | код авторизації | String(6) | так |
payMethod | спосіб оплати (visa, mc, maestro) | String(15) | так |
ecommInd | тип проходження транзакції | String(15) | так |
responseCode | код відповіді банку | String(5) | так |
responseDesc | опис відповіді банку | String | так |
{
status: “COMPLETE”,
timestamp: 1414504000,
approvalCode: “34D3W”,
payMethod: “visa”,
ecommInd: ”moto”,
responseCode: ””,
responseDesc: “”
}
6. Можливі відповіді
Код | Опис |
10 | Запит успішно оброблений |
100 | Бракує обов'язкового параметра |
101 | Транзакцію з зазначеним reference не знайдено |
102 | Транзакція з зазначеним reference вже існує |
103 | Неправильне значення параметру |
200 | Помилка авторизації |
201 | ЕЦП не пройшла перевірку |
300 | Сервіс тимчасово недоступний |
400 | Помилка виконання скрипта |
401 | Помилка БД |
402 | Не вдалося створити транзакцію. Повторіть запит |
Приклад запитів і відповідей
{
"auth": {
"login": "test",
"passwordHash": "098f6bcd4621d373cade4e832627b4f6",
"verify": false
},
"order": {
"aviaData": {
"departureDate": 1414504000,
"locationCodeN": [ "KBP" ],
"locationNumber": 1,
"firstName": "Ivan",
"lastName": "Ivanov",
"reservationCode": "FG78393GZ"
},
"product": [
{
"quantity": 1,
"product": "Велосипед"
},
{
"quantity": 2,
"product": "Зеркала к велосипеду"
}
],
"extraInfo": "Дополнительная информаци о заказе",
"reference": "48521478",
"timestamp": 1414504233,
"currency": "980",
"amount": 125.05
},
"client": {
"address": "ул. Гагарина, д. 11",
"city": "Киев",
"zipCode": "32014",
"state": "киевская",
"country": "804",
"firstName": "Иван",
"lastName": "Иванов",
"email": "ivanov@gmail.com",
"ip": "77.120.98.36",
"phone": "38050123457",
“pan”: “440588-2222”,
"cardholderFirstName": "IVAN",
"cardholderLastName": "IVANOV",
“timezone”: 0,
“machineId”: “”
},
"receiverClient": {
"card": "4123451234",
"firstName": "Петр",
"lastName": "Петров",
"country": "804",
"address": "ул. Заводская, д.78/54",
"zipCode": "49102"
},
"deliveryClient": {
"address": "ул. Космонавтов, д. 11, кв. 44",
"firstName": "Геннадий",
"lastName": "Чебурашкин",
"phone": "380671324567",
"email": "g.cheb@mail.ru",
"country": "804",
"city": "Харьков",
"zipCode": "37201",
"state": "харьковская"
},
"bankData": {
"status": "COMPLETE",
"timestamp": 1414504000,
"approvalCode": "451973",
"payMethod": "visa",
"ecommInd": "3ds",
"responseCode": "10",
"responseDesc": "Оплата принята"
}
}
{
"transactionId": 65214742,
"reference": "48521478",
"result": 10,
"status": "OK",
"timestamp": 1414505799
}