зеркало из
https://github.com/glebtv/yookassa.git
synced 2026-08-28 15:16:18 +03:00
* Initial setup for docs * running payments endpoints * documentation for deals and payouts
104 строки
5.2 KiB
Markdown
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)
|