1
0
зеркало из https://github.com/glebtv/yookassa.git synced 2026-08-28 15:16:18 +03:00
Files
yookassa/docs/05-deals.md
Ivan Shamatov a61bbaf461 Initial setup for docs (#22)
* Initial setup for docs

* running payments endpoints

* documentation for deals and payouts
2021-11-20 14:14:59 +03:00

104 строки
5.2 KiB
Markdown

## Работа со сделками
SDK позволяет создавать сделки, а также получать информацию о них.
Объект сделки `DealResponse` содержит всю информацию о сделке, актуальную на текущий момент времени.
Он формируется при создании сделки и приходит в ответ на любой запрос, связанный со сделками.
* [Запрос на создание сделки](#Запрос-на-создание-сделки)
* [Запрос на создание сделки через билдер](#Запрос-на-создание-сделки-через-билдер)
* [Получить информацию о сделке](#Получить-информацию-о-сделке)
* [Получить список сделок с фильтрацией](#Получить-список-сделок-с-фильтрацией)
---
### Запрос на создание сделки
[Создание сделки в документации](https://yookassa.ru/developers/api?lang=ruby#create_deal)
Чтобы создать сделку, необходимо создать объект сделки — `DealRequest`. Он позволяет создать сделку, в рамках которой
необходимо принять оплату от покупателя и перечислить ее продавцу.
В ответ на запрос придет объект сделки - `DealResponse` в актуальном статусе.
```ruby
res = Yookassa.deals.create({
"type": "safe_deal",
"fee_moment": "payment_succeeded",
"metadata": {
"order_id": "88"
},
"description": "SAFE_DEAL PYTHON 123554642-2432FF344R"
})
```
---
### Запрос на создание сделки через билдер
[СоздCание сделки в документации](https://yookassa.ru/developers/api?lang=ruby#create_deal)
Билдер позволяет создать объект сделки — `DealRequest` программным способом, через объекты.
```ruby
builder = DealRequestBuilder() \
.set_type(DealType.SAFE_DEAL) \
.set_fee_moment(FeeMoment.PAYMENT_SUCCEEDED) \
.set_description('SAFE_DEAL 123554642-2432FF344R') \
.set_metadata({'order_id': '37'})
request = builder.build()
# Можно что-то поменять, если нужно
request.description = 'SAFE_DEAL PYTHON 123554642-2432FF344R'
res = Yookassa.deals.create(request)
```
---
### Получить информацию о сделке
[Информация о сделке в документации](https://yookassa.ru/developers/api?lang=ruby)
Запрос позволяет получить информацию о текущем состоянии сделки по его уникальному идентификатору.
В ответ на запрос придет объект сделки - `DealResponse` в актуальном статусе.
```ruby
res = Yookassa.deals.find_one('dl-285e5ee7-0022-5000-8000-01516a44b147')
```
---
### Получить список сделок с фильтрацией
[Список сделок в документации](https://yookassa.ru/developers/api?lang=ruby#get_deals_list)
Запрос позволяет получить список сделок, отфильтрованный по заданным критериям.
В ответ на запрос вернется список сделок с учетом переданных параметров. В списке будет информация о сделках,
созданных за последние 3 года. Список будет отсортирован по времени создания сделок в порядке убывания.
Если результатов больше, чем задано в `limit`, список будет выводиться фрагментами. В этом случае в ответе на запрос
вернется фрагмент списка и параметр `next_cursor` с указателем на следующий фрагмент.
```ruby
cursor = nil
filters = {
"limit": 10, # Ограничиваем размер выборки
"status": "closed", # Выбираем только открытые сделки
"full_text_search": "PYTHON", # Фильтр по описанию сделки — параметру description
"created_at.gte": "2021-08-01T00:00:00.000Z", # Созданы начиная с 2021-08-01
"created_at.lt": "2021-11-20T00:00:00.000Z" # И до 2021-11-20
}
def get_items(filters:, next_cursor: nil, items: [])
result = Yookassa.deals.list(filters.merge(next_cursor: next_cursor))
accumulated_items = result.items + items
return accumulated_items if result.next_cursor.nil?
get_items(filters: filters, next_cursor: result.next_cursor, items: accumulated_items)
end
get_items(filters: filters, next_cursor: cursor)
```
[Подробнее о работе со списками](https://yookassa.ru/developers/using-api/lists)