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>
С описанием первого и второго кодов ошибок можно ознакомиться здесь.