Перейти к содержимому

Диспуты

Открытие диспутов по ордерам и их список.

Открыть диспут по ордеру

Запрос

Можно только по ордерам в success или failed. Нужно право orders.write.

Как это работает:

  • При создании ордер переходит в disputed. Вебхук order.status_changed на этот переход может прийти, а может и нет — ориентируйтесь на ответ.
  • Пока диспут открыт, ордер остаётся в disputed, поэтому повторный запрос отвечает 400 DISPUTE_NOT_ALLOWED. Найти диспут можно через GET /disputes?search={orderId}.
  • Диспут передаётся платёжной стороне; если она его не приняла, API отвечает 502 WALLET_BACKEND_ERROR (или 500, если она недоступна), а статус ордера не меняется.
  • По ордеру в success платёжная сторона в ответ может открыть свой диспут: тогда ордер переходит в disputed с вебхуком order.status_changed, а в ответе возвращается этот диспут со служебной причиной dispute_created:….
Безопасность
apiKeyAuth
Путь
idstring, (uuid)обязательный

ID ордера

Телоapplication/jsonобязательный
reasonstringобязательный
curl -i -X POST \
  'https://b2b-app.lumowallet.io/_mock/apis/orders/{id}/disputes' \
  -H 'Content-Type: application/json' \
  -H 'X-API-Key: YOUR_API_KEY_HERE' \
  -d '{
    "reason": "string"
  }'

Ответы

Диспут создан

Телоapplication/json
idstring, (uuid)обязательный
orderIdstring, (uuid)обязательный
statusstring(DisputeStatus)обязательный
Enum:"submitted""in_review""resolved""rejected"
resolutionDisputeResolution (string) or null
One of:

Исход. Заполняется, когда диспут рассмотрен, — смотрите его, а не status, который говорит только, рассмотрен диспут или нет. refund / partial_refund — оплата отменена (ордер → failed), confirm — диспут отклонён, оплата в силе (ордер → success).

string(DisputeResolution)
Enum:"refund""confirm""partial_refund"
reasonstringобязательный
adminCommentstring or null
resolvedBystring or null
refundAmountstring or null

Десятичная строка, например "52.63000000". Какая часть ордера отменена: полная сумма ордера при refund, возвращённая часть при partial_refund, null при confirm. Это не сумма, зачисленная на баланс: если средства ещё были заморожены, решение только снимает заморозку. См. GET /wallets/balance-history (referenceId = orderId).

resolvedAtstring or null, (date-time)

Время решения (администратором или по статусу от платёжной стороны).

createdAtstring, (date-time)обязательный
updatedAtstring, (date-time)обязательный
orderobject

Ордер, к которому относится диспут, — встроен в ответ, чтобы не делать второй запрос. В нём могут быть и другие служебные поля; в контракт входят только перечисленные здесь.

Ответ
{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "orderId": "b3e1eced-f2bd-4d8c-9765-fbc9d1d222d5", "status": "submitted", "resolution": "refund", "reason": "string", "adminComment": "string", "resolvedBy": "string", "refundAmount": "string", "resolvedAt": "2019-08-24T14:15:22Z", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "order": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "externalOrderId": "string", "status": "created", "amountUsdt": "string", "amountRub": "string", "rate": "string", "nspkBrandName": "string", "createdAt": "2019-08-24T14:15:22Z" } }