Простой способ принимать платежи через ЮKassa в Flutter-приложении на WordPress
Столкнулся с задачей: нужно было добавить оплату в мобильное приложение на Flutter. У нас уже был сайт на WordPress с WooCommerce и плагином ЮKassa.
Логично было использовать то же решение. Но оказалось, что стандартный плагин ЮKassa для WooCommerce работает только через браузер или WebView. То есть пользователя из приложения перекидывает на веб-страницу оплаты. Мне же хотелось, чтобы ввод карты происходил прямо в приложении — это быстрее и привычнее для людей.
У ЮKassa есть мобильный SDK, который как раз это позволяет: человек вводит карту в интерфейсе приложения, а SDK возвращает одноразовый токен. Дальше этот токен нужно отправить в ЮKassa вместе с секретным ключом, чтобы списать деньги.
И тут возникает проблема: секретный ключ нельзя хранить в приложении. Любой, кто достанет APK-файл, сможет его увидеть.
Значит, нужна промежуточная прослойка, которая будет:
- принимать токен от приложения,
- подставлять секретный ключ,
- вызывать API ЮKassa.
Поскольку сайт у меня и так уже на WordPress, я написал небольшой PHP-скрипт, который работает как мост между Flutter-приложением и ЮKassa.
Он добавляет в WordPress один REST-эндпоинт. Приложение отправляет туда токен, ID заказа и ID магазина, а скрипт уже сам создаёт платёж через API ЮKassa, используя секретный ключ из настроек плагина WooCommerce.
В итоге:
- ключ остаётся на сервере,
- приложение работает нативно,
- платежи проходят,
- заказы в WooCommerce обновляются автоматически.
Скрипт я выложил на Gitverse вместе с инструкцией по установке. Всё работает на стандартном WordPress и WooCommerce, ничего дополнительно ставить не нужно.
Посмотреть и забрать можно здесь:https://gitverse.ru/danlarin/yookassa-wordpress-bridge
Если у вас похожая задача — надеюсь, пригодится.