Для оплаты с помощью токена нужно отправить запрос на сервер АПК Ассист в формате JSON (swagger описание: https://docs.belassist.by/swagger/).
URL запроса для передачи платежного токена
https://<SERVER_NAME>/pay/tokenpay.cfm ,
где <SERVER_NAME> - адрес сервера который предоставляется службой поддержки Assist в процессе подключения.
Список параметров запроса:
Название | Обязательное поле | Принимаемые значения | Значение по умолчанию | Описание |
Merchant_ID | Да | Число | Идентификатор предприятия в системе АПК Ассист | |
Login | Да | 8 - 20 символов | Логин учетной записи в АПК Ассист (лат. буквы и цифры, символ _) | |
Password | Да | 8 - 20 символов | Пароль учетной записи в АПК Ассист (лат. буквы и цифры) | |
OrderNumber | Да | 128 символов | Номер заказа в системе расчетов предприятия. | |
OrderAmount | Да | Число, 15 цифр (разделители «.», «,») | Сумма платежа в оригинальной валюте (например, 10.34) | |
OrderCurrency | Нет | 3 символа | Валюта юр.лица или предприятия | Код валюты, в которой указана сумма платежа OrderAmount |
OrderComment | Нет | 4000 символов | Комментарий | |
Delay | Нет | 0 – одностадийный механизм работы 1- двустадийный механизм | 0 | Признак авторизации кредитной карты при двустадийном механизме работы |
Language | Нет | RU - русский, EN - английский | Язык юр.лица или предприятия | Язык квитанции об оплате |
ClientIP | Нет | Максимум 15 цифр, 4 разделителя «.» | IP адрес покупателя | |
TokenType | Нет | 1 – Apple Pay; | 1 | Идентификатор типа платежного токена. 5 - платежный токен Assist используется для операций CIT COF |
PaymentToken | Да | JSON | Для типов 1-3 - платежный токен провайдера (Apple Pay, Samsung Pay) Для платежного токена Assist (тип 5) - {"Token":"<UUID>", "CustomerNumber":"<CustomerNumber>"} | |
Lastname | Да | 70 символов | Фамилия покупателя | |
Firstname | Да | 70 символов | Имя покупателя | |
Middlename | Нет | 70 символов | Отчество покупателя | |
Да | 128 символа | E-mail покупателя | ||
Address | Нет | 256 символов | Адрес покупателя | |
HomePhone | Нет | 64 символа | Домашний телефон покупателя | |
WorkPhone | Нет | 20 символов | Рабочий телефон покупателя | |
MobilePhone | Нет | 20 символов | Мобильный телефон покупателя | |
Country | Нет | 3 символа | Код страны покупателя | |
State | Нет | 3 символа | Код региона покупателя | |
City | Нет | 70 символов | Город покупателя | |
Zip | Нет | 25 символов | Индекс предприятия связи покупателя | |
URL_RETURN | Нет | 255 символов | URL страницы, на которую должен вернуться покупатель после осуществления платежа в системе (должна быть активирована опция «Перейти на страницу магазина» в настройках мерчанта в Личном кабинете). В целях безопасности рекомендуется использовать протокол с шифрованием HTTPS. | |
URL_RETURN_OK | Нет | 255 символов | Значение параметра URL_RETURN, а при его отсутствии – URL для возврата при успешной авторизации, указанный в Личном кабинете | URL страницы, куда должен вернуться покупатель после неуспешного осуществления платежа в системе АПК Ассист или при отсутствии ответа об окончательном статусе платежа (текущий статус "В процессе"), подробнее см. "Возврат покупателя на страницу интернет-магазина после покупки". Должна быть активирована опция «Возвращаться в магазин по URL для возврата» в Личном кабинете. В целях безопасности рекомендуется использовать протокол с шифрованием HTTPS. |
URL_RETURN_NO | Нет | 255 символов | ||
isConvert | Нет | 0 - не конвертировать в базовую валюту; | 1 | Флаг конвертации валюты платежа в базовую валюту |
Format | Нет | 4 – SOAP | 5 | Формат выдачи результатов |
Signature | Нет | строка | Формируется строка, сшитая из следующих параметров заказа: Merchant_ID;OrderNumber;OrderAmount;OrderCurrency, разделенных точкой с запятой. На базе этой строки алгоритмом MD5 формируется дайджест. Дайджест подписывается закрытым RSA ключом мерчанта. Длина ключа - 1024. Полученная байтовая последовательность является подписью магазина. Подпись передается нам в виде дополнительного параметра, закодированного в виде строки BASE64. Внимание! Параметр необходим для того, чтобы обезопасить передаваемые данные от возможности их подмены злоумышленниками. Следует также включить настройку проверки кода или подписи в ЛК. | |
RecurringIndicator | Нет | 1 – рекуррентный платеж | 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 | Результат авторизации по 3D-Secure (Y - успешно, N - неуспешно, A - Attempt, U – неизвестно) |
authrequired | Результат проверки вовлеченности карты (1 – вовлечена, 0 – не вовлечена, -1 – неизвестно, null – ошибка при определении вовлеченности) |
slipno | Номер финансовой транзакции, отправляемый в процессинг |
firstcode1 | Первый код ошибки |
secondcode1 | Второй код ошибки |
continueurl2 | Адрес перехода на страницу аутентификации для покупателя |
1Параметры firstcode и secondcode принимают значения «3» и «115» соответственно при требовании ввода CVC2, а при необходимости дополнительной аутентификации 3D-Secure без ввода CVC2 - значения «0», также в этом случае отдается код ответа responsecode AS110.
2Параметр выдается только в том случае, если требуется ввод CVC2 или необходима дополнительная аутентификация 3D-Secure, при этом для продолжения оплаты следует переадресовать покупателя на страницу continueurl.
Внимание! В рамках одного заказа может быть проведено несколько операций (оплаты, подтверждения оплаты, отмены). Более того, в рамках одного заказа может быть несколько операций оплаты, если некоторые из них были неуспешными. Успешная операция оплаты заказа может быть только одна. В этих случаях в ответе на запрос о результатах операций по номеру заказа может быть несколько вложенных операций для одного номера заказа.
Внимание! В полученном ответе необходимо проверить значение параметра testmode. Если платеж был выполнен в тестовом режиме (testmode=1), то отгружать товар или оказывать услугу по текущему заказу не требуется.
Пример результата запроса в формате JSON при оплате токенизированной картой:
{"order":[ { "ordernumber":"26012015_4" ,"billnumber":"5899110210668265" ,"testmode":"0" ,"ordercomment":"тестовый платеж" ,"orderamount":"24.00" ,"ordercurrency":"BYN" ,"firstname":"" ,"lastname":"" ,"middlename":"" ,"email":"" ,"orderdate":"26.01.2015 17:25:39" ,"orderstate":"In Process" ,"fraud_state":"" ,"fraud_reason":"" ,"checkvalue":"85C6C974AADC1CADFCFD195730ED090B" ,"operations":[ {"billnumber":"5899110210668265.1" ,"operationtype":"100" ,"operationstate":"In Process" ,"amount":"24.00" ,"currency":"BYN" ,"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":"" ,"customermessage":"" ,"recommendation":"" ,"approvalcode":"" ,"protocoltypename":"NET" ,"processingname":"" ,"operationdate":"26.01.2015 17:25:39" ,"authresult":"" ,"authrequired":"" ,"slipno":""} ] } ], "packetdate":"26.01.2015 18:16:19" }
Пример результата запроса в формате JSON при оплате нетокенизированной картой:
{"order":[ { "ordernumber":"2019.07.01-1226", "billnumber":"516009019047110", "testmode":"0", "ordercomment":"Test 4 mode", "orderamount":"101.45", "ordercurrency":"BYN", "firstname":"", "lastname":"", "middlename":"", "email":"", "orderdate":"01.07.2019 15:31:16", "orderstate":"In Process", "fraud_state":"" "fraud_reason":"" "checkvalue":"85C6C974AADC1CADFCFD195730ED090B" "operations":[ {"billnumber":"516009019047110.1", "operationtype":"100", "operationstate":"New", "amount":"101.45", "currency":"BYN", "clientip":"10.20.10.66", "ipaddress":"127.0.0.1", "meantype_id":"1", "meantypename":"VISA", "meansubtype":"Classic", "meannumber":"411111****1111", "cardholder":"N/A", "cardexpirationdate":"12/24", "issuebank":"BANK", "bankcountry":"Россия", "responsecode":"AS300", "message":"", "customermessage":"", " "recommendation":"", "approvalcode":"", "protocoltypename":"NET", "processingname":"NAME", "operationdate":"01.07.2019 15:31:18", "authresult":"", "authrequired":"", "slipno":""} ] } ], "packetdate":"26.01.2015 18:16:19", "firstcode":"3", "secondcode":"115", "continueurl":"https://<SERVER_NAME>/pay/pay.cfm?CFSID=LiRNMzMiSFc3Wy0nWFdaQCJYTiQgCg%3D%3D" }
В случае успешной оплаты код возврата responsecode принимает значение AS000.
В случае неуспешной оплаты responsecode принимает значения AS100-AS998 (кроме специального кода AS110, если необходима авторизация по 3-D Secure).
Если запрос на оплату не может быть обработан, в результате вернутся ненулевые значения параметров firstcode, secondcode.