Page History
...
Параметры передаются методом POST в теле запроса в формате «ключ=значение», SOAP запросом, либо в формате JSON (swagger описание: https://docs.assistbelassist.ruby/swagger/).
Список параметров, передаваемых в режиме silentpay:
Название | Обязательное поле | Принимаемыезначения | Значениепо умолчанию | Описание | ||||||
Merchant_ID | Да | Число | Идентификатор предприятия в системе АПК Ассист | |||||||
Login | Да | Строка | Ваш логин | |||||||
Password | Да | Строка | Ваш пароль | |||||||
OrderNumber | Да/Нет | 128 символов | Номер заказа в системе расчетов предприятия. | |||||||
OrderAmount | Да | Число, 15 цифр (разделители «.», «,») | Сумма платежа в оригинальной валюте (например, 10.34) | |||||||
OrderCurrency | Нет | 3 символа | Валюта юр.лица или предприятия | Код валюты, в которой указана сумма платежа OrderAmount (RUB, USD, EUR) | ||||||
OrderComment | Нет | 256 4000 символов | Комментарий | |||||||
Delay | Нет | 0 – - одностадийный механизм работы, | 0 | Признак авторизации банковской карты при двустадийном механизме работы | ||||||
Language | Нет | RU – - русский | Язык юр.лица или предприятия | Язык авторизационных страниц | ||||||
ClientIP | Нет/Да | IP адрес покупателя. Параметр является обязательным для протокола 3-D Secure версии 2. | ||||||||
Cardtype | Нет | 1 – - VISA | Идентификатор типа карты для оплаты. | |||||||
Cardnumber | Да | Номер карты | ||||||||
Cardholder | Да | 70 символов без цифр. Разделитель – - пробел. | Держатель карты. | |||||||
Expiremonth | Да | 1-12 | Месяц окончание действия карты | |||||||
Expireyear | Да | Год в формате YYYY | Год окончания действия карты | |||||||
Cvc2 | Да | CVC2 код | ||||||||
Lastname | Да | 70 символов без цифр | Фамилия покупателя | |||||||
Firstname | Да | 70 символов без цифр | Имя покупателя | |||||||
Middlename | Нет | 70 символов без цифр | Отчество покупателя | |||||||
Да | 128 символов | E-mail покупателя | ||||||||
Address | Нет | 256 символов | Адрес покупателя | |||||||
HomePhone | Нет | 64 символа | Домашний телефон покупателя | |||||||
WorkPhone | Нет | 20 символов | Рабочий телефон покупателя | |||||||
MobilePhone | Нет | 20 символа | Мобильный телефон покупателя | Fax | Нет | 20 символа | Факс покупателя | |||
Country | Нет | 3 символа | Код страны покупателя | |||||||
State | Нет | 3 символа | Код региона покупателя | |||||||
City | Нет | 70 символа | Город покупателя | |||||||
Zip | Нет | 25 символа | Индекс предприятия связи покупателя | |||||||
isConvert | Нет | 0 - Не конвертировать в базовую валюту 1 - Не конвертировать при возможности 2 - Всегда конвертировать | 1 | Флаг конвертации валюты платежа в базовую валюту | ||||||
Format | Нет | 1 – - CSV | 1 | Формат выдачи результата. Если запрос передан в формате SOAP или JSON, то ответ также будет в SOAP или JSON соответственно, в остальных случаях ответ выдается согласно переданному значению формата. | ||||||
Signature | Нет | строка | Формируется строка по определенным правилам. На базе этой строки алгоритмом MD5 формируется дайджест. Дайджест подписывается закрытым RSA ключом мерчанта. Длина ключа - 1024. Полученная байтовая последовательность является подписью магазина. Подпись передается нам в виде дополнительного параметра, закодированного в виде строки BASE64.
| |||||||
RecurringIndicator | Нет | 1 –рекуррентный - рекуррентный платеж 0 - обычный платеж | 0 | Признак рекуррентного платежа | ||||||
RecurringMinAmount | Нет/Да | Число, 15 цифр (разделители «.», «,») | Минимальная сумма рекуррентных платежей. Параметр обязателен при RecurringIndicator = 1 | |||||||
RecurringMaxAmount | Нет/Да | Число, 15 цифр (разделители «.», «,») | Максимальная сумма рекуррентных платежей. Параметр обязателен при RecurringIndicator = 1 | |||||||
RecurringPeriod | Нет/Да | Число, 10 цифр | Периодичность рекуррентных платежей в днях. Параметр обязателен при RecurringIndicator = 1 | |||||||
RecurringMaxDate | Нет/Да | Строковое представление даты в формате DD.MM.YYYY | Дата окончания рекуррентных платежей. Параметр обязателен при RecurringIndicator = 1 | |||||||
CustomerNumber | Нет | 32 символа | Внутренний номер клиента предприятия (мерчанта) | Disable3DS|||||||
SaveCard | Нет | 1 - карта привязывается к данному номеру клиента; 0 - карта не привязывается | 0 | В случае успешного платежа разрешает сохранять карту по данному номеру клиента для последующих платежей. Если карта для данного номера клиента уже была сохранена ранее, то параметр игнорируется. | ||||||
Disable3DS | Нет | 0 - проверять 3-D Secure согласно настройкам предприятия, 1 - проводить платеж без 3-D Secure. | 0 | – проверять 3-D Secure согласно настройкам предприятия,0 | Признак отключения 3-D Secure. |
|
Пример запроса HTTP POST проведения платежа в скрытом режиме silentpay:
Code Block | ||
---|---|---|
| ||
<FORM ACTION="https://SERVER-NAME/pay/silentpay.cfm " method="POST"> <INPUT TYPE="hidden" NAME="Merchant_ID" VALUE="Ваш Merchant_ID"> <INPUT TYPE="hidden" NAME="Login" VALUE="Ваш логин"> <INPUT TYPE="hidden" NAME="Password" VALUE="Ваш пароль"> <INPUT TYPE="hidden" NAME="OrderNumber" VALUE="011001-10"> <INPUT TYPE="hidden" NAME="OrderAmount" VALUE="22"> <INPUT TYPE="hidden" NAME="OrderCurrency" VALUE="BYN"> <INPUT TYPE="hidden" NAME="OrderComment" VALUE="оплата заказа 011001-10"> <INPUT TYPE="hidden" NAME="Delay" VALUE="0"> <INPUT TYPE="hidden" NAME="isConvert" VALUE="1"> <INPUT TYPE="hidden" NAME="Language" VALUE="RU"> <INPUT TYPE="hidden" NAME="ClientIP" VALUE="IP адрес покупателя"> <INPUT TYPE="hidden" NAME="Cardtype" VALUE="Тип карты"> <INPUT TYPE="hidden" NAME="Cardnumber" VALUE="Номер карты"> <INPUT TYPE="hidden" NAME="Cardholder" VALUE="Владелец карты"> <INPUT TYPE="hidden" NAME="Expiremonth" VALUE="срок действия карты - месяц"> <INPUT TYPE="hidden" NAME="Expireyear" VALUE=" срок действия карты - год"> <INPUT TYPE="hidden" NAME="Cvc2" VALUE="код CVC2 или CVV2"> <INPUT TYPE="hidden" NAME="Lastname" VALUE="Фамилия покупателя"> <INPUT TYPE="hidden" NAME="Firstname" VALUE="Имя покупателя"> <INPUT TYPE="hidden" NAME="Middlename" VALUE="Отчество покупателя"> <INPUT TYPE="hidden" NAME="Email" VALUE="Email покупателя"> <INPUT TYPE="hidden" NAME="Address" VALUE="Адрес покупателя "> <INPUT TYPE="hidden" NAME="Homephone" VALUE="Домашний телефон покупателя"> <INPUT TYPE="hidden" NAME="Workphone" VALUE="Рабочий телефон покупателя"> <INPUT TYPE="hidden" NAME="Mobilephone" VALUE="Мобильный телефон покупателя"> <INPUT TYPE="hidden" NAME="Fax" VALUE="Факс покупателя"> <INPUT TYPE="hidden" NAME="Country" VALUE="Стана"> <INPUT TYPE="hidden" NAME="State" VALUE="Регион"> <INPUT TYPE="hidden" NAME="City" VALUE="Город"> <INPUT TYPE="hidden" NAME="Zip" VALUE="Индекс отделения связи"> <INPUT TYPE="hidden" NAME="TestMode" VALUE="Тестовый режим"> <INPUT TYPE="hidden" NAME="Format" VALUE="Формат представления результата"> <INPUT TYPE="Submit"></FORM> |
Anchor | ||||
---|---|---|---|---|
|
Описание веб-сервиса для формата SOAP:
...
Название | Значение |
ordernumber | Номер заказа |
billnumber | Полный уникальный номер операции в системе |
testmode | Тестовый режим |
ordercomment | Комментарий |
orderamount | Оригинальная сумма заказа |
ordercurrency | Оригинальная валюта заказа |
amount | Сумма операции |
currency | Валюта операции |
rate | Курс валюты |
firstname | Имя плательщика |
lastname | Фамилия плательщика |
middlename | Отчество плательщика |
Email плательщика | |
ipaddress | IP-адрес плательщика |
meantypename | Тип платежного средства |
meansubtype | Подтип платежного средства |
meannumber | Номер платежного средства |
cardholder | Держатель платежного средства |
cardexpirationdate | Срок действия карты |
issuebank | Название банка-эмитента |
bankcountry | Страна банка-эмитента |
orderdate | Дата заказа по Гринвичу (GMT) |
orderstate | Статус заказа |
responsecode | Код возврата |
message | Сообщение |
customermessage | Сообщение о результате для покупателя |
recommendation | Рекомендации |
approvalcode | Код авторизации |
protocoltypename | Протокол |
processingname | Процессинг |
operationtype | Тип операции |
packetdate | Дата формирования запроса по Гринвичу (GMT) |
signature | Подпись. Создается по следующему алгоритму: 1. Формируется объединённая строка из параметров (в их строковом представлении, в формате как они переданы в ответе): billnumber, ordernumber, responsecode, orderamount, ordercurrency, meannumber, approvalcode, orderstate, packetdate (без разделителей) 1) Для типа подписи MD5 - пусто 2) Для типа PGP – значение X, подписанное закрытым ключом АПК Ассист, закодированное в BASE64 |
pareq | Пакет запроса по 3D-Secure авторизации |
ascurl | Адрес для переадресации плательщика для прохождения 3D-Secure авторизации |
Warning |
---|
При использовании сервиса имеются ограничения по производительности. |
Результат запроса в зависимости от выбранного формата получения будет выглядеть одним из следующих образов.
...
Code Block | ||
---|---|---|
| ||
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <!DOCTYPE result [ <result firstcode='Первый код' secondcode='Второй код' count='Кол-во объектов'> <orders><order> <ordernumber>Номер заказа</ordernumber> <responsecode>Код возврата</response_code>responsecode> <recommendation>Рекомендации</recommendation> <message>Сообщение</message> <ordercomment>Комментарий</ordercomment> <orderdate>Дата и время платежа</orderdate> <amount>Сумма платежа</amount> <currency>Код валюты</currency> <meantypename>Тип карты</meantype> <meannumber>Номер карты</meannumber> <lastname>Фамилия</lastname> <firstname>Имя</firstname> <middlename>Отчество</middlename> <issuebank>Название банк-эмитента</ issuebank > <email>Адрес элекртоннойэлектронной почты</email> <bankcountry>Код страны банка-эмитента</bankcountry> <rate>Курс валюты</rate> <approvalcode>Код авторизации</approvalcode> <meansubtype>Подтип карты</meansubtype> <cardholder>Держатель карты</cardholder> <cardexpirationdate>Срок действия карты</cardexpirationdate> <ipaddress>IP-адрес покупателя</ipaddress> <protocoltypename>Тип протокола</protocoltypename> <testmode>Указание на тестовытестовый платеж</ testmode > <customermassage> Сообщение пользователю</customermassage > <orderstate>Состояние</orderstate> <processingname>Название процессинга</ processingname> <operationtype>Код операции</operationtype> <billnumber>Номер платежа</billnumber> <orderamount>Сумма платежа в оригинальной валюте</orderamount> <ordercurrency>Оригинальная валюта </ordercurrency> <paketdate> Дата и время получения пакета </paketdate> <signature> </signature> <pareq>Значение pareq </pareq> <ascurl>URL банка-эмитента </ascurl> </order></orders></result> |
...
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ws="http://www.paysecure.ru/ws/"> <soapenv:Header/> <soapenv:Body> <ws:SilentPayResponse> <return> <ordernumber xsi:type="xsd:string">Номер заказа</ordernumber> <responsecode xsi:type="xsd:string">Код возврата</response_code>responsecode> <recommendation xsi:type="xsd:string">Рекомендации</recommendation> <message xsi:type="xsd:string">Сообщение</message> <ordercomment xsi:type="xsd:string">Комментарий</ordercomment> <orderdate xsi:type="xsd:string">Дата и время платежа</orderdate> <amount xsi:type="xsd:string">Сумма платежа</amount> <currency xsi:type="xsd:string">Код валюты</currency> <meantypename xsi:type="xsd:string">Тип карты</meantype> <meannumber xsi:type="xsd:string">Номер карты</meannumber> <lastname xsi:type="xsd:string">Фамилия</lastname> <firstname xsi:type="xsd:string">Имя</firstname> <middlename xsi:type="xsd:string">Отчество</middlename> <issuebank xsi:type="xsd:string">Название банк-эмитента</ issuebank > <email xsi:type="xsd:string">Адрес элекртоннойэлектронной почты</email> <bankcountry xsi:type="xsd:string">Код страны банка-эмитента</bankcountry> <rate xsi:type="xsd:string">Курс валюты</rate> <approvalcode xsi:type="xsd:string">Код авторизации</approvalcode> <meansubtype xsi:type="xsd:string">Подтип карты</meansubtype> <cardholder xsi:type="xsd:string">Держатель карты</cardholder> <cardexpirationdate xsi:type='xsd:string'>Срок действия карты</cardexpirationdate> <ipaddress xsi:type="xsd:string">IP-адрес покупателя</ipaddress> <protocoltypename xsi:type="xsd:string">Тип протокола</protocoltypename> <testmode xsi:type="xsd:string">Указание на тестовый платеж</ testmode > <customermassage xsi:type="xsd:string">Сообщение пользователю</customermassage > <orderstate xsi:type="xsd:string">Состояние</orderstate> <processingname xsi:type="xsd:string">Название процессинга</processingname> <operationtype xsi:type="xsd:string">Код операции</operationtype> <billnumber xsi:type="xsd:string">Номер платежа</billnumber> <orderamount xsi:type="xsd:string">Сумма платежа в оригинальной валюте</orderamount> <ordercurrency xsi:type="xsd:string">Оригинальная валюта</ordercurrency> <paketdate xsi:type="xsd:string">Дата и время получения пакета</paketdate> <signature xsi:type="xsd:string"> </signature> <pareq xsi:type="xsd:string">Значение pareq </pareq> <ascurl xsi:type="xsd:string">URL банка-эмитента </ascurl> </return> </ws:SilentPayResponse> </soapenv:Body> </soapenv:Envelope> |
...
Если в ответе получен responsecode AS300, а статусы заказа (orderstate) и операции (operationstate) - In Process (В процессе), то актуальный статус оплаты можно получить позже через запрос к сервису получения результатов orderresult.
Если результат оплаты не получен (например, вследствие сетевых проблем), то его можно получить позже через запрос к сервису orderresult.
Пример результата запроса в формате XML, вернувшего ошибку (неправильный пароль):
...
При оплате картой, требующей авторизации по 3D-Secure, АПК Ассист возвращает код ответа (response_coderesponsecode) AS110. В пакет ответа по режиму silentpay также добавляются дополнительные поля, позволяющие ТСП обеспечить дополнительную аутентификацию плательщика по технологиям 3-D Secure (карты VISA) и Mastercard SecureCode (карты Mastercard ).
В настоящее время для дополнительной аутентификации плательщика большинство банков-эмитентов работает по версии протокола 3-D Secure 1.0 по всем типам карт.
Для более надежного процесса аутентификации банки-эмитенты и платежные системы переходят на новую версию протокола 2.0 и выше для всех типов карт (VISA, Mastercard). Для поддержки протокола нового поколения предприятию нужно внести изменения в процесс аутентификации плательщика.
Для карт международных платежных систем VISA, Mastercard в большинстве случаев используется версия 2 протокола 3D-Secure при дополнительной аутентификации плательщика, эта же версия протокола применяется и для карт UPI. Для карт платежной системы БЕЛКАРТ аутентификация осуществляется по версии 1 протокола.
Для Для начала оплаты заказа предприятие отправляет авторизационный запрос на сервер АПК Ассист. К обычным параметрам запроса необходимо добавить следующие данные об устройстве и браузере клиента, если это еще не было сделано ранее для работы с СПМ. В новом протоколе 3-D Secure версии 2 .0 эти данные являются обязательными.
Название | Принимаемые значения | Описание |
HEADER_HTTP_ACCEPT | Строка, 255 байт | Заголовок http запроса ACCEPT |
HEADER_HTTP_USER_AGENT | Строка, 255 байт | Заголовок http запроса USER-AGENT |
CLIENT_JAVA | Логическое (true, false) | navigator.javaEnabled() |
CLIENT_BROWSER_LANGUAGE | Строковый (5 байт) | navigator. language |
CLIENT_SCREEN_COLORS | Числовой (1, 4,8,15,16,24,32,48) | Screen.pixelDepth |
CLIENT_SCREEN_RES | Строковый, 16 символов | Screen.width + 'x' + screen.height |
ChallengeWindowSize | 2 символа (01 – - 250x400, 02 – - 390x400, 03 – - 500x600, 04 – - 600x400, 05 – - Full screen) | Размер iframe для прохождения проверки держателя карты |
ClientIP | Максимум 15 цифр, 4 разделителя «.» | IP адрес покупателя |
Anchor | ||||
---|---|---|---|---|
|
3D-Secure авторизация по протоколу версии 1
...
При оплате картой, требующей авторизации по протоколу версии 1.0, АПК Ассист возвращает код ответа (response_coderesponsecode) AS110 и дополнительные поля pareq и acsurl в ответе на запрос авторизации.
...
AcsUrl | Url банка-эмитента. Значение, полученное в пакете результата режима silentpay от АПК Ассист. |
PaReq | Значение, полученное в пакете результата режима silentpay от АПК Ассист. |
TermUrl | Url магазина для получения результата от банка эмитента. |
MD | Идентификатор, по которому в дальнейшем связывается результат, полученный от банка, и заказ. Данное поле возвращается от банка эмитента. |
Пример запроса HPPT HTTP POST к банку-эмитенту:
Code Block | ||
---|---|---|
| ||
<FORM ACTION="acsurl - значение, полученное от АПК Ассист в пакете режима silentpay" method="POST"> <INPUT TYPE="hidden" NAME="PaReq" VALUE="pareq - значение, полученное от АПК Ассист в пакете режима silentpay "> <INPUT TYPE="hidden" NAME="TermUrl" VALUE="url магазина для получения результата от банка-эмитента"> <INPUT TYPE="hidden" NAME="MD" VALUE="любые данные магазина"> <INPUT TYPE="submit" NAME="Submit_3DS" class="button" VALUE="Продолжить"> </FORM> |
...
Для продолжения процесса авторизации по 3D-Secure магазину необходимо передать в АПК Ассист пакет результата авторизации по 3D-Secure pares. Данная функциональность реализована в веб-сервисе get3DSec.
Get3DSec – - веб-сервис передачи параметров авторизации карты по 3D-Secure
...
Code Block | ||
---|---|---|
| ||
<?xml version="1.0" encoding="windows-1251" standalone="no" ?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Fault> <faultcode>Первый код</faultcode> <faultstring>Второй код</faultstring> <detail /> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> |
3D-Secure авторизация по протоколу версии 2
...
Важной особенностью новой версии протокола является тот факт, что плательщик может быть аутентифицирован без ввода дополнительного пароля (на основе дополнительных данных). Процесс аутентификации, при котором не происходит дополнительного взаимодействия с держателем карты, называется Frictionless Flow. Процесс аутентификации, при котором держателю карты требуется ввести дополнительный код подтверждения, называется процессом проверки (Challenge Flow).
...
- Проверять версию протокола 3D-Secure в ответе на авторизационный запрос к сервису Assist. Для протокола версии 1 .0 поддерживать описанную выше схему работы.
- Для протокола версии 2 .0 сформировать скрытый iframe на платежной странице (детальное описание параметров см. ниже) и отправить на ACS банка-эмитента запрос 3DSMethod (при наличии).
- Для продолжения аутентификации вызвать веб-сервис ws3dsecver2 get3dsecver2 с дополнительными параметрами 3D-Secure. Если аутентификация произойдет без дополнительного взаимодействия с клиентом (Frictionless Flow), то АПК Ассист получит ее результат и отправит транзакцию авторизации в процессинг. В ответе предприятие получит полный результат оплаты, содержащий также и результат авторизации в процессинге. В случае необходимости дополнительной аутентификации клиента АПК Ассист вернет в ответе на запрос дополнительные поля для проведения проверки (Challenge Flow).
- При наличии в ответе дополнительных полей, сообщающих о необходимости дополнительной проверки, предприятие на платежной странице формирует iFrame, в котором реализует отображение страницы ACS банка-эмитента для ввода одноразового пароля. Покупатель завершает аутентификацию.
- Результат прохождения проверки АПК Ассист получит на сервер на своей стороне. В случае успешной проверки будет проведена транзакция оплаты в процессинге. В случае неуспешной проверки операция завершится с ошибкой.
- Для того чтобы узнать окончательный результат оплаты заказа, предприятию необходимо использовать один из методов получения результата авторизации.
Логику работы нового протокола версии 2 .0 отображает граф-нижеследующая схема. Текстовое описание ниже далее содержит ссылки на пронумерованные блоки граф- схемы.
Для начала оплаты заказа предприятие отправляет авторизационный запрос на сервер АПК Ассист и необходимые дополнительные параметры (блок 1). Также могут использоваться необязательные дополнительные параметры.
При оплате картой, требующей авторизации по протоколу версии 2 .0 АПК Ассист вернет в ответе код возврата AS110 (блок 2) и дополнительный блок параметров threedsdata. Список Полный список параметров, которые могут содержаться в блоке threedsdata представлен в таблице ниже:
Название | Принимаемые значения | Описание | В ответе сервиса1 |
version | Версия протокола 3-D Secure | 1,2 | |
threeDSServerTransID | Строка | ID транзакции в 3DS Server | 1,2 |
threeDSMethodURL | Строка, до 256 символов | URL на стороне банка-эмитента или платежной системы | 1 |
threeDSMethodData | Строка, до 256 символов | Закодированное в Base64 тело запроса | 1 |
alphaauthresult | Y - успешно, N - неуспешно, A - Attempt, U - невозможно провести аутентификацию, R - отказ, E - ошибка, I - для информации | Результат аутентификации будет получен в ответе, если она произошла в одну стадию (Frictionless Flow) | 1,2 |
challenge | F - Frictionless Flow | Взаимодействие с держателем карты (C - нужно, F - не нужно, D - отложенная аутентификация) | 1,2 |
challengeurl2 | Полное доменное имя (URL) https://acs.... Длина максимум 2048 символов | URL банка-эмитента или платежной системы для проверки плательщика | 1,2 |
challengerequest2 | Сообщение, закодированное методом Base64, длина переменная | Данные запроса, отправляемого на challengeurl | 1,2 |
Anchor | ||||
---|---|---|---|---|
|
1Параметр может содержаться в ответе сервиса: 1- silentpay; 2 - get3dsecver2.
Anchor | ||||
---|---|---|---|---|
|
2В случае авторизации без дополнительной проверки (Frictionless Flow) и для отложенной аутентификации (Decoupled authentication) параметры challengeurl и challengerequest не будут возвращены.
В зависимости от содержания полученного блока threedsdata (блоки 3,7,8) аутентификация продолжается по-разному.
Основные сценарии работы для версии 2 определяются тем, требуется ли вызов 3DSMethod (формирование скрытого iFrame в браузере клиента), а также требуется ли дополнительная аутентификация клиента и по какому сценарию она проходит:
- При наличии URL банка-эмитента threeDSMethodURL (блок 7) предприятие формирует скрытый HTML iFrame на платежной странице (блок 9), отправляет POST запрос с одним параметром threeDSMethodData на полученный адрес threeDSMethodURL, и далее вызывает сервис get3dsecver2 (блок 10).
- При наличии URL банка-эмитента threeDSMethodURL (блоки 7, 9, 10), но без необходимости дополнительного взаимодействия с держателем карты (блок 8) - Frictionless Flow (F), АПК Ассист сразу проводит транзакцию в процессинге или завершает операцию с ошибкой. В ответе на вызов сервиса get3dsecver2 предприятие получит статус оплаты (блок 6).
- При наличии URL банка-эмитента threeDSMethodURL (блоки 7, 9, 10) и при необходимости дополнительного взаимодействия с держателем карты (блок 8) предприятие должно сформировать на платежной странице объект HTML iFrame и отправить методом HTTPPOST запрос проверки держателя карты к указанному URL challengeurl (блок 11). В этом iFrame отображается страница ACS банка эмитента и плательщик вводит одноразовый пароль, полученный от банка. Это сценарий Challenge Flow (C).
- При наличии URL банка-эмитента threeDSMethodURL (блоки 7, 9, 10) при необходимости дополнительного взаимодействия с держателем карты (блок 8) и отложенной аутентификации предприятие должно оставить заказ в состоянии В Процессе и ожидать окончательного статуса оплаты (в рамках времени жизни заказа). Это сценарий Decoupled Authentication (D).
- При отсутствии URL банка-эмитента threeDSMethodURL и когда дополнительное взаимодействие с держателем карты не требуется - Frictionless Flow (F), сразу же будет проведена транзакция в процессинге, и процесс оплаты будет завершен (блок 6). Предприятие получит результат аутентификации и статус оплаты сразу в ответе на вызов сервиса silentpay.
- При отсутствии URL банка-эмитента threeDSMethodURL и при необходимости дополнительного взаимодействия с держателем карты (блок 8) для сценария Challenge Flow (C) предприятие должно сформировать на платежной странице объект HTML iFrame и отправить методом HTTP POST запрос проверки держателя карты к указанному URL challengeurl (блок 11). В этом iFrame отображается страница ACS банка эмитента и плательщик вводит одноразовый пароль, полученный от банка.
- При отсутствии URL банка-эмитента threeDSMethodURL и при необходимости дополнительного взаимодействия с держателем карты (блок 8) по сценарию отложенной аутентификации (D) предприятие должно оставить заказ в состоянии В Процессе и ожидать окончательного статуса оплаты (в рамках времени жизни заказа).
В тех сценариях работы, в которых требуется формирование скрытого HTML iFrame, на шаге 7 в блоке threedsdata предприятие получит необходимые параметры threeDSMethodData и threeDSMethodURL для формирования POST запроса (блок 9). Результат отправки запроса может быть положительным (код HTTP 200), отрицательным (любой другой код HTTP) или будет превышено значение тайм-аута отправки запроса (установить 10 секунд). После получения кода HTTP или истечения тайм-аута для продолжения процесса аутентификации необходимо отправить запрос на сервис get3dsecver2 (блок 10).
get3dsecver2 - веб-сервис продолжения аутентификации по 3D-Secure
URL для передачи запроса:
https://<SERVER-NAME>/get3dsec/get3dsecver2.cfm
Поддерживаемые форматы: SOAP, JSON.
Входные параметры:
Название | Принимаемые значения | Описание |
Merchant_ID | Число | Идентификатор предприятия в системе АПК Ассист |
Login | Строка | Ваш логин |
Password | Строка | Ваш пароль |
Billnumber | 15 или 16 цифр или расширенный формат | Уникальный номер платежа в АПК Ассист |
threeDSServerTransID | Строка | ID транзакции в 3DS Server |
АПК Ассист продолжает процесс аутентификации плательщика в платежной системе и банке-эмитенте через 3DS Server.
Если дополнительная проверка покупателя не требуется (Frictionless Flow) (блок 8), АПК Ассист проводит транзакцию в процессинге или завершает операцию с ошибкой (в зависимости от настроек процессинга, предприятия и результата аутентификации) (блок 6).
Ответ на запрос в этом случае будет содержать один из конечных кодов возврата (AS000 - операция успешно завершена, AS100-AS109 - отказ в авторизации), все поля ответа, описанные выше, и дополнительный блок данных threedsdata, в котором параметр challenge равен F, а поле alphaauthresult содержит результат аутентификации (Y, N, U, R, I).
Получение кода возврата AS110 в ответе на вызов сервиса get3dsecver2 означает, что нужна дополнительная проверка плательщика (Challenge Flow). Для сценария с дополнительной проверкой (Challenge Flow) в блоке данных threedsdata параметр challenge будет равен C, а параметры challengeurl и challengerequest будут заполнены (блок 8). Предприятие должно в этом случае сформировать на платежной странице объект HTML iFrame и отправить методом HTTP POST запрос проверки держателя карты к указанному URL (блок 11) с параметром creq, в котором передать полученное значение challengerequest. В этом iFrame отображается страница ACS банка-эмитента и плательщик вводит одноразовый пароль, полученный от банка.
В сценарии с отложенной аутентификацией в блоке данных threedsdata параметр challenge будет равен D, а параметры challengeurl и challengerequest будут отсутствовать (блок 8). Предприятие должно в этом случае оставить заказ в состоянии В Процессе и ожидать окончательного статуса оплаты.
Результат этой проверки АПК Ассист получит на свой сервер в асинхронном режиме. В зависимости от результата аутентификации и настроек процессинга и предприятия, АПК Ассист проведет транзакцию оплаты в процессинге или закроет операцию с ошибкой.
Для того, чтобы после прохождения дополнительной проверки плательщик смог вернуться обратно на сайт предприятия, следует сообщить службе поддержки АПК Ассист URL для возврата покупателя и приема результата прохождения дополнительной проверки. Для предприятия получение этого запроса будет означать, что дополнительная проверка завершена, и оно может в этот момент перенаправить браузер плательщика на страницу результата на своей стороне и ожидать завершения платежной транзакции в процессинге.
Получение результата платежа после дополнительной проверки отражено на схеме блоками 12, 13, 14.
Warning |
---|
Процесс получения результата дополнительной проверки на сервера АПК Ассист является асинхронным. Только после получения этого результата будет проведена (или не проведена) транзакция оплаты в процессинге, которая приведет к блокировке средств на карте клиента. Предприятию следует получить результат операции оплаты от АПК Ассист одним из стандартных способов. Предприятие может отправить запрос к сервису получения результата операции по номеру заказа, либо настроить на своей стороне получение результатов авторизации, отправляемых АПК Ассист на сервер предприятия. |
Пример блока данных threedsdata, в котором дополнительной проверки держателя не требуется (при этом код возврата responsecode будет отличен от AS110):
Code Block | ||
---|---|---|
| ||
<threedsdata>
<version>2.2</version>
<alphaauthresult>Y</alphaauthresult>
<challenge>F<challenge>
</threedsdata> |
Пример блока данных threedsdata, в котором требуется дополнительная проверка держателя (код возврата responsecode равен AS110):
Code Block | ||
---|---|---|
| ||
<threedsdata>
<version>2.2</version>
<challenge>С<challenge>
<challengeurl>https://acs.superbank.ru/version20/creq</challengeurl>
<challengerequest>eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6ImE3ZWJlMDU3LTg2ZjgtNGFmMS05MTJkHGNlYTc5Mzc0OWUxMiIsImFjc1RyYW5zSUQiOiI5ODhmOWZmYS1kNzYyLTQ0YjktOWI0OS01ZDRkMjU5YmRkZWQiLCJkc1RyYW5zSUQiOiJkMGJmZGQzYy00YzdhLTVmNjktODAwMC0wMDAwMDAwOGM3NjMiLCJtZXNzYWdlVHlwZSI6IkNSеZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIiwiY2hhbGxlbmdlV2luZG93U2l6ZSI6IjA0In0</challengerequest>
</threedsdata> |
Чтобы получить ответ веб-сервиса в формате JSON, нужно передать в запросе content-type=application/json или format=5.
Описание параметров всех веб-сервисов АПК Ассист для формата JSON содержится в файле swagger по адресу:
https://docs.belassist.by/swagger/
Пример ответа в формате JSON для операции без дополнительной аутентификации:
Code Block | ||
---|---|---|
| ||
{
"threedsdata": {
"version": "2.2.0",
"alphaauthresult": "Y",
"challenge": "F"
},
"MakePaymentResponse": {
"customermessage": "Завершено успешно",
"message": "Завершено успешно",
"token": "",
"testmode": "0",
"operationtype": "100",
"orderdate": "23.10.2019 10:45:47",
"packetdate": "23.10.2019 10:49:48",
"orderamount": "15.00",
"ordercomment": "",
"cardexpirationdate": "12/20",
"ordercurrency": "BYN",
"recommendation": "",
"processingname": "Fake",
"meannumber": "220000****0001",
"orderstate": "Approved",
"rate": "1",
"amount": "15.00",
"responsecode": "AS000",
"meantypename": "VISA",
"protocoltypename": "NET",
"bankcountry": "UNKNOWN",
"customer": {
"lastname": "Testov",
"firstname": "Тест",
"middlename": "Testovich",
"ipaddress": "10.10.10.10",
"email": "null@assist.by"
},
"cardholder": "TEST",
"approvalcode": "X38988",
"billnumber": "5161957242913232.1",
"issuebank": "UNKNOWN",
"currency": "RUB",
"ordernumber": "231020191345849_user2",
"meansubtype": ""
}
} |
Пример ответа для операции c дополнительной аутентификацией:
Code Block | ||
---|---|---|
| ||
{
"threedsdata": {
"version": "2.2.0",
"challengerequest": "eyJtZXNzYWdlVHlwZSI6IkNSZXEiLCJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjQxMWI2ODVjLWUzODAtNGZkYS05YmIzLWJiZjM2OTJiNGMyNiIsImFjc1RyYW5zSUQiOiJmY2FlMDMzNS0xODgwLTRlNjgtOWJjMy0wMDcyZDM4ZTkzODYiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDIiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0",
"challengeurl": "https://fake.3dss.t.paysecure.ru/acs/challenge",
"challenge": "C"
},
"MakePaymentResponse": {
"customermessage": "Создана Аутентификация клиента по технологии 3DSecure",
"message": "Создана Аутентификация клиента по технологии 3DSecure",
"testmode": 0,
"operationtype": 100,
"orderdate": "05.04.2022 11:19:32",
"packetdate": "05.04.2022 11:19:34",
"orderamount": 31.79,
"ordercomment": "",
"cardexpirationdate": "12/23",
"ordercurrency": "BYN",
"recommendation": "",
"processingname": "Credx",
"meannumber": "554373****6654",
"orderstate": "In Process",
"rate": 1,
"amount": 31.79,
"responsecode": "AS110",
"meantypename": "MasterCard",
"protocoltypename": "NET",
"bankcountry": "Россия",
"customer": {
"lastname": "Test",
"firstname": "Auto",
"middlename": "",
"ipaddress": "127.0.0.1",
"email": "null@assist.by"
},
"cardholder": "TEST",
"approvalcode": "",
"billnumber": "5817109255129273.1",
"issuebank": "BANK",
"currency": "BYN",
"ordernumber": "6b510f3d-1327-4f3b-bc17-612daeed3aac",
"meansubtype": "Platinum MasterCard Salary-Immediate Debit"
}
} |