Работа с платежами YooMoney

Справка

Платеж проходит 2 этапа (можно сделать и в 1):
1 – Создание платежа, момент, когда создается платеж и пользователь перенаправляется на страницу Юмонеу для указания данных карты и оплаты, как только платеж совершен ему задается статус waiting_for_capture (ожидание подтверждения) а пользователь перенаправляется на страницу, которую мы указываем в редиректе при создании платежа.

2 – Подтвержение или отмена платежа. После того как пользователь совершил платеж нужно обратиться на один из эндпоинтов передав туда paymentId который генерируются при создании платежа:
Подтверждение: /api/payments/capture-payment – платеж будет подтвержден и средства зачислятся в платежной системе.
Отмена: /api/payments/cancel-payment – платеж будет отклонен и средства будут возвращены пользователю.

P.S Если указать при создании платежа флаг capture: true, то после оплаты платеж будет автоматически подтвержен без надобности отправление запроса на дополнительное подтверждение.

Так же при создании платежа можно передавать тип оплаты:
1) bank_card – редирект на страницу где нужо указывать банковскую карту
2) sbp – редирект на страницу где нужно выбрать банк в котором произойдет оплата и редирект в приложение банка для оплаты
3) sberbank – редирект в приложение сбербанка (SberPay)

P.S В тестовом проекте YooMoney работает только оплата картой, т.к перевод осуществляется через тестовые карты от YooMoney.

Вся работа с API YooMoney будет разворачиваться на бекенде, по соответсвующим запросам:

Cоздание: /api/payments/create-payment
Запрос в который нужно передавать сумму платежа, тип валюты, ссылку на редирект после оплаты, уникальный id который будет идентифицировать платеж, capture (означает нужно ли дополнительно отправлять запрос на подтверждение платежа true/false)
P.S Для того чтобы сохранить платежный метод нужно в объект платежа передать флаг save_payment_method: true

{
	amount: {
      value: '100.00',
      currency: 'RUB',
    },
    payment_method_data: {
    	type: 'bank_card',
    },
    confirmation: {
      type: 'redirect',
      return_url: 'http://localhost:3000/api',
    },
    capture: true,
    description: 'Аренда скутера',
	save_payment_method: true
}

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

Получение статуса по платежу: /api/payments/get-payment
Запрос в который нужно передать paymentId для получения всей информации по нему.

Подтверждение: /api/payments/capture-payment
Запрос в который нужно передавать paymentId для его подтверждения

Отмена: /api/payments/capture-payment
Запрос в который нужно передавать paymentId для его отмены