Запрос на списание средств за заказ

Списание заблокированных средств. Доступно только для платежей в статусе AUTHORIZED.
При успешном результате запроса статус платежа изменится на CAPTURED.

В случае передачи суммы подтверждения меньшей, чем оригинальная, оставшаяся часть платежа будет возвращена.
В данном случае нужно передать итоговую корзину предоставляемых товаров и услуг.
Итоговая корзина должна формироваться из текущей корзины исключением некоторых позиций, по которым производился возврат.

Запрос

POST /api/merchant/v1/orders/{orderId}/capture

{
    "orderAmount": decimal ("84.00")    # Опционально. Сумма к списанию.
                                        # Если не указана, будет списана вся заблокированная сумма

    "cart": {                           # Опционально. Итоговая корзина
        "items": [...],
        "discounts": [...],
        "total": {
            "amount": decimal ("42.00")
        }
    },

    "shipping": {                       # Опционально. Итоговый способ доставки
        "methodType": enum<COURIER|PICKUP|YANDEX_DELIVERY>,
        "amount": decimal ("42.00"),
        "receipt": {...},
    },
    "externalOperationId": string,      # Опционально. Идентификатор операции.
}

Ответ

Ответ в случае успеха содержит детали операции списания:

  • 200 OK c телом:

    {
        "status": "success"
        "data": {
            "operation": {
                "operationId": uuid,
                "orderId": string,
                "operationType": CAPTURE,
                "status": enum<PENDING|SUCCESS>,
                "externalOperationId": string or null,
                "amount: decimal ("84.00"),
                "created": string,
                "updated": string
            }
        }
    }
    

Ответ в случае ошибки:

  • 404 Not Found - Заказ с указанным orderId не найден

  • 400 Bad Request - Некорректный запрос. Тело ответа:

    {
        "status": "fail",
        "reasonCode": enum<INVALID_PAYMENT_STATUS|ORDER_AMOUNT_MISMATCH|CAPTURE_AMOUNT_TOO_LARGE|...>,  # код ошибки
        "reason": string or null  # текстовое описание, например: "Cancelled payment cannot be captured"
    }
    
В этой статье: