Создание возврата

Шаги для создания возврата по платежу

В этом разделе мы рассмотрим, как создать возврат средств по платежу. Мы покажем, как подготовить данные для возврата и обработать ответ от сервиса.

Подготовка данных для создания возврата

Для создания возврата необходимо подготовить объект RefundCreateRequest, который содержит все данные для возврата. Важнейшие поля включают уникальный идентификатор платежа (payment_id), сумму возврата и описание.

import type { RefundCreateRequest } from 'nestjs-yookassa'
 
const refundData: RefundCreateRequest = {
	payment_id: '123456', // Идентификатор платежа, по которому нужно создать возврат
	description: 'Возврат на заказ с ID 123456' // Описание возврата
}

Вызов метода для создания возврата

Теперь, когда у вас есть данные для возврата, вы можете использовать метод createRefund для отправки запроса на создание возврата и получения информации о созданном возврате.

import { type RefundCreateRequest, YookassaService } from 'nestjs-yookassa';
 
@Injectable()
export class PaymentService {
	constructor(private readonly yookassaService: YookassaService) {}
 
	async createRefund() {
		const refundData: RefundCreateRequest = {
			payment_id: '123456',
			description: 'Возврат на заказ с ID 123456',
		};
 
		const newRefund = await this.yookassaService.createRefund(refundData);
 
		return newRefund;
	}
}

Обработка ответа от API

Ответ от Yookassa содержит информацию о возврате, такую как идентификатор возврата, статус, сумма и другие детали. Пример ответа:

{
	"id": "2f1d2280-0015-5000-b000-1c02972ec0ef", // Уникальный идентификатор возврата
	"payment_id": "123456", // Идентификатор платежа, к которому привязан возврат
	"status": "succeeded", // Статус возврата
	"created_at": "2025-01-18T02:15:28.461Z", // Дата и время создания возврата
	"amount": {
		"value": "529.00", // Сумма возврата
		"currency": "RUB" // Валюта возврата
	},
	"description": "Возврат на заказ с ID 123456" // Описание возврата, может включать информацию о заказе или причине возврата
}

Возможные ошибки

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

1. Платеж в статусе pending

{
	"statusCode": 400,
	"message": "You can't make a refund since the payment from customer hasn't been received yet. Wait until the payment status changes to succeeded and repeat your request for making the refund. If you are making a two-stage payment, wait until the payment status changes to waiting_for_capture and cancel the payment"
}

Эта ошибка возникает, когда вы пытаетесь создать возврат по платежу, который еще не был завершен, и находится в статусе pending (ожидается подтверждение).

2. Платеж в статусе waiting_for_capture

{
	"statusCode": 400,
	"message": "You can't refund this payment as it's still being processed. Wait until the payment status changes to succeeded"
}

Эта ошибка возникает, когда платеж находится в статусе waiting_for_capture, что означает, что он еще не был захвачен и обработан.

3. Платеж был отменен

{
	"statusCode": 400,
	"message": "You can't refund this payment as it's been canceled. You can only refund payments with the succeeded status"
}

Эта ошибка возникает, когда платеж был отменен и теперь имеет статус canceled.