Перейти к содержанию

Способы оплаты

Способы оплаты можно читать и менять, если у приложения есть право на настройки магазина. Нужно ещё право на внешние оплаты.

Если нужного права нет, ответ 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 оплаты нет.

POST/admin/payment_gateways.json
Параметр Описание
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 — свой способ без перехода на платёжную страницу. Доставку можно указать точечно.

POST/admin/payment_gateways.json
Параметр Описание
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}
  ]
}

Смена доставки, названия и наценки:

PUT/admin/payment_gateways/6101772.json
Параметр Описание
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 уже не содержит.