Cкрытый режим платежа, при котором все данные о заказе, о покупателе, о способе оплаты и платежном средстве передаются непосредственно предприятием, может быть выполнен с использованием карты или токена.
Передача параметров платежа
Для работы в данном режиме предусмотрен web-сервис silentpay.
URL запроса для скрытого режима оплаты:
https://<SERVER-NAME>/pay/silentpay.cfm
Параметры передаются методом POST в теле запроса в формате «ключ=значение», SOAP запросом, либо в формате JSON (swagger описание: https://docs.assist.ru/swagger/).
Список параметров, передаваемых в режиме 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 адрес покупателя  | ||
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  | Формат выдачи результата.  | 
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 | Нет | 1 – проверять 3-D Secure согласно настройкам предприятия, 0 – проводить платеж без 3-D Secure.  | 0 | Признак отключения 3-D Secure. Использование такого режима работы возможно по согласованию с Assist. Для настройки необходимо обратиться в службу технической поддержки support@belassist.by При использовании параметра его необходимо добавлять и в подпись заказа, которая формируется по определенным правилам.  | 
Пример запроса 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="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>
Описание веб-сервиса для формата SOAP:
https://<SERVER-NAME>/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:
Название поля:Значение поля Название поля:Значение поля.…Название поля:Значение поля
В формате 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, подробнее см. здесь).
Если запрос на оплату не может быть обработан, в результате вернутся ненулевые значения параметров 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>
С описанием первого и второго кодов ошибок можно ознакомиться здесь.