Aвторизація
Igor Gorin (Unlicensed)
ecs
ecs (Unlicensed)
Тестове та робоче середовища
POST https://ecg.test.upc.ua/go/pay
Тестове средовище
POST https://secure.upc.ua/go/pay
Робоче середовище
Торгова система (електронний магазин) повинна передати ряд параметрів при переході на захищену сторінку шлюзу.
Ці параметри наведені в таблиці 1:
Таблиця №1
Параметр | Структура | Формат | Назва параметра | Комментар |
Version | F | N | Значення версії інтерфейсу SG | Версія протоколу взаємодії. Діюча версія в даний момент '1'. Цей параметр є довідковим для обробника вхідних даних шлюзу. |
MerchantID | L | an15 | ідентифікатор торговця | Призначається обслуговуючим банком |
TerminalID | F | an8 | Идентификатор терминала | Призначається обслуговуючим банком |
TotalAmount | F | N1..12 | Сума замовлення | У дрібних одиницях валюти (копійки, центи) |
Currency | F | n3 | Визначається договором з обслуговуючим банком | |
AltTotalAmount | F | N1..12 | Сума замовлення (альтернативна валюта) | Необов'язковий У дрібних одиницях валюти (копійки, центи) |
AltCurrency | F | n3 | Необов'язковий Визначається, якщо магазин бажає відобразити суму платежу в іншій валюті. | |
PurchaseTime | F | n12..17 | Час запиту в форматі yyMMddHHmmss або yyMMddHHmmssZ |
|
locale | F | a2 | Мова інтерфейсу (en, ru, uk) | Мова інтерфейсу захищених сторінках шлюзу |
OrderID | L | Ans…20 | Номер замовлення довжиною до 20 байт | Ідентифікатор замовлення. Має бути унікальним для кожного запиту на оплату, що відправлється магазином на платіжний шлюз. |
SD | Var | an...99 | Session Data -Дані сесії | Необов'язковий Допоміжній параметр, может буті використаних торговельна система для управління Призначення для користувача сесіямі |
PurchaseDesc | L | ans...125 | Короткий опис покупки, товару | Необов'язковий Може бути відображений на сторінці платіжного сервера. Рекомендується використовувати для зручності покупця. В цьому параметрі необхідно передавати призначення платежу, якщо це необхідно. |
Signature | Var | Залежить від схеми | Значення MAC-коду або підпису | Довжина параметра залежить від обраної схеми обчислення |
Delay | F | N1 | Ідентифікатор платежу преавторізації | Для преавторизації, значення має дорівнювати «1», інакше 0 або порожньо |
Ref3 | L | ans..1 150 | Додатковий ідентифікатор замовлення | Необов'язковий Наприклад може передаватися - Номер квитка, Додатковий ідентифікатор замовлення, ПІБ, Номер мобільного телефону ... |
Електронна пошта | Електронна пошта. Приклад передачі даних: <input type="hidden" name="email" value="ec@upc.ua" /> | |||
phoneCountryCode | Телефонний код країни | Передача телефонного коду країни. Приклад: <input type="hidden" name="phoneCountryCode" value="380" /> | ||
phoneNumber | Номер телефону | Вказується номер телефону БЕЗ телефонного коду країни Приклад: <input type="hidden" name="phoneNumber" value="638879191" /> |
Дані параметри передаються методом HTTPS / POST на сторінку шлюзу в певній HTML-формі для подальшого введення реквізитів платіжної картки покупцем (власником платіжної картки).
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <form action="https://ecg.test.upc.ua/go/enter" method="POST"> <input name="Version" type="hidden" value="1" /> <input name="MerchantID" type="hidden" value="1111111" /> <input name="TerminalID" type="hidden" value="E1111111" /> <input name="TotalAmount" type="hidden" value="1000" /> <input name="Currency" type="hidden" value="980" /> <input name="locale" type="hidden" value="ru" /> <input type="HIDDEN" name="PurchaseTime" value="150611110821"/> <input name="OrderID" type="hidden" value="121sdsdss2sd" /> <input name="PurchaseDesc" type="hidden" value="tran test" /> <input name="Signature" type="hidden" value=""/> <input type="submit"/> </form>
- Далі на сторінці шлюзу прийняті дані доповнюються значеннями CardType, CardNumber, ExpYear, ExpMonth, CVV2 (при необхідності). Попередньо шлюз виробляє ряд перевірок (наявність реєстраційних параметрів торговця в БД, відповідність типу валюти зареєстрованому значенням, величину авторотаціонного ліміту для торговця, а також перевірку електронного підпису).
- Потім етапі шлюз відображає в браузері покупця сторінку для введення реквізитів картки. При цьому покупець також може вказати тип карти (за умови, що торговцю дозволено приймати той чи інший тип). Покупець також може ввести код CVV2 своєї карти (для карт MAESTRO введення даного коду не пропонується)
- На наступному етапі відбувається обробка запиту з використанням схеми 3D-Secure або стандартної схеми (channel encryption e-commerce), в залежності від параметрів, наданих обслуговуючим банком.
Додаткові значення для обробки транзакцій за технологією Emv 3DS
Для обробки транзакцій за технологією Emv 3DS на захищеній сторінці UPC необхідно додатково передати розширені дані про клієнтів, в поле 3DSv2Data значення вказані в форматі json.
Ці дані будуть передані в платіжні системи Directory Servers, а від них в ACS для подальшого аналізу емітентом, і рішення вимагає додаткової перевірки клієнта чи ні.
Приклад web-форми:
<form action="https://ecg.test.upc.ua/go/enter" method="POST"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <input name="Version" type="hidden" value="1"> <input name="MerchantID" type="hidden" value="1111111"> <input name="TerminalID" type="hidden" value="E1111111"> <input name="TotalAmount" type="hidden" value="1000"> <input name="Currency" type="hidden" value="980"> <input name="locale" type="hidden" value="ru"> <input type="HIDDEN" name="PurchaseTime" value="150611110821"> <input name="OrderID" type="hidden" value="121sdsdss2sd"> <input name="PurchaseDesc" type="hidden" value="tran test"> <input name="Signature" type="hidden" value=""> <input name="3DSv2Data " type="hidden" value="{acctInfo:{ 'chAccAgeInd':'03', 'chAccChange':'20160712', 'chAccChangeInd':'04', 'chAccDate':'20140328', 'chAccPwChange':'20170328', 'chAccPwChangeInd':'02', 'nbPurchaseAccount':'11', 'paymentAccAge':'20160917', 'paymentAccInd':'02', 'provisionAttemptsDay':'3', 'shipAddressUsage':'20160714', 'shipAddressUsageInd':'02', 'shipNameIndicator':'02', 'suspiciousAccActivity':'02', 'txnActivityDay':'1', 'txnActivityYear':'21'}, 'acctType':'03', 'authenticationInd':'01', 'authenticationInfo':{ 'threeDSReqAuthData':'login GP', 'threeDSReqAuthMethod':'02', 'threeDSReqAuthTimestamp':'201711071307' }, 'cardHolderInfo':{ 'billAddrCity':'Sydney', 'billAddrCountry':'036', 'billAddrLine1':'Unit 1', 'billAddrLine2':'123 Street Suburb', 'billAddrLine3':'abc Line 3', 'billAddrPostCode':'2000', 'billAddrState':'NSW', 'cardholderName':'Suda Ichiro', 'email':'abc@123.com', 'homePhone':{ 'cc':'61', 'subscriber':'90123917131' }, 'mobilePhone':{ 'cc':'61', 'subscriber':'0421522329' }, 'workPhone':{ 'cc':'61', 'subscriber':'89102183192' }, 'shipAddrCity':'Sydney', 'shipAddrCountry':'036', 'shipAddrLine1':'Unit 1', 'shipAddrLine2':'123 Street', 'shipAddrLine3':'abc Line 3', 'shipAddrPostCode':'2000', 'shipAddrState':'NSW' }, 'challengeInd':'01', 'eventCallbackUrl':'http://localhost:8082/3ds-notify', 'merchantId':'123456789012345', 'merchantRiskIndicator':{ 'deliveryEmailAddress':'test@123.com', 'deliveryTimeframe':'02', 'giftCardAmount':'123', 'giftCardCount':'02', 'giftCardCurr':'840', 'preOrderDate':'20170519', 'preOrderPurchaseInd':'02', 'reorderItemsInd':'01','shipIndicator':'01'}, 'purchaseAmount':'200','purchaseCurrency':'036', 'purchaseDate':'20190521104643', 'purchaseInstalData':'24', 'transType':'03' }"> <input type="submit"> </form>
Опис параметрів
Tag name | Назва елемента | Опис | Значення |
acctInfo | chAccAgeInd | Час, протягом якого власник карти мав обліковий запис в 3DS Requestor. | Допустимі значення:
|
chAccChange | Дата останньої зміни рахунку власника картки у Замовника 3DS. Включаючи адресу для виставлення рахунку або доставки, додано новий платіжний рахунок або нових користувачів. Прийнятий формат: РРРРММДД | ||
chAccChangeInd | Тривалість часу з моменту останньої зміни даних облікового запису власника картки у Замовника 3DS. Включаючи адресу для виставлення рахунку або доставки, додано новий платіжний рахунок або нових користувачів. | Прийняті значення:
| |
chAccDate | Дата, коли власник картки відкрив рахунок у 3DS Requestor. | Прийнятий формат: РРРРММДД | |
chAccPwChange | Дату, коли в обліковому записі власника картки в 3DS Requestor було змінено пароль або скинуто обліковий запис. | Прийнятий формат: РРРРММДД | |
chAccPwChangeInd | Вказує на проміжок часу, відколи на рахунку власника картки у Замовника 3DS було змінено пароль або скинуто рахунок. | Прийняті значення:
| |
nbPurchaseAccount | Кількість покупок за цим рахунком власника картки протягом попередніх шести місяців. | ||
paymentAccAge | Дата реєстрації платіжного рахунку на рахунку власника картки у Замовника 3DS. | ||
paymentAccInd | Вказує тривалість часу, протягом якого платіжний рахунок був зареєстрований на рахунку власника картки у Замовника 3DS | Прийняті значення:
| |
provisionAttemptsDay | Кількість спроб додати картку за останні 24 години. | ||
shipAddressUsage | Дата, коли адреса доставки, використана для цієї транзакції, була вперше використана разом із 3DS Requestor. | ||
shipAddressUsageInd | Вказує, коли адреса доставки, використана для цієї транзакції, була вперше використана із 3DS Requestor. | Прийняті значення:
| |
shipAddressUsageInd | Вказує, коли адреса доставки, використана для цієї транзакції, була вперше використана із 3DS Requestor. | Прийняті значення:
| |
shipNameIndicator | Вказує, чи Ім'я власника картки на рахунку ідентичне імені доставки, що використовується для цієї транзакції. | Прийняті значення:
| |
suspiciousAccActivity | Вказує на те, чи вимагав 3DS Requestor підозрілу активність (включаючи попереднє шахрайство) на рахунку власника картки. | Прийняті значення:
| |
txnActivityDay | Кількість транзакцій (успішних та скасованих) для цього рахунку власника картки за допомогою Замовника 3DS на всіх платіжних рахунках за попередні 24 години. | ||
txnActivityYear | Кількість транзакцій (успішних та скасованих) для цього рахунку власника картки за допомогою Замовника 3DS на всіх платіжних рахунках у попередньому році. | ||
acctNumber | Номер рахунку, який буде використаний у запиті на авторизацію для здійснення платіжних операцій. Може бути представлений PAN, маркер. | ||
acctType | Вказує тип рахунку |
| |
cardExpiryDate | Дата закінчення терміну дії PAN | ||
cardHolderInfo | billAddrCity | Місто виставлення рахунку Власника картки, пов’язане з картою, яка використовується для цієї покупки. (pa: потрібно, якщо ринковий або регіональний мандат не обмежує надсилання цієї інформації. npa: Обов’язковий (якщо доступний), якщо ринковий або регіональний мандат не обмежує надсилання цієї інформації.)
| |
billAddrCountry | Країна адреси виставлення рахунку Власника картки, пов’язана з карткою, яка використовується для цієї покупки. | ||
billAddrLine1 | Перший рядок вуличної адреси або еквівалентної місцевої частини адреси виставлення рахунку Власника картки, пов’язаної з картою, що використовується для цієї покупки. | ||
billAddrLine2 | Другий рядок вуличної адреси або еквівалентної місцевої частини адреси виставлення рахунку Власника картки, пов’язаної з карткою, що використовується для цієї покупки. | ||
billAddrLine3 | Третій рядок вуличної адреси або еквівалентної місцевої частини адреси виставлення рахунку Власника картки, пов’язаної з карткою, що використовується для цієї покупки. | ||
billAddrPostCode | Поштовий індекс або інший поштовий індекс адреси виставлення рахунку Власника картки, пов’язаної з карткою, що використовується для цієї покупки. | ||
billAddrState | Штат або провінція адреси виставлення рахунку Власника картки, пов’язаної з карткою, що використовується для цієї покупки. | ||
cardholderName | Ім'я власника картки. | ||
Адреса електронної пошти, пов’язана з обліковим записом, який або введений Власником картки, або записаний у Запитувачі 3DS. | |||
homePhone | Код країни, довжина 1-3 Абонент; макс. довжина 15 | Приклад'homePhone':{‘Cc’:’044’,‘Subscriber’:’55555555’} | |
mobilePhone | Приклад' mobilePhone':{‘Cc’:’044’,‘Subscriber’:’55555555’} | ||
shipAddrCity | Міська частина адреси доставки, яку запитує Власник картки. | ||
shipAddrCountry |
| ||
shipAddrLine1 |
| ||
shipAddrLine2 |
| ||
shipAddrLine3 |
| ||
shipAddrPostCode |
| ||
shipAddrState |
| ||
workPhone |
| ||
merchantId | Ідентифікатор продавця, призначений еквайєром. | ||
merchantRiskIndicato | deliveryEmailAddress |
| |
deliveryTimeframe | Позначає терміни доставки товарів. | Прийняті значення:
| |
giftCardAmount |
| ||
giftCardCount |
| ||
giftCardCurr |
| ||
preOrderDate |
| ||
preOrderPurchaseInd |
| ||
reorderItemsInd |
| ||
shipIndicator | Вказує спосіб доставки, обраний для транзакції. Продавці повинні вибирати код показника доставки, який найбільш точно описує конкретну операцію власника картки, а не загальний бізнес. Якщо один або кілька товарів включені у продаж, використовуйте код індикатора доставки для фізичних товарів, або якщо всі цифрові товари використовуйте код індикатора доставки, який описує найдорожчий товар. | Прийняті значення:
| |
priorTransID | Ідентифікатор транзакції сервера 3DS для попередньої аутентифікованої транзакції власника картки. | Приклад: 59ae264e-b0f4-43c7-870e-4d14bd52806e | |
threeRIInd | Вказує тип запиту 3RI | Прийняті значення:
|
Формування підпису Signature
Детальна інструкція по формуванню підпису Signature в запитах - Формування підпису.
Примітка
Опис структури
- F - повне поле
- L - по лівому краю
- R - по правому краю
- ' ' - заповнені пробілами
- Z - заповнене нулями
- Var - поле змінної довжини
.
Примітка
Опис формату
n- числова десяткова цифра, значення 0..9, - буквений або цифровий символ, значення 0..9 або
A..Z або ..z, ans - буквений, цифровий або спеціальний символ,
.
Зверніть увагу
Параметри AltTotalAmount, AltCurrency визначаються, якщо продавцеві потрібно показати в магазині суму платежу в іншій валюті, яка відрізняється від валюти в договорі обслуговуючого банку.
При цьому на шлюз потрібно посилати 4 параметра:
- TotalAmount, Currency - сума і валюта за умовами договору
- AltTotalAmount, AltCurrency - сума і валюта, зазначена для оплати на магазині.
Коди валют:
- 840 United States Dollar
- 978 Euro
- 980 Ukrainian Hryvnia
Однак транзакція буде проводитися за параметрами TotalAmount, Currency. При цьому торговець сам відповідає за відповідність сум між різними валютами (правильний перерахунок відповідно до курсу).