Информация о платеже

Шаги для получения деталей о платеже

В этом разделе мы рассмотрим, как получить подробную информацию о платеже по его уникальному идентификатору.

Вызов метода для получения информации о платеже

Для получения подробной информации о платеже, нужно использовать метод getPaymentDetails, передав в него идентификатор платежа.

import { YookassaService } from 'nestjs-yookassa';
 
@Injectable()
export class PaymentService {
	constructor(private readonly yookassaService: YookassaService) {}
 
	async getPaymentDetails() {
		const paymentId = '123456'; // Уникальный ID платежа
 
		const payment = await this.yookassaService.getPaymentDetails(paymentId);
 
		return payment
	}
}

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

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

{
	"id": "2f1c91cd-000f-5000-8000-1e9f7e4ebff7", // Уникальный идентификатор платежа
	"status": "pending", // Статус платежа
	"amount": {
		"value": "529.00", // Сумма платежа
		"currency": "RUB" // Валюта платежа
	},
	"description": "Test payment", // Описание платежа
	"recipient": {
		"account_id": "497037", // Идентификатор аккаунта получателя
		"gateway_id": "2358944" // Идентификатор шлюза получателя
	},
	"payment_method": {
		"type": "bank_card", // Тип метода оплаты
		"id": "2f1c91cd-000f-5000-8000-1e9f7e4ebff7", // Идентификатор метода платежа
		"status": "inactive" // Статус метода оплаты
	},
	"created_at": "2025-01-17T15:58:05.278Z", // Дата и время создания платежа
	"confirmation": {
		"type": "redirect", // Тип подтверждения
		"confirmation_url": "https://yoomoney.ru/checkout/payments/v2/contract?orderId=2f1c91cd-000f-5000-8000-1e9f7e4ebff7" // URL для подтверждения
	},
	"test": true, // Флаг, показывающий, что это тестовый платеж (не реальный).
	"paid": false, // Статус оплаты. `false` означает, что средства еще не были списаны.
	"refundable": false, // Флаг, указывающий, можно ли вернуть средства по данному платежу.
	"metadata": {
		"order_id": "12345678" // Дополнительные метаданные, предоставленные при создании платежа (например, ID заказа).
	}
}

Возможные статусы платежа

Ответ может содержать следующие статусы платежа:

  • pending — Платеж ожидает обработки.
  • waiting_for_capture — Платеж ожидает захвата средств.
  • succeeded — Платеж успешно завершен.
  • canceled — Платеж был отменен.

Пример обработки различных статусов платежа

1. Платеж в ожидании (статус: pending)

Когда платеж находится в статусе "pending", это означает, что он еще не был обработан или принят к выполнению. Система ожидает подтверждения от клиента или процесса, который должен завершить или отклонить транзакцию. Обычно в этом случае необходимо дождаться, пока клиент не завершит подтверждение, например, через редирект на страницу оплаты.

{
	"id": "2f1c91cd-000f-5000-8000-1e9f7e4ebff7",
	"status": "pending",
	"amount": {
		"value": "529.00",
		"currency": "RUB"
	},
	"description": "Test payment",
	"recipient": {
		"account_id": "497037",
		"gateway_id": "2358944"
	},
	"payment_method": {
		"type": "bank_card",
		"id": "2f1c91cd-000f-5000-8000-1e9f7e4ebff7",
		"saved": false,
		"status": "inactive"
	},
	"created_at": "2025-01-17T15:58:05.278Z",
	"confirmation": {
		"type": "redirect",
		"return_url": "https://example.com/thanks",
		"confirmation_url": "https://yoomoney.ru/checkout/payments/v2/contract?orderId=2f1c91cd-000f-5000-8000-1e9f7e4ebff7"
	},
	"test": true,
	"paid": false,
	"refundable": false,
	"metadata": {
		"order_id": "12345678"
	}
}

2. Платеж ожидает подтверждения (статус: waiting_for_capture)

Когда статус платежа "waiting_for_capture", это означает, что средства были заблокированы на счете клиента, и система ожидает завершения процедуры подтверждения и захвата средств. Обычно это происходит в случаях, когда для платежа требуется дополнительное подтверждение от пользователя или другого процесса.

{
	"id": "2f1c9181-000f-5000-a000-105cb3820b4a",
	"status": "waiting_for_capture",
	"amount": {
		"value": "529.00",
		"currency": "RUB"
	},
	"description": "Test payment",
	"recipient": {
		"account_id": "497037",
		"gateway_id": "2358944"
	},
	"payment_method": {
		"type": "bank_card",
		"id": "2f1c9181-000f-5000-a000-105cb3820b4a",
		"saved": false,
		"status": "inactive",
		"title": "Bank card *4444",
		"card": {
			"first6": "555555",
			"last4": "4444",
			"expiry_year": "2044",
			"expiry_month": "04",
			"card_type": "MasterCard",
			"card_product": {
				"code": "E"
			},
			"issuer_country": "US"
		}
	},
	"created_at": "2025-01-17T15:56:49.489Z",
	"expires_at": "2025-01-24T15:57:12.776Z",
	"test": true,
	"paid": true,
	"refundable": false,
	"metadata": {
		"order_id": "12345678"
	},
	"authorization_details": {
		"rrn": "464425465642653",
		"auth_code": "680377",
		"three_d_secure": {
			"applied": false,
			"method_completed": false,
			"challenge_completed": false
		}
	}
}

3. Платеж успешно завершен (статус: succeeded)

Статус "succeeded" означает, что платеж был успешно завершен и средства были списаны с карты клиента. Платеж полностью обработан, и средства переведены на счет получателя. Этот статус подтверждает, что транзакция была успешно проведена.

{
	"id": "2f1c91cd-000f-5000-8000-1e9f7e4ebff7",
	"status": "succeeded",
	"amount": {
		"value": "529.00",
		"currency": "RUB"
	},
	"income_amount": {
		"value": "510.48",
		"currency": "RUB"
	},
	"description": "Test payment",
	"recipient": {
		"account_id": "497037",
		"gateway_id": "2358944"
	},
	"payment_method": {
		"type": "bank_card",
		"id": "2f1c91cd-000f-5000-8000-1e9f7e4ebff7",
		"saved": false,
		"status": "inactive",
		"title": "Bank card *4444",
		"card": {
			"first6": "555555",
			"last4": "4444",
			"expiry_year": "2044",
			"expiry_month": "04",
			"card_type": "MasterCard",
			"card_product": {
				"code": "E"
			},
			"issuer_country": "US"
		}
	},
	"captured_at": "2025-01-17T15:59:27.119Z",
	"created_at": "2025-01-17T15:58:05.278Z",
	"test": true,
	"refunded_amount": {
		"value": "0.00",
		"currency": "RUB"
	},
	"paid": true,
	"refundable": true,
	"metadata": {
		"order_id": "12345678"
	},
	"authorization_details": {
		"rrn": "281463796947749",
		"auth_code": "184168",
		"three_d_secure": {
			"applied": false,
			"method_completed": false,
			"challenge_completed": false
		}
	}
}

4. Платеж был отменен (статус: canceled)

Статус "canceled" означает, что платеж был отменен до завершения. Это может происходить по разным причинам, например, если клиент сам отменяет платеж, если есть проблема с обработкой, или если платеж был отклонен системой. В ответе может содержаться информация о причине отмены.

{
	"id": "2f1c9181-000f-5000-a000-105cb3820b4a",
	"status": "canceled",
	"amount": {
		"value": "529.00",
		"currency": "RUB"
	},
	"description": "Test payment",
	"recipient": {
		"account_id": "497037",
		"gateway_id": "2358944"
	},
	"payment_method": {
		"type": "bank_card",
		"id": "2f1c9181-000f-5000-a000-105cb3820b4a",
		"saved": false,
		"status": "inactive",
		"title": "Bank card *4444",
		"card": {
			"first6": "555555",
			"last4": "4444",
			"expiry_year": "2044",
			"expiry_month": "04",
			"card_type": "MasterCard",
			"card_product": {
				"code": "E"
			},
			"issuer_country": "US"
		}
	},
	"created_at": "2025-01-17T15:56:49.489Z",
	"test": true,
	"paid": false,
	"refundable": false,
	"metadata": {
		"order_id": "12345678"
	},
	"cancellation_details": {
		"party": "merchant",
		"reason": "canceled_by_merchant"
	},
	"authorization_details": {
		"rrn": "464425465642653",
		"auth_code": "680377",
		"three_d_secure": {
			"applied": false,
			"method_completed": false,
			"challenge_completed": false
		}
	}
}