Если ресурс мерчанта сертифицирован PCI DSS то допускается процесс оплаты при котором данные банковской карты запрашиваются у покупателя на сайте мерчанта и процесс оплаты запускается непосредственно с сервера мерчанта.
При такой форме проведения платежа платеж создается в точности так же как при обычном варианте с вводом данных карты на стороне ПС OCTO.
При создании платежа (метод /prepare_payment) важно установить поле return_url
в правильное значение - это должен быть адрес страницы на вашем ресурсе, включающий в query string идентификатор платежа, по которому сайт магазина идентифицирует платеж и отобразит покупателю статус платежа.
Метод: POST https://secure.octo.uz/pay/{UUID}
Тело запроса:
{
"pan" : "4276380012341025",
"exp":"2006",
"cardHolderName" : "BOB MARLEY",
"cvc2" : "123",
"email" : "bob@yahoo.com",
"card_token" : "95326fe5-db59-45c9-a947-3c5ac4fc5ef5",
"method" : "bank_card"
}
Описание полей запроса:
Поле | Обязательное | Описание |
---|---|---|
UUID | да | octo_payment_UUID полученный от ОКТО в ответе на prepare_payment |
pan | да / нет | Номер карты - обязателен при оплате без токена |
exp | да / нет | Дата истечения срока действия карты в формате YYMM, - обязателен при оплате без токена |
cardHolderName | да / нет | Имя держателя карты - обязателен при оплате без токена международными картами |
cvc2 | да / нет | трехзначный код безопасности с обратной стороны карты - обязателен для междунарожных карт |
да / нет | Email для отправки покупателю чека. Обязателен в случае если при создании платежа (prepare_payment) не был установлен параметр user_data.email | |
card_token | да / нет | токен банковской карты, созданный ранее методом /bind_card, обязателен если не указаны непосредственно данные карты (pan, exp, cardHolderName) |
method | да / нет | Метод оплаты (платежная система bank_card , uzcard , mir_card , humo ), обязателен при оплате без использования токена |
Ответ сервера:
{
"error":0,
"errMessage":"",
"data":{
"id":75513,
"uuid":"dbc92b5b-00b1-4012-b80a-828f87fd82e2",
"merchantId":242,
"merchant":null,
"merchantTransId":"API super pan created 1",
"totalSum":0.1,
"splittedSum":0.1,
"currency":"USD",
"selectedMethod":"bank_card",
"createTime":1582904132109,
"expireTime":null,
"peyedTime":null,
"merCreateTime":48153000,
"description":"Super PAN 2.0",
"autoCapture":true,
"withoutSite":false,
"isTest":false,
"returnUrl":"https://merchant-site.uz/user-s-home-page",
"redirectUrl":"https://pay2.octo.uz/uzcard/sms/bd888340-d5b4-482b-a75a-4f9bc7c28c14",
"payMethods":[
{
"only":null,
"method":"bank_card"
},
{
"only":[
"mir"
],
"method":"mir_card"
}
],
"status":"wait_user_action",
"basket":null,
"user":null,
"airline":null,
"language":null,
"tariffId":2,
"fee":0.004,
"transferSum":0.096,
"refundedSum":0,
"optionalData":null,
"forConsideration":false,
"riskLevel":0,
"auditedAt":null,
"auditorId":null
}
}
В данном ответе существенную роль играет поле redirectUrl
, куда надо перенаправить покупателя для завершения процедуры 3D Secure.
В завершении процесса оплаты ПС OCTO перенаправляет покупателя на return_url
установленный при создании платежа.
Коды ошибок:
Код | Описание |
---|---|
0 | нет ошибок |
1 | Платеж не найден |
2 | Слишком частый запрос: с одинаковым uuid платежа чаще 1 раза в сек. |
3 | Платеж просрочен (вышло время жизни ссылки на оплату) |
4 | Статус платежа не позволяет проводить оплату (уже оплачен/отменен или уже в процессе оплаты) |
5 | Возможность оплаты с передачей карточных данных не активирована |
6 | неуказаны или неверно указаны обязательные поля |
7 | недопустимая валюта платежа |
8 | в настройках мерчанта не указаны данные используемого ЕПОС-терминала |
9 | Передан одновременно токен + карточные данные в открытом виде |
10 | Не удалось получить данные карты по казанному токену |
12 | BIN карты не соответствует диапазону номеров выбранной платежной системы (method) |
13 | Платеж заблокирвоан из-за подозрения на фрод |
14 | в настройках мерчанта не уопределен маршрут оплаты для выбранной платежной системы |
15 | Неверну указан expireDate или карта просрочена |
16 | Неверный PAN |
17 | Ошибка верификации OTP |
500 | Внутренняя ошибка сервера (ошибка настроек или логики на стороне сервера) |