При переходе покупателя «в корзину» - сайт магазина должен подготовить платеж через систему Octo, чтобы получить ссылку для перенаправления покупателя на платежные страницы Octo. Для этого с сервера (из недоступной для покупателя зоны) магазина должен быть выполнен запрос:
URL: https://secure.octo.uz/prepare_payment
Method: POST
Content-type: application/json
Тело запроса:
{
"octo_shop_id": 10000,
"octo_secret": "2d45df74-bb95-47cf-a616-8d6dcee2e10d",
"shop_transaction_id": "uniq shop transaction_id",
"auto_capture": true,
"test": false,
"init_time": "2018-03-30 11:22:33",
"user_data": {
"user_id": "уникальный ИД_пользователя в системе магазина",
"phone": "79001112233",
"email": "user@mail.com"
},
"total_sum": 103.33,
"currency": "USD",
"tag": "ticket",
"description": "Название платежа, например: Авиаперелет Москва-Сингапур",
"basket": [
{
"position_desc": "Йогурт MANON клубничный",
"count": 2,
"price": 33.99,
"supplier_shop_id":33
},
{
"position_desc": "Йогурт MANON банановый",
"count": 1,
"price": 31.99
}
],
"payment_methods": [
{
"method": "bank_card"
},
{
"method": "qiwi"
}
],
"tsp_id":18,
"return_url": "http://merchant.site.uz/return_URL",
"notify_url": "http://merchant.site.uz/send_me_status_URL",
"language": "uz",
"ttl": 15
}
Описание полей запроса:
Поле | Обязательное | Описание |
---|---|---|
octo_shop_id | да | Уникальный ID магазина (доступен в ЛК магазина) |
octo_secret | да | Персональный секретный ключ магазина, который генерируется в ЛК магазина. Должен содержаться в безопасной недоступной зоне сайта магазина. |
shop_transaction_id | да | Уникальный идентификатор транзакции на стороне магазина. Используется OCTO для предотвращения случайного дублирования транзакций. |
auto_capture | нет | Если true, то ПС Octo будет автоматически подтверждать списание средств со счета покупателя. Если false, то после авторизации платежа Octo будет ожидать от магазина дополнительного подтверждения окончательного завершения транзакции. По умолчанию false. |
test | нет | Тестовый платёж или нет |
init_time | да | время создания платежа yyyy-MM-dd HH:mm:ss |
user_data | нет | Информация о покупателе, используется для отображения на странице оплаты |
user_id | да | ID пользователя в БД магазина. Обязательно в случае передачи всего блока user_data. |
phone | да | Обязательно в случае передачи всего блока user_data. |
да | Обязательно в случае передачи всего блока user_data. | |
total_sum | да | Итоговая сумма платежа |
currency | да | Валюта. Варианты: “USD”, “UZS” |
description | да | Описание товара |
tag | нет | Необязательный короткий маркер типа платежа. Определяется мерчантом и позволияет категоризировать платежи в личном кабинете. |
basket | нет | Блок детальной информации по корзине. Если присутствует, то будет отображен покупателю при оплате. |
position_desc | да | Название позиции в чеке. Обязательно в случае передачи всего блока basket. |
supplier_shop_id | нет | ID магазина поставщика данного товара в системе OCTO (используется для сплиттинга платежей в marketplace) |
count | да | Число таких позиций. Обязательно в случае передачи всего блока basket. |
price | да | Цена одной позиции. Обязательно в случае передачи всего блока basket. |
payment_methods | нет | Множество доступных покупателю методов оплаты. Если не передается, то будут предложены все доступные методы. |
method | да | Название одного метода из вариантов: bank_card , uzcard , humo . Обязательно в случае передачи всего блока payment_methods. |
return_url | да | URL на который следует перенаправить покупателя после завершения оплаты. URL должен содержать уникальный параметр, идентифицирующий конкретный платеж. |
notify_url | нет | URL на который сервер OCTO будет отправлять нотификации об изменении статуса платежа. Если не установлен, то используется общий URL, который установлен в личном кабинете. |
language | нет | Язык платежной формы. По умолчанию - язык браузера или en. Допустимые значения: oz - узбекский, латиница uz - узбекский, кирилица en - английский ru - русский |
ttl | нет | Время жизни платежа с момента создания (в минутах). По истечению этого времени провести платеж будет невозможно. |
tsp_id | нет | Идентификатор торгово-сервисного предприятия, обеспечивающего продажу данной услуги или товара |
customer_ip | нет | IP-адрес покупателя. Если указан, то сервис OCTO сверяет его с IP-адресом плательщика и в случае отличия блокирует оплату. |
В ответ на запрос магазина ПС Octo отвечает следующим JSON в теле ответа:
{
"error": 0,
"errMessage": "",
"data": {
"status": "created",
"shop_transaction_id": "uniq shop transaction_id",
"octo_payment_UUID": "1145df74-bb95-47cf-a616-8d6dcee2e222",
"octo_pay_url": "https://pay.octo.uz/pay_wisard/1145df74-bb95-47cf-a616-8d6dcee2e222",
"transfer_sum": 990.00,
"refunded_sum": 0.00,
"processor_key": "ygygdxsxgh=",
"rrn": "253242",
"cancel_reason": "error_1",
"processing_code": "777"
}
}
Описание полей ответа Octo:
Поле | Обязательное | Описание |
---|---|---|
data | да (если error=0) | При успешном ответе содержит все поля (кроме erroe и errMessage). |
status | да (если error=0) | Статус данного платежа в системе Octo, один из:created - платеж созданcanceled - платеж отмененwait_user_action - ожидает действий пользователяwaiting_for_capture - платеж авторизован и ожидает подтверждения магазиномsucceeded - платеж успешно выполнен |
shop_transaction_id | да (если error=0) | Уникальный идентификатор транзакции на стороне магазина. |
octo_payment_UUID | да (если error=0) | Уникальный идентификатор транзакции в ПС Octo. |
octo_pay_url | да (если error=0) | URL на который следует перенаправить покупателя для совершения платежа |
error | да | Код ошибки. Варианты: 0 - нет ошибок 1 - ошибка формата данных 2 - ошибка авторизации 3 - итоговая сумма по корзине (basket) не сходится с total_sum 4 - внутренняя ошибка сервиса 5 - статус магазина не позволяет создавать реальные платежи 6 - недопустимая валюта 7 - неизвестный или недопустимый по тарифу метод платежа 8 - для позиции корзины указан недопустимый ID поставщика supplier_shop_id 9 - отсутствует notify_url и при этом auto_capture == false 10 - не все данные пользователя магазина мерчанта указаны корректно 11 - слишком часто идет запрос на создание платежа с одним и тем же shop_transaction_id 12 - мерчант в статусе blocked 13 - данному мерчанту необходимо указать параметр tsp_id |
errMessage | нет | детальное описание ошибки |
transfer_sum | нет | Сумма по счету за вычетом комиссии Octo, доступная для возврата средств покупателю |
refunded_sum | нет | Возвращенная покупателю сумма |
processor_key | нет | ID в процессинге |
rrn | нет | RRN транзакции. Только при bank_card |
cancel_reason | нет | Причина отказа транзакции. Только при bank_card |
processing_code | нет | Код ответа процессинга. Только при bank_card |