Создание возврата
Шаги для создания возврата по платежу
В этом разделе мы рассмотрим, как создать возврат средств по платежу. Мы покажем, как подготовить данные для возврата и обработать ответ от сервиса.
Подготовка данных для создания возврата
Для создания возврата необходимо подготовить объект 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.