Справка
Платеж проходит 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 для его отмены
