Способы оплаты
Способы оплаты можно читать и менять, если у приложения есть право на настройки магазина. Нужно ещё право на внешние оплаты.
Если нужного права нет, ответ 403:
{"status":"error","message":"Недостаточно прав для операции"}
Способы оплаты
GET /admin/payment_gateways.json отдаёт способы оплаты по position. GET /admin/payment_gateways/:id.json — один способ. Неизвестный id — 404 и HTML-страница.
В объекте есть id, type, position, title, description, margin, available_for_individual_clients, available_for_juridical_clients, payment_delivery_variants, created_at, updated_at. margin — наценка в процентах, строка вроде "0.0". Связь payment_delivery_variants указывает delivery_variant_id: без неё способ в чекауте для этой доставки не показывается.
add_delivery_variants: true при создании привязывает все текущие доставки. Одна доставка передаётся массивом payment_delivery_variants_attributes с delivery_variant_id. Оба флага сразу не обязательны: достаточно одного массива.
Название уникально в магазине. Повтор — 422, тело {"title":["уже существует"]}. Оба флага клиентов false — 422, тело {"client_types":["Не задан тип клиента"]}. Тип вне списка, например PaymentGateway::YandexMoney, отвечает 500 и HTML-страницей.
PUT меняет название, описание, наценку, флаги клиентов и связи с доставками. Связь удаляется элементом с id и _destroy: 1. Новая связь — элемент с delivery_variant_id. Оба действия в одном теле выполняются вместе.
DELETE /admin/payment_gateways/:id.json отвечает 200, тело пустое.
Протокол PaymentGateway::External — в статье о внешнем способе. Создание этого типа тем же POST отвечает 201 и добавляет url, shop_id, password, send_order, success_url, fail_url, server_url.
Наложенный платёж
PaymentGateway::Cod — оплата при получении. Отдельного URL оплаты нет.
| Параметр | Описание |
|---|---|
payment_gateway[type] обязательныйстрока |
PaymentGateway::Cod. |
payment_gateway[title] обязательныйстрока |
Название. Уникально в магазине. |
payment_gateway[margin] необязательныйчисло |
Наценка в процентах. Больше -100 и меньше 1000. |
payment_gateway[description] необязательныйстрока |
Текст для покупателя. |
payment_gateway[available_for_individual_clients] необязательныйлогический |
Доступен физлицам. По умолчанию true. |
payment_gateway[available_for_juridical_clients] необязательныйлогический |
Доступен юрлицам. Хотя бы один тип клиента должен быть true. |
payment_gateway[add_delivery_variants] необязательныйлогический |
Привязать все текущие доставки. |
POST /admin/payment_gateways.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json
{
"payment_gateway": {
"type": "PaymentGateway::Cod",
"title": "docs-api наложенный",
"margin": 2.5,
"available_for_individual_clients": true,
"available_for_juridical_clients": false,
"add_delivery_variants": true
}
}
Ответ · 201
{
"id": 6101773,
"type": "PaymentGateway::Cod",
"position": 4,
"title": "docs-api наложенный",
"description": null,
"margin": "2.5",
"available_for_individual_clients": true,
"available_for_juridical_clients": false,
"payment_delivery_variants": [
{"id": 8, "delivery_variant_id": 9},
{"id": 9, "delivery_variant_id": 17}
]
}
Связь есть у каждого способа доставки магазина.
Произвольный способ
PaymentGateway::Custom — свой способ без перехода на платёжную страницу. Доставку можно указать точечно.
| Параметр | Описание |
|---|---|
payment_gateway[type] обязательныйстрока |
PaymentGateway::Custom. |
payment_gateway[title] обязательныйстрока |
Название. |
payment_gateway[description] необязательныйстрока |
Текст для покупателя. |
payment_gateway[margin] необязательныйчисло |
Наценка в процентах. |
payment_gateway[payment_delivery_variants_attributes] необязательныймассив |
Доставки, для которых способ доступен. У элемента delivery_variant_id. |
POST /admin/payment_gateways.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json
{
"payment_gateway": {
"type": "PaymentGateway::Custom",
"title": "docs-api произвольный",
"description": "Счёт менеджеру",
"margin": 0,
"payment_delivery_variants_attributes": [
{"delivery_variant_id": 49}
]
}
}
Ответ · 201
{
"id": 6101772,
"type": "PaymentGateway::Custom",
"title": "docs-api произвольный",
"description": "Счёт менеджеру",
"margin": "0.0",
"available_for_individual_clients": true,
"available_for_juridical_clients": true,
"payment_delivery_variants": [
{"id": 7, "delivery_variant_id": 49}
]
}
Смена доставки, названия и наценки:
| Параметр | Описание |
|---|---|
id обязательныйчисло |
id способа в пути. |
payment_gateway[title] необязательныйстрока |
Новое название. |
payment_gateway[margin] необязательныйчисло |
Новая наценка. |
payment_gateway[description] необязательныйстрока |
Новое описание. |
payment_gateway[payment_delivery_variants_attributes] необязательныймассив |
Удаление связи: id и _destroy. Новая связь: delivery_variant_id. |
PUT /admin/payment_gateways/6101772.json
Authorization: Basic API_KEY:API_PASSWORD
Accept: application/json
Content-Type: application/json
{
"payment_gateway": {
"title": "docs-api произвольный обновлён",
"margin": "1.5",
"description": "Новое описание",
"payment_delivery_variants_attributes": [
{"id": 7, "_destroy": 1},
{"delivery_variant_id": 17}
]
}
}
Ответ · 200
{
"id": 6101772,
"type": "PaymentGateway::Custom",
"title": "docs-api произвольный обновлён",
"description": "Новое описание",
"margin": "1.5",
"payment_delivery_variants": [
{"id": 26, "delivery_variant_id": 17}
]
}
DELETE /admin/payment_gateways/6101772.json отвечает 200, тело пустое. Следующий список этого id уже не содержит.