При двустадийном механизме работы разделены процессы авторизации банковской карты (операция оплаты) и совершения финансовой транзакции (финансовое подтверждение).
2.3.1. Операция оплаты по банковской карте
На первой стадии происходит авторизация банковской карты, проверка ее платежеспособности и блокирование средств на счету клиента. Если предприятие использует двустадийный механизм работы, то, кроме необходимых и дополнительных параметров платежа (как описано в пункте 2.2.1), в авторизационном запросе должно быть передано значение параметра Delay=1.
<FORM ACTION=" https://<SERVER-NAME>/pay/order.cfm" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="Merchant_ID" VALUE="Ваш Merchant_ID"> <INPUT TYPE="HIDDEN" NAME="OrderNumber" VALUE="A20042011_28"> <INPUT TYPE="HIDDEN" NAME="OrderAmount" VALUE="237.40"> <INPUT TYPE="HIDDEN" NAME="OrderCurrency" VALUE="USD"> <INPUT TYPE="HIDDEN" NAME="Delay" VALUE="1"> <INPUT TYPE="HIDDEN" NAME="Language" VALUE="RU"> <INPUT TYPE="HIDDEN" NAME="Email" VALUE="test@test.ru"> <INPUT TYPE="HIDDEN" NAME="OrderComment" VALUE="Оплата заказа 28-A"> <INPUT TYPE="HIDDEN" NAME="URL_RETURN_OK" VALUE="http://www.URL.ru/yes"> <INPUT TYPE="HIDDEN" NAME="URL_RETURN_NO" VALUE="http://www.URL.ru/no"> <INPUT TYPE="HIDDEN" NAME="CardPayment" VALUE="1"> <INPUT TYPE="HIDDEN" NAME="WMPayment" VALUE="0"> <INPUT TYPE="HIDDEN" NAME="YMPayment" VALUE="0"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Купить"> </FORM>
После нажатия на такую кнопку покупатель перенаправляется на платежные страницы АПК Ассист, где вводит персональные данные и данные карты для совершения операции оплаты. Операция оплаты может быть как успешной, так и неуспешной. После успешного завершения операции оплаты при двустадийном механизме работы предприятия статус заказа в системе АПК Ассист принимает значение Delayed (Ожидает подтверждения оплаты), статусы заказа см. в Таблице 5.1 Приложения.
На второй стадии после успешной операции оплаты предприятие проводит операцию подтверждения оплаты. Только после подтверждения оплаты в процессинг отправляется финансовая транзакция.
Внимание! При двустадийном механизме работы списание средств со счета покупателя происходит только после подтверждения оплаты со стороны предприятия.
2.3.2. Подтверждение оплаты
Финансовое подтверждение интернет-магазин может осуществить в течение 4 дней в Личном кабинете либо с помощью веб-сервиса.
Для подтверждения оплаты нужно отправить запрос на сервер АПК Ассист методом HTTP POST или SOAP (в кодировке UTF-8).
URL запроса для передачи финансового подтверждения:
https://<SERVER-NAME>/charge/charge.cfm.
Список параметров запроса подтверждения оплаты при двустадийном механизме работы предприятия представлен в таблице:
Название | Обязатель- ное поле | Принимаемые значения | Значения по умолчанию | Описание |
|---|---|---|---|---|
Billnumber | Да | 15 или 16 цифр Расширенный формат | Номер платежа, соответствующий заказу в системе АПК Ассист, допускается передача расширенного номера платежа | |
Merchant _ID | Да | Число | Идентификатор предприятия в АПК Ассист | |
Login | Да | 8 - 20 символов | Логин (лат. буквы и цифры, символ _) | |
Password | Да | 8 - 20 символов | Пароль (лат. буквы и цифры) | |
Amount | Нет* | Число, 15 цифр (разделители «.», «,») | Сумма финансового подтверждения | |
Currency | Нет* | 3 символа | Код валюты подтверждения. Может быть использован только код валюты операции оплаты | |
ClientIP | Нет | Максимум 15 цифр, 4 разделителя «.» | IP компьютера оператора, который производит подтверждение платежа | |
Language | Нет | RU – русский | RU | Язык выдачи результатов |
Format | Нет | 1 – CSV (поля с разделителями) | Формат входных данных | Формат выдачи результатов |
* Параметры Amount , Currency могут присутствовать или отсутствовать в запросе только одновременно. В случае отсутствия параметров операция подтверждения оплаты будет проведена на полную сумму.
Все параметры, передаваемые в запросе, проходят автоматическую валидацию в АПК Ассист, см. Правила валидации входных параметров.
Подтверждение может быть проведено как на всю сумму оплаты, так и на часть суммы. Допускается совершение частичного подтверждения на сумму, не превышающую суммы оплаты, если операция оплаты по банковской карте была совершена через процессинг, имеющий соответствующие настройки.
Обращаем Ваше внимание, что при проведении подтверждения оплаты (как в Личном кабинете, так и с помощью веб-сервиса) нужно указывать сумму подтверждения в валюте операции оплаты (обычно это рубли).
Для совершения операции подтверждения оплаты можно передать параметр billnumber как в обычном формате (если по заказу была одна успешная операция оплаты), так и в расширенном формате. При использовании расширенного формата обязательно должен быть указан номер успешной операции оплаты (в некоторых случаях это может быть не первая по счету операция, например, 500000000000001.2).
Операция подтверждения оплаты всегда успешная, кроме отказа по техническим причинам. В случае технического сбоя подтверждение оплаты нужно повторить. Повторное подтверждение оплаты не приводит к повторному списанию денег.
В случае успешного подтверждения оплаты статус заказа в системе АПК Ассист принимает значение Approved (Оплачен), код возврата responsecode AS000.
Описание веб-сервиса для формата SOAP можно увидеть на странице:
https://<SERVER-NAME>/charge/charge.wsdl
Список параметров ответа:
Название | Значение |
|---|---|
ordernumber | Номер заказа |
responsecode | Код возврата |
recommendation | Рекомендации |
message | Сообщение |
ordercomment | Комментарий |
orderdate | Дата заказа по Гринвичу (GMT) |
amount | Сумма операции |
currency | Валюта операции |
meantypename | Тип платежного средства |
meannumber | Номер платежного средства |
lastname | Фамилия плательщика |
firstname | Имя плательщика |
middlename | Отчество плательщика |
issuebank | Название банка-эмитента |
Email плательщика | |
bankcountry | Страна банка-эмитента |
rate | Курс валюты |
approvalcode | Код авторизации |
meansubtype | Подтип платежного средства |
cardholder | Держатель платежного средства |
| cardexpirationdate | Срок действия карты |
ipaddress | IP-адрес плательщика |
protocoltypename | Протокол |
testmode | Тестовый режим |
customermessage | Сообщение о результате для покупателя |
orderstate | Cтатус заказа |
processingname | Процессинг |
operationtype | Тип операции |
billnumber | Расширенный формат billnumber |
orderamount | Оригинальная сумма операции |
ordercurrency | Оригинальная валюта операции |
| slipno | Номер финансовой транзакции, отправляемый в процессинг |
packetdate | Дата формирования запроса по Гринвичу (GMT) |
signature |
2.3.3. Примеры
Пример запроса для формата HTTP POST:
<FORM ACTION="https://<SERVER-NAME>/charge/charge.cfm" METHOD="POST"> <INPUT TYPE="HIDDEN" NAME="BillNumber" VALUE="545000000000001"> <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="100"> <INPUT TYPE="HIDDEN" NAME="Currency" VALUE="RUR"> <INPUT TYPE="HIDDEN" NAME="Language" VALUE="0"> <INPUT TYPE="HIDDEN" NAME="Format" VALUE="3"> <INPUT TYPE="SUBMIT" NAME="Submit" VALUE="Выполнить"> </FORM>
Пример результата запроса подтверждения оплаты в формате CSV:
ordernumber: 0001-01 responsecode: AS000 recommendation: message: Завершено успешно. ordercomment: тестовый платеж orderdate: 01.01.2011 09:00:05 amount: 100.00 currency: RUB meantypename: VISA meannumber: 411111****1111 lastname: Testov firstname: Test middlename: Testovich issuebank: BANK email: test@testpost.ru bankcountry: Россияг rate: 1 approvalcode: meansubtype: Corporate Purchasing Card cardholder: TEST cardexpirationdate:12/20 ipaddress: 111.23.11.23 protocoltypename: testmode: 1 customermessage: Завершено успешно. orderstate: Approved processingname: Name operationtype: 200 billnumber: 511111100000001.2 orderamount: 100.00 ordercurrency: RUB slipno: 111111 packetdate: 01.01.2011 09:01:47 signature:
В формате XML:
<?xml version='1.0' encoding='utf-8' standalone='yes'?>
<!DOCTYPE result [
<!ATTLIST result
firstcode CDATA #REQUIRED
secondcode CDATA #REQUIRED
count CDATA #REQUIRED>
<!ELEMENT result (orders?)>
<!ELEMENT orders (order)>
<!ELEMENT order (ordernumber?,
responsecode?, recommendation?, message?, ordercomment?, orderdate?, amount?,
currency?, meantypename?, meannumber?, lastname?, firstname?, middlename?,
issuebank?, email?, bankcountry?, rate?, approvalcode?, meansubtype?,
cardholder?, cardexpirationdate?, ipaddress?, protocoltypename?, testmode?, customermessage?, orderstate?, processingname?, operationtype?,
billnumber?, orderamount?, ordercurrency?, slipno?, packetdate?, signature?, pareq?,
acsurl?)>
<!ELEMENT ordernumber (#PCDATA)>
<!ELEMENT responsecode (#PCDATA)>
<!ELEMENT recommendation (#PCDATA)>
<!ELEMENT message (#PCDATA)>
<!ELEMENT ordercomment (#PCDATA)>
<!ELEMENT orderdate (#PCDATA)>
<!ELEMENT amount (#PCDATA)>
<!ELEMENT currency (#PCDATA)>
<!ELEMENT meantypename (#PCDATA)>
<!ELEMENT meannumber (#PCDATA)>
<!ELEMENT lastname (#PCDATA)>
<!ELEMENT firstname (#PCDATA)>
<!ELEMENT middlename (#PCDATA)>
<!ELEMENT issuebank (#PCDATA)>
<!ELEMENT email (#PCDATA)>
<!ELEMENT bankcountry (#PCDATA)>
<!ELEMENT rate (#PCDATA)>
<!ELEMENT approvalcode (#PCDATA)>
<!ELEMENT meansubtype (#PCDATA)>
<!ELEMENT cardholder (#PCDATA)>
<!ELEMENT cardexpirationdate (#PCDATA)>
<!ELEMENT ipaddress (#PCDATA)>
<!ELEMENT protocoltypename (#PCDATA)>
<!ELEMENT testmode (#PCDATA)>
<!ELEMENT customermessage (#PCDATA)>
<!ELEMENT orderstate (#PCDATA)>
<!ELEMENT processingname (#PCDATA)>
<!ELEMENT operationtype (#PCDATA)>