Как наилучшим образом подключить оплату на сайте через ЮKassa, если у меня есть бекенд на Django и фронтенд на React + Next.js? Следует ли проводить работу с API ЮKassa на серверной стороне (бекенде) или на клиентской стороне (фронтенде)? Существует ли разница в безопасности, если отправлять запросы к `https://api.yookassa.ru/v3/payments/` с клиентской стороны и передавать там Секретный ключ? Возможно ли создать эндпоинты на Django для передачи общих данных о платеже (например, информацию о клиенте и сумме платежа) с клиентской стороны, а затем внутри бекенда обращаться к API ЮKassa, и есть ли в этой схеме какие-то преимущества по сравнению с выполнением всего процесса на клиентской стороне?
Обработка платежей на сайте может быть выполнена как на клиентской стороне (фронтенд) с помощью JavaScript, так и на серверной стороне (бэкенд). Если у вас есть бекенд на Django и фронтенд на React + Next.js, рекомендуется подключать оплату через ЮKassa на серверной стороне (бекенде). Это связано с безопасностью данных, так как использование Секретного ключа на клиентской стороне может представлять угрозу безопасности. Вы можете создать эндпоинты на Django для передачи общих данных о платеже с клиентской стороны, а затем внутри бекенда обращаться к API ЮKасса. Это позволит вам иметь более надежный и безопасный механизм обработки платежей, так как Вы можете контролировать доступ к Секретному ключу и обрабатывать платежи на серверной стороне. Таким образом, использование бекенда для работы с API ЮKасса обеспечит высокий уровень безопасности и эффективности при обработке платежей на вашем сайте.
Это надо делать на бэке по разным причинам. Как минимум одну ты уже сказал - не надо палить секретный ключ.
Можно придумать 2 причину - отвал клиента: представь, что после оплаты клиент отвалился. Что будет?
- Токен подтверждения оплаты потерян
- После перезагрузки кэш браузера очистился
В итоге деньги потратились, но информации об этом ты не получил. Все потерялось - только ручками эту информацию у провайдера оплаты получать и чинить.
Если бы это сервер обрабатывал, то можно было бы какой-нибудь trace id сохранить в БД и быть уверенным, что даже если отвалишься, то в будущем сможешь проверить статус оплаты.