Skip to content

Commit 42cf5ff

Browse files
committed
refactor: split payment and refund logic into separate services
1 parent 6549a75 commit 42cf5ff

File tree

8 files changed

+463
-613
lines changed

8 files changed

+463
-613
lines changed

packages/nestjs-yookassa/.prettierrc

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
{
2-
"trailingComma": "none",
3-
"tabWidth": 4,
4-
"useTabs": true,
5-
"semi": false,
6-
"singleQuote": true,
7-
"jsxSingleQuote": true,
8-
"arrowParens": "avoid"
2+
"trailingComma": "none",
3+
"tabWidth": 4,
4+
"useTabs": true,
5+
"semi": false,
6+
"singleQuote": true,
7+
"jsxSingleQuote": true,
8+
"arrowParens": "avoid"
99
}

packages/nestjs-yookassa/README.md

Lines changed: 1 addition & 218 deletions
Original file line numberDiff line numberDiff line change
@@ -2,221 +2,4 @@
22

33
С помощью этого модуля вы сможете легко создавать и управлять платежами, получать подробную информацию о транзакциях и многое другое.
44

5-
## Установка
6-
7-
Для установки библиотеки выполните команду:
8-
9-
```bash
10-
npm install nestjs-yookassa
11-
```
12-
13-
## Подключение в модуле
14-
15-
Для подключения библиотеки в вашем проекте необходимо использовать один из двух методов:
16-
17-
- forRoot — синхронная конфигурация.
18-
- forRootAsync — асинхронная конфигурация.
19-
20-
**1. Синхронное подключение (forRoot)**
21-
Используйте этот метод, если у вас есть заранее настроенные значения для shopId и apiKey.
22-
23-
```typescript
24-
import { Module } from '@nestjs/common'
25-
import { YookassaModule } from 'nestjs-yookassa'
26-
27-
@Module({
28-
imports: [
29-
YookassaModule.forRoot({
30-
shopId: 'your-shop-id',
31-
apiKey: 'your-api-key'
32-
})
33-
]
34-
})
35-
export class AppModule {}
36-
```
37-
38-
**2. Асинхронное подключение (forRootAsync)**
39-
Используйте этот метод, если вы хотите загружать параметры конфигурации асинхронно, например, из базы данных или переменных окружения.
40-
41-
```typescript
42-
import { Module } from '@nestjs/common'
43-
import { ConfigService } from '@nestjs/config'
44-
import { YookassaModule } from 'nestjs-yookassa'
45-
46-
@Module({
47-
imports: [
48-
YookassaModule.forRootAsync({
49-
imports: [ConfigModule],
50-
useFactory: async (configService: ConfigService) => ({
51-
shopId: configService.getOrThrow('YOOKASSA_SHOP_ID'),
52-
apiKey: configService.getOrThrow('YOOKASSA_API_KEY')
53-
}),
54-
inject: [ConfigService]
55-
})
56-
]
57-
})
58-
export class AppModule {}
59-
```
60-
61-
## Методы
62-
63-
### Работа с платежами
64-
65-
**1. Создание платежа**
66-
Создает новый платеж через YooKassa. Этот метод отправляет запрос на создание нового платежа с данными из paymentData и возвращает информацию о созданном платеже.
67-
68-
Параметры:
69-
70-
- paymentData (PaymentCreateRequest): Данные для создания платежа. Пример структуры данных см. ниже.
71-
72-
Пример:
73-
74-
```typescript
75-
const paymentData: PaymentCreateRequest = {
76-
amount: {
77-
value: 1000,
78-
currency: 'RUB'
79-
},
80-
description: 'Test payment',
81-
payment_method_data: {
82-
type: PaymentMethodsEnum.bank_card
83-
},
84-
confirmation: {
85-
type: 'redirect',
86-
return_url: 'https://example.com/thanks'
87-
}
88-
}
89-
90-
const paymentResponse = await this.yookassaService.createPayment(paymentData)
91-
92-
return paymentResponse
93-
```
94-
95-
**2. Получение платежей**
96-
Получает список всех платежей с возможностью фильтрации по дате и пагинации.
97-
98-
- limit (number): Максимальное количество платежей на страницу (по умолчанию 10).
99-
- from (string): Начальная дата для фильтрации (формат YYYY-MM-DD).
100-
- to (string): Конечная дата для фильтрации (формат YYYY-MM-DD).
101-
102-
Пример:
103-
104-
```typescript
105-
const payments = await this.yookassaService.getPayments(
106-
10,
107-
'2024-01-01',
108-
'2024-12-31'
109-
)
110-
111-
return payments
112-
```
113-
114-
**3. Получение деталей плтежа**
115-
Получает подробную информацию о платеже по его ID, включая статус, сумму и другие данные.
116-
117-
- paymentId (string): Уникальный идентификатор платежа.
118-
119-
Пример:
120-
121-
```typescript
122-
const paymentId = '123456'
123-
124-
const payment = await this.yookassaService.getPaymentDetails(id)
125-
126-
if (!payment) {
127-
throw new NotFoundException('Платеж не найден')
128-
}
129-
130-
return payment
131-
```
132-
133-
**4. Подтверждение платежа**
134-
Выполняет захват средств с карты клиента после того, как был создан платеж. Обычно этот метод используется, когда заказ подтвержден, и продавец готов забрать средства.
135-
136-
Параметры:
137-
138-
- paymentId (string): Уникальный идентификатор платежа, который нужно подтвердить.
139-
140-
Пример:
141-
142-
```typescript
143-
const paymentId = '123456'
144-
145-
const capturedPaymentDetails =
146-
await this.yookassaService.capturePayment(paymentId)
147-
148-
return capturedPaymentDetails
149-
```
150-
151-
**5. Отмена платежа**
152-
Отменяет платеж по его ID.
153-
Параметры:
154-
155-
- paymentId (string): ID платежа, который нужно отменить.
156-
157-
Пример:
158-
159-
```typescript
160-
const paymentId = '123456'
161-
162-
const canceledPaymentDetails =
163-
await this.yookassaService.cancelPayment(paymentId)
164-
165-
return canceledPaymentDetails
166-
```
167-
168-
### Работа с возвратами
169-
170-
**1. Создание возврата**
171-
Создаёт возврат средств по указанному платежу. Этот метод отправляет запрос на создание возврата с данными из refundData и возвращает информацию о созданном возврате.
172-
173-
Параметры:
174-
175-
- refundData (RefundCreateRequest) — Данные для создания возврата. Пример структуры данных см. ниже.
176-
177-
Пример:
178-
179-
```typescript
180-
const refundData: RefundCreateRequest = {
181-
payment_id: '123456',
182-
amount: {
183-
value: 500,
184-
currency: 'RUB'
185-
},
186-
description: 'Возврат за отмененный заказ'
187-
}
188-
189-
const refundResponse = await this.yookassaService.createRefund(refundData)
190-
191-
return refundResponse
192-
```
193-
194-
**2. Получение списка возвратов**
195-
Получает список всех возвратов с возможностью фильтрации и пагинации.
196-
197-
Пример:
198-
199-
```typescript
200-
const refunds = await this.yookassaService.getRefunds()
201-
202-
return refunds
203-
```
204-
205-
**3. Получение деталей возврата**
206-
Получает подробную информацию о возврате по его ID, включая статус, сумму и другие данные.
207-
208-
- refundId (string) — Уникальный идентификатор возврата.
209-
210-
Пример:
211-
212-
```typescript
213-
const refundId = '123456'
214-
215-
const refundDetails = await this.yookassaService.getRefundDetails(refundId)
216-
217-
if (!refundDetails) {
218-
throw new NotFoundException('Возврат не найден')
219-
}
220-
221-
return refundDetails
222-
```
5+
Документация со всеми подробностями и примерами доступна на [nestjs-yookassa.ru](https://nestjs-yookassa.ru)

packages/nestjs-yookassa/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "nestjs-yookassa",
3-
"version": "1.1.13",
3+
"version": "1.1.14",
44
"description": "A NestJS library for integrating with YooKassa API",
55
"keywords": [
66
"nest",
@@ -74,4 +74,4 @@
7474
"reflect-metadata": "^0.2.2",
7575
"typescript": "^4.1.2 || ^5.0.0"
7676
}
77-
}
77+
}

0 commit comments

Comments
 (0)