Cкрытый режим платежа, при котором все данные о заказе, о покупателе, о способе оплаты и платежном средстве передаются непосредственно предприятием, может быть выполнен с использованием карты или токена.
1. Оплата с использованием карты
1.1. Передача параметров платежа
Для работы в данном режиме предусмотрен web-сервис silentpay.
URL запроса для скрытого режима оплаты:
https://<SERVER-NAME>/pay/silentpay.cfm
Список параметров, передаваемых в режиме silentpay:
Название | Обяза- тельное поле | Принимаемые значения | Значение по умолчанию | Описание |
Merchant_ID | Да | Число | Идентификатор предприятия в системе АПК Ассист | |
Login | Да | Строка | Ваш логин | |
Password | Да | Строка | Ваш пароль | |
OrderNumber | Да/Нет | 128 символов | Номер заказа в системе расчетов предприятия. | |
OrderAmount | Да | Число, 15 цифр (разделитель «.») | Сумма платежа в оригинальной валюте (например, 10.34) | |
OrderCurrency | Нет | 3 символа | Валюта юр.лица или предприятия | Код валюты, в которой указана сумма платежа OrderAmount (RUB, USD, EUR) |
OrderComment | Нет | 256 символов | Комментарий | |
Delay | Нет | 0 – одностадийный механизм работы, | 0 | Признак авторизации кредитной карты при двустадийном механизме работы |
Language | Нет | RU – русский | Язык юр.лица или предприятия | Язык авторизационных страниц |
ClientIP | Нет | IP адрес покупателя | ||
Card type | Нет | 1 – VISA | Идентификатор типа карты для оплаты. | |
Cardnumber | Да | Номер карты | ||
Cardholder | Да | 70 символов без цифр. Разделитель – пробел. | Держатель карты. | |
Expiremonth | Да | 1-12 | Месяц окончание действия карты | |
Expireyear | Да | Год в формате YYYY | Год окончания действия карты | |
Cvc 2 | Да | 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 | Формат выдачи результата. |
Signature | Нет | строка | Формируется строка по определенным правилам. На базе этой строки алгоритмом MD5 формируется дайджест. Дайджест подписывается закрытым RSA ключом мерчанта. Длина ключа - 1024. Полученная байтовая последовательность является подписью магазина. Подпись передается нам в виде дополнительного параметра, закодированного в виде строки BASE64 | |
RecurringIndicator | Нет | 1 –рекуррентный платеж 0 - обычный платеж | 0 | Признак рекуррентного платежа |
RecurringMinAmount | Нет/Да | Число, 15 цифр (разделители «.», «,») | Минимальная сумма рекуррентных платежей. Параметр обязателен при RecurringIndicator = 1 | |
RecurringM ax Amount | Нет/Да | Число, 15 цифр (разделители «.», «,») | Максимальная сумма рекуррентных платежей. Параметр обязателен при RecurringIndicator = 1 | |
RecurringPeriod | Нет/Да | Число, 10 цифр | Периодичность рекуррентных платежей в днях. Параметр обязателен при RecurringIndicator = 1 | |
RecurringMaxDate | Нет/Да | Строковое представление даты в формате DD.MM.YYYY | Дата окончания рекуррентных платежей. Параметр обязателен при RecurringIndicator = 1 | |
GenerateReceipt * | Нет | 0 или 1 | 1 | Разрешение формирования фискального чека. При значении параметра 0 формирование фискального чека запрещено для данного заказа. |
Tax* | Нет | 10 символов | Определяется настройкой предприятия "Ставка налога по умолчанию" и используется в режиме без передачи позиций чека (вся сумма должна проводится с одной ставкой). | Идентификатор ставки налога, значение из справочника (novat, vat0, vat10, vat20, vat110, vat120). |
ReceiptLine * | Нет | 128 символов | Определяется настройкой предприятия "Шаблон строки чека по умолчанию" и используется в режиме без передачи позиций чека). | Текстовое описание позиции чека, если по чеку проводится одна единственная позиция. |
FPMode * | Нет | Число | Определяется настройкой предприятия "Признак способа расчета по умолчанию" и используется в режиме без передачи позиций чека. | |
ChequeItems** | Нет | Структура данных | Параметры позиций чека | |
CustomerNumber | Нет | 32 символа | Внутренний номер клиента предприятия (мерчанта) | |
SaveCard | Нет | 1 – карта привязывается к данному номеру клиента; 0 – карта не привязывается | 0 | В случае успешного платежа разрешает сохранять карту по данному номеру клиента для последующих платежей. Если карта для данного номера клиента уже была сохранена ранее, то параметр игнорируется. |
* параметры, необходимые при использовании сервиса фискализации АПК Ассист.
** параметры, необходимые при передаче позиций чека, подробное описание здесь.
Пример запроса HTTP POST проведения платежа в скрытом режиме silentpay:
<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="RUB"> <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="hidden" NAME="GenerateReceipt" VALUE="1"> <INPUT TYPE="hidden" NAME="Tax" VALUE="Идентификатор ставки налога"> <INPUT TYPE="hidden" NAME="ReceiptLine" VALUE="Наименование позиции чека"> <INPUT TYPE="hidden" NAME="FPMode" VALUE="Признак способа расчета"> <INPUT TYPE="Submit"></FORM>
Описание веб-сервиса для формата SOAP:
https://test.paysecure.ru/pay/silentpay.wsdl
Список возвращаемых параметров:
Название | Значение |
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) Для типа подписи MD5 - пусто 2) Для типа PGP – значение X, подписанное закрытым ключом АПК Ассист, закодированное в BASE64 |
pareq | Пакет запроса по 3D-Secure авторизации |
ascurl | Адрес для переадресации плательщика для прохождения 3D-Secure авторизации |
Результат запроса в зависимости от выбранного формата получения будет выглядеть следующим образом.
В формате CSV:
Название поля:Значение поля Название поля:Значение поля....Название поля:Значение поля
В формате WDDX:
Значение поля Значение поля Значение поля Значение поля Значение поля Значение поля.................
В формате XML:
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> <!DOCTYPE result [ <result firstcode='Первый код' secondcode='Второй код' count='Кол-во объектов'> <orders><order> <ordernumber>Номер заказа</ordernumber> <responsecode>Код возврата</response_code> <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>
В формате SOAP:
<?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> <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 принимает значение AS000.
В случае неуспешной оплаты responsecode принимает значения AS100-AS998 (кроме специального кода AS110, если необходима авторизация по 3-D Secure, подробнее см. п. 1.4).
Если запрос на оплату не может быть обработан, в результате вернутся ненулевые значения параметров firstcode, secondcode.
Если в ответе получен responsecode AS300, а статусы заказа (orderstate) и операции (operationstate) - In Process (В процессе), то актуальный статус оплаты можно получить позже через запрос к сервису получения результатов orderresult.
Если результат оплаты не получен (например, вследствие сетевых проблем), то его можно получить позже через запрос к сервису orderresult.
Пример результата запроса в формате XML, вернувшего ошибку (неправильный пароль):
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <!DOCTYPE result [...]> <result firstcode="7" secondcode="102" count="0"></result>
С описанием первого и второго кодов автоматизированных интерфейсов можно ознакомиться здесь.
1.2. Рекуррентный платеж
Сервис предназначен для инициации оплаты за продолжение предоставления услуг по подписке. Данная возможность допустима для оплат, проводимых через процессинг UCS.
Для инициации рекуррентного платежа необходимо в первоначальном запросе на авторизацию передать значение параметра RecurringIndicator =1 и значения параметров, задающих диапазон сумм последующих рекуррентных платежей, периодичность оплат (в днях) и дату окончания подписки.
Затем с указанной периодичностью предприятие инициирует платеж, задавая сумму, а необходимая платежная информация (данные кредитной карты) берется из первоначальной оплаты.
Для совершения следующего рекуррентного платежа необходимо отправить запрос на сервер АПК Ассист методом HTTP POST или SOAP (в кодировке UTF-8).
URL запроса для рекуррентного платежа:
https://<SERVER-NAME>/recurrent/rp.cfm
Список параметров запроса
Название | Обязательное поле | Принимаемые значения | Значение по умолчанию | Описание |
BillNumber | Да | 15 или 16 цифр | BillNumber первого заказа | |
OrderNumber | Да | 128 символов | Номер нового заказа для рекуррентного платежа | |
Merchant _ ID | Да | Число | Идентификатор предприятия в АПК Ассист | |
Login | Да | 8 - 20 символов | Логин (лат. буквы и цифры, символ _) | |
Password | Да | 8 - 20 символов | Пароль (лат. буквы и цифры) | |
Amount | Да | Число, 15 цифр (разделитель «.») | Сумма рекуррентного платежа | |
Currency | Да | 3 символа | Валюта рекуррентного платежа | |
TestMode | Нет | 0 – рабочий режим, 1 – тестовый режим | Режим работы предприятия | Должен совпадать с режимом (рабочий или тестовый) первого платежа |
OrderComment | Нет | 256 символов | Комментарий | |
Language | Нет | RU EN | EN | Язык вывода результатов |
Format | Нет | 1 – CSV | 1 для POST запроса, 4 для SOAP | Формат выдачи результатов |
Пример запроса для формата HTTP POST:
<FORM ACTION="https://test.paysecure.ru/recurrent/rp.cfm" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="BillNumber" VALUE="511111100000001.1"> <INPUT TYPE="HIDDEN" NAME="OrderNumber" VALUE="A1_R1"> <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="Amount" VALUE="20"> <INPUT TYPE="HIDDEN" NAME="Currency" VALUE="RUB"> <INPUT TYPE="HIDDEN" NAME="Format" VALUE="3"> <INPUT TYPE="HIDDEN" NAME="Language" VALUE="EN"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Выполнить"> </FORM>
Список параметров ответа:
Название | Значение |
billnumber | Уникальный номер заказа в системе АПК Ассист, расширенный формат |
ordernumber | Номер заказа |
testmode | Тестовый режим |
ordercomment | Комментарий |
orderamount | Оригинальная сумма заказа |
ordercurrency | Оригинальная валюта заказа |
firstname | Имя плательщика |
lastname | Фамилия плательщика |
middlename | Отчество плательщика |
Email плательщика | |
orderdate | Дата заказа по Гринвичу (GMT) |
orderstate | Статус заказа |
packetdate | Дата формирования запроса по Гринвичу (GMT) |
signature | |
operationtype | Тип операции |
amount | Сумма операции |
currency | Валюта операции |
ipadress | IP-адрес плательщика |
meantypename | Тип платежного средства |
meansubtype | Подтип платежного средства |
meannumber | Номер платежного средства |
cardholder | Держатель платежного средства |
cardexpirationdate | Срок действия карты |
issuebank | Название банка-эмитента |
bankcountry | Страна банка-эмитента |
rate | Курс валюты |
responsecode | Код возврата |
message | Сообщение о результате операции |
customermessage | Сообщение о результате для покупателя |
recommendation | Рекомендация |
approvalcode | Код авторизации |
protocoltypename | Протокол |
processingname | Процессинг |
В качестве значения поля <meannumber> возвращаются первые 6 и последние 4 цифры номера карты, остальные цифры скрыты символом *.
1.3. Дополнительные параметры (для СПМ)
Для магазинов, работающих по режиму silentpay, есть возможность передавать расширенные данные о клиенте для использования их системой противодействия мошенничеству.
Дополнительно к основному списку параметров, передаваемых в режиме silentpay, магазин может передать следующие необязательные параметры:
Название | Принимаемые значения | Описание |
HEADER_HTTP_USER_AGENT | Строковый (255 байт) | Заголовок http запроса USER-AGENT |
HEADER_HTTP_ACCEPT | Строковый (255 байт) | Заголовок http запроса ACCEPT |
HEADER_HTTP_ACCEPT_LANGUAGE | Строковый (128 байт) | Заголовок http запроса ACCEPT-LANGUAGE |
HEADER_HTTP_REFERER | Строковый (255 байт) | Заголовок http запроса REFERER |
HEADER_REMOTE_HOST | Строковый (16 символов) | Переменная окружения REMOTE_ADDRESS. |
HEADER_HTTP_FORWARDED | Строковый (16 байт) | Заголовок http запроса FORWARDED |
HEADER_HTTP_X_FORWARDED_FOR | Строковый (16 байт) | Заголовок http запроса FORWARDED-FOR |
HEADER_HTTP_VIA | Строковый (128 байт) | Заголовок http запроса VIA |
CLIENT_JS_VER | Строковый (16 символов) | при помощи JS |
CLIENT_LOCAL_TIME | Строковый (128 символов) | при помощи JS |
CLIENT_SCREEN_RES | Строковый (16 символов) | Screen.width + 'x' + screen.height |
CLIENT_SCREEN_COLORS | Числовой (15) | Screen.pixelDepth |
CLIENT_JS_BROWSER_NAME | Строковый (255 символов) | navigator.appName |
CLIENT_TIME_ZONE | Числовой (5) | Временная зона в часах. Формула перевода: (-GMT_H). Например, GMT +2 будет соответствовать значению -2. |
CLIENT_COOKIES | Строковый (16 символов) | |
CLIENT_JAVA | Логическое (true, false) | navigator.javaEnabled() |
CLIENT_STYLESHEETS | Логическое (true, false) | Document.stylesheet.disabled |
CLIENT_BROWSER_PLATFORM | Строковый (64 символа) | navigator.platform |
CLIENT_SYSTEM_LANGUAGE | Строковый (5 байт) | navigator.systemLanguage |
CLIENT_BROWSER_LANGUAGE | Строковый (5 байт) | navigator. language |
CLIENT_USER_LANGUAGE | Строковый (5 байт) | navigator. userLanguage |
CLIENT_PROCESSOR | Строковый (16 символов) | navigator.cpuClass |
CLIENT_CONNECTION | Строковый (16 символов) | navigator.connectionType |
CLIENT_HOSTADDRESS | Строковый (16 символов) | Вычисленный на базе HOST_ADDRESS и DNS lookup |
CLIENT_HOSTNAME | Строковый (70 символов) | Переменная окружения HOST_ADDRESS |
1.4. 3D-Secure авторизация
Для магазинов, работающих по режиму silentpay, реализована возможность оплаты по картам, требующим 3D-Secure авторизации (в случае, если у магазина и процессинга выполнены соответствующие настройки).
При оплате картой, требующей авторизации по 3D-Secure, АПК Ассист возвращает код ответа (response_code) AS110. В пакет ответа по режиму silentpay добавляются также дополнительные поля pareq и acsurl для авторизации клиента по 3D-Secure.
Клиент должен быть перенаправлен на сайт банка-эмитента по адресу, указанному в параметре acsurl (acsurl - значение, полученное в пакете результата режима silentpay от АПК Ассист).
В форме должны содержаться следующие поля:
AcsUrl | Url банка-эмитента. Значение, полученное в пакете результата режима silentpay от АПК Ассист. |
PaReq | Значение, полученное в пакете результата режима silentpay от АПК Ассист. |
TermUrl | Url магазина для получения результата от банка эмитента. |
MD | Идентификатор, по которому в дальнейшем связывается результат, полученный от банка, и заказ. Данное поле возвращается от банка эмитента. |
Пример запроса HPPT POST к банку-эмитенту:
<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>
Банк-эмитент возвращает следующие поля:
PaRes | Пакет результата |
MD | Идентификатор, введенный ранее |
Для продолжения процесса авторизации по 3D-Secure магазину необходимо передать в АПК Ассист пакет результата авторизации по 3D-Secure pares. Данная функциональность реализована в веб-сервисе get3DSec.
Get3DSec – передача параметров авторизации карты по 3D-Secure
URL для передачи запроса:
https://<SERVER-NAME>/get3dsec/ws3dsec.cfm
Формат запроса и ответа SOAP, wsdl-описание сервиса доступно по URL:
https://payments.paysecure.ru/get3dsec/get3dsec.wsdl
Магазин должен отправить в АПК Ассист значение параметра pares, полученное в ответе от банка-эмитента. Для этого необходимо отправить запрос в формате SOAP.
Входные параметры:
Метод: send3dsparams
Параметр | Обязательное поле | Описание |
merchant_id | Да | Идентификатор магазина в системе АПК Ассист |
login | Да | Ваш логин |
password | Да | Ваш пароль |
ordernumber | Да | Номер заказа, для которого передаются параметры 3DS |
pares | Да | Пакет результата по 3DS |
language | Нет | Язык |
Пример SOAP запроса:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <send3dsparams xmlns="urn:assist-processor"> <merchant_id>Идентификатор предприятия</merchant_id> <login>Ваш логин</login> <password>Ваш пароль</password> <ordernumber>Номер заказа</ordernumber> <language>Язык</language> <pares>Значение, полученное в пакете результата от банка-эмитента</pares> </send3dsparams> <s:Body> <s:Envelope>
Возвращаемая информация: пакет результата режима silentpay.
В случае возникновения ошибки:
<?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>
2. Оплата с использованием токена
2.1. Оплата токеном в браузере на стороне магазина
При проведении оплаты токеном Google Pay в браузере на стороне магазина выполняются следующие действия:
- Покупатель выбирает товары на сайте интернет-магазина и нажимает кнопку оплаты Google Pay (доступно в браузерах с поддержкой Payment Request API на мобильных устройствах).
- После нажатия кнопки оплаты через Google Pay осуществляется вызов Payment Request API и передача сертификата с публичным ключом Ассист.
- Открывается специальный диалог браузера, в котором можно выбрать одну из карт, привязанных в мобильном приложении Google Pay.
- После выбора карты покупателю предлагается приложить палец к считывателю для подтверждения платежа.
- Приложение Google Pay формирует зашифрованный пакет с токеном и данными платежа и возвращает его скрипту страницы магазина.
- Зашифрованный пакет с токеном и данными платежа передается в сервис TokenPay АПК Ассист.
- АПК Ассист расшифровывает пакет с токеном и данными платежа.
- АПК Ассист проводит оплату токеном через процессинг расчётного банка одним из способов:
-токеном, если покупатель использовал токенизированную карту;
-как COF-операцию нетокенизированной картой, если это разрешено для предприятия и имеется соответствующий процессинг;
-как ECOM- операцию нетокенизированной картой с переадресацией покупателя на страницу ввода CVC2 и/или дополнительной аутентификацией 3DSecure.
- АПК Ассист возвращает результаты проведения оплаты интернет-магазину.
При проведении оплаты токеном Apple Pay в браузере на стороне магазина выполняются следующие действия:
- Покупатель выбирает товары на сайте интернет-магазина и нажимает кнопку оплаты Apple Pay (доступно только в браузере Safari на платформе MacOS).
- После нажатия кнопки оплаты через Apple Pay осуществляется вызов Payment Request API и передача сертификата с публичным ключом мерчанта. Одновременно открывается специальный диалог, в котором можно будет выбрать одну из карт, привязанных в мобильном приложении Apple Pay.
- После выбора карты покупателю направляется PUSH уведомление на iPhone и предлагается приложить палец к считывателю для подтверждения платежа.
- Приложение Apple Pay формирует зашифрованный пакет с токеном и данными платежа и возвращает его скрипту страницы магазина.
- Зашифрованный пакет с токеном и данными платежа передается в сервис TokenPay АПК Ассист.
- АПК Ассист расшифровывает пакет с токеном и данными платежа.
- АПК Ассист проводит оплату токеном через процессинг расчётного банка.
- АПК Ассист возвращает результаты проведения оплаты интернет-магазину.
Для организации приема платежей токеном в браузере на стороне магазина нужно выполнить следующие подготовительные шаги:
- сделать заявку для подключения платёжных средств для оплаты токенами (Apple Pay, Google Pay) в службу технической поддержки АПК Ассист support@assist.ru;
- интегрировать в код своей страницы:
- для получения шифрованного пакета с токеном и данными платежа:
- Payment Request API для Google Pay;
- ApplePay JS API для Apple Pay;
- для проведения оплаты – обращение к сервису TokenPay;
- для получения шифрованного пакета с токеном и данными платежа:
- получить подтверждение от службы технической поддержки АПК Ассист о том, что все необходимые технические настройки для приёма платежей токенами при оплате товаров и услуг данному предприятию выполнены;
- подготовиться к приему платежей:
- при использовании Apple Pay создать и подписать сертификат Apple Pay для выполнения платежей с помощью соответствующего раздела в ЛК АПК Ассист;
- при использовании Google Pay необходимо зарегистрироваться в Google Pay API, получить уникальный идентификатор для использования в качестве параметра MerchantID, установить значение «assist» для параметра gateway и указать allowedCardAuthMethods = ["CRYPTOGRAM_3DS"] для организации схемы шифрования пакета данных с токеном или allowedCardAuthMethods = ["PAN_ONLY", "CRYPTOGRAM_3DS"], если необходимо также принимать платежи сохраненными в учетной записи Google нетокенизированными картами.
2.2. Передача платежной информации TokenPay
Для передачи зашифрованного блока данных о платеже нужно отправить запрос на сервер АПК Ассист методом HTTP POST (в кодировке UTF-8).
URL запроса для передачи зашифрованного блока данных о платеже:
https://<SERVER_NAME>/pay/tokenpay.cfm ,
где <SERVER_NAME> - адрес сервера который предоставляется службой поддержки Ассист в процессе подключения.
Список параметров запроса:
Название | Обяза- тельное поле | Принимаемые значения | Значение по умолчанию | Описание |
Merchant_ID | Да | Число | Идентификатор предприятия в системе АПК Ассист | |
Login | Да | 8 - 20 символов | Логин учетной записи в АПК Ассист (лат. буквы и цифры, символ _) | |
Password | Да | 8 - 20 символов | Пароль учетной записи в АПК Ассист (лат. буквы и цифры) | |
OrderNumber | Да | 128 символов | Номер заказа в системе расчетов предприятия. | |
OrderAmount | Да | Число, 15 цифр (разделители «.», «,») | Сумма платежа в оригинальной валюте (например, 10.34) | |
OrderCurrency | Нет | 3 символа | Валюта юр.лица или предприятия | Код валюты, в которой указана сумма платежа OrderAmount |
Order Comment | Нет | 256 символов | Комментарий | |
Delay | Нет | 0 – одностадийный механизм работы 1- двустадийный механизм | 0 | Признак авторизации кредитной карты при двустадийном механизме работы |
Language | Нет | RU - русский, EN - английский | Язык юр.лица или предприятия | Язык квитанции об оплате |
ClientIP | Нет | Максимум 15 цифр, 4 разделителя «.» | IP адрес покупателя | |
TokenType | Нет | 1 – Apple Pay; 2 – Google Pay; 3 – Samsung Pay | 1 | Идентификатор типа платежного токена |
PaymentToken | Нет | JSON | Платежный токен | |
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 | Нет | 4 – SOAP | 5 | Формат выдачи результатов |
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 |
Список параметров ответа:
Название | Значение |
Параметры заказа | |
ordernumber | Номер заказа |
billnumber | Уникальный номер заказа в системе АПК Ассист |
testmode | Тестовый режим |
ordercomment | Комментарий |
orderamount | Оригинальная сумма заказа |
ordercurrency | Оригинальная валюта заказа |
firstname | Имя плательщика |
lastname | Фамилия плательщика |
middlename | Отчество плательщика |
Email плательщика | |
orderdate | Дата заказа по Гринвичу (GMT) |
orderstate | Статус заказа |
packetdate | Дата формирования запроса по Гринвичу (GMT) |
signature |
|
checkvalue | uppercase(md5(uppercase(md5(SALT) + md5(Х)))), где SALT – секретное слово; Х – результат строковой склейки параметров merchant_id, ordernumber, orderamount, ordercurrency, orderstate (без разделителей), + -строковая склейка |
Параметры операции | |
billnumber | Расширенный формат billnumber |
operationtype | Тип операции |
operationstate | Состояние операции |
amount | Сумма операции |
currency | Валюта операции |
ipaddress | IP-адрес плательщика |
clientip | IP-адрес совершившего операцию |
meantype_id | ID платежного средства |
meantypename | Тип платежного средства |
meansubtype | Подтип платежного средства |
meannumber | Номер платежного средства |
cardholder | Держатель платежного средства |
issuebank | Название банка-эмитента |
bankcountry | Страна банка-эмитента |
responsecode | Код возврата |
message | Сообщение о результате операции |
customermessage | Сообщение о результате для покупателя |
recommendation | Рекомендация |
approvalcode | Код авторизации |
protocoltypename | Протокол |
processingname | Процессинг |
operationdate | Дата и время операции (GMT) |
authresult | Результат аворизации по 3DSecure (Y - успешно, N - неуспешно, A - Attempt, U – неизвестно) |
authrequired | Результат проверки вовлеченности карты (1 – вовлечена, 0 – не вовлечена, -1 – неизвестно, null – ошибка при определении вовлеченности) |
slipno | Номер финансовой транзакции, отправляемый в процессинг |
firstcode* | Первый код ошибки автоматизированных интерфейсов |
secondcode* | Второй код ошибки автоматизированных интерфейсов |
continueurl* | Адрес перехода на страницу аутентификации для покупателя |
Внимание! В рамках одного заказа может быть проведено несколько операций (оплаты, подтверждения оплаты, отмены). Более того, в рамках одного заказа может быть несколько операций оплаты, если некоторые из них были неуспешными. Успешная операция оплаты заказа может быть только одна. В этих случаях в ответе на запрос о результатах операций по номеру заказа может быть несколько вложенных операций для одного номера заказа.
Внимание! В полученном ответе необходимо проверить значение параметра testmode. Если платеж был выполнен в тестовом режиме (testmode=1), то отгружать товар или оказывать услугу по текущему заказу не требуется.
Пример результата запроса в формате JSON:
{"order": { "ordernumber":"26012015_4" ,"billnumber":"5899110210668265" ,"testmode":"0" ,"ordercomment":"тестовый платеж" ,"orderamount":"24.00" ,"ordercurrency":"RUB" ,"firstname":"" ,"lastname":"" ,"middlename":"" ,"email":"" ,"orderdate":"26.01.2015 17:25:39" ,"orderstate":"Timeout" ,"fraud_state":"" ,"fraud_reason":"" ,"checkvalue":"85C6C974AADC1CADFCFD195730ED090B" ,"operations":[ {"billnumber":"5899110210668265.1" ,"operationtype":"100" ,"operationstate":"TimeOut" ,"amount":"24.00" ,"currency":"RUB" ,"clientip":"10.20.10.85" ,"ipaddress":"0.0.0.0" ,"meantype_id":"61" ,"meantypename":"SamsungPay" ,"meansubtype":"" ,"meannumber":"" ,"cardholder":"" ,"issuebank":"UNKNOWN" ,"bankcountry":"UNKNOWN" ,"responsecode":"AS200" ,"message":"Data input timeout." ,"customermessage":"Data input timeout." ,"recommendation":"" ,"approvalcode":"" ,"protocoltypename":"NET" ,"processingname":"" ,"operationdate":"26.01.2015 17:25:39" ,"authresult":"" ,"authrequired":"" ,"slipno":""} ] } ,"packetdate":"26.01.2015 18:16:19" }
Дополнительно можно ознакомиться с вариантами организации платежей токенами с использованием разных провайдеров.