В платежном плагине существует отдельно штатная валюта DOT, отдельно семейство USD (USDC, USDT), в будущем возможно семейство EUR (EURC/EURT). Также могут быть и собственные валютные ноды (у меня это USDC-L). При этом:
1. DOT.cx.currency
У нас есть пара цена/валюта, которую выставил фронтенду магазин для этого товара. Валюта здесь — название семейства (USD, EUR, DOT), например:
DOT.cx.total: 17
DOT.cx.currency: «USD»
Если покупатель в уголке магазина меняет валюту с USD на EUR или DOT, магазин меняет цены на товары и вообще всю страницу или что там у него.
2. DOT.cx.currences
При этом у нас есть список валют, разрешенных магазином. Например, платежи семейства USD магазин хочет принимать в USDC, а в USDT не желает — нет у него там аккаунта. Этот допустимый вишлист магазин тоже выставляет фронтенду при запуске плагина. Валюта здесь — представители семейств:
DOT.cx.currences: «USDC USDT USDC-L DOT DOT-L»
Этот список админ магазина задает отдельно при настройке, для этого в админках магазинов есть отдельная строка.
3. {supported_currencies:...}
И отдельно есть возможности демона. Демон по эндпоинту status отдает список supported_currencies — всех доступных сейчас валют, настроенных админом демона (он не обязательно админ магазина). В этом списке, вопреки пожеланиям магазина или покупателя, может быть только USDT, а с USDC сегодня связи нет. А также какой-нибудь загадочный USDC-L и прочие представители семейств. Список supported_currencies фронтенд скачивает сам и формирует где-то себе массив DOT.nodes
Как организовать грамотную работу всего этого пушистого зоопарка?
Задача фронтенда:
Среди всех кодов DOT.cx.currences берутся лишь те, что начинаются на код семейства DOT.cx.currency (например, для семейства USD годятся USDT, USDC, USDC-L). Затем из полученного списка удаляются те, которых нет на демоне (USD-L может не быть). Получившийся список USDT, USDC предлагается для выбора покупателю уже в самом плагине. Оплату в USD он выбрал на уровне магазина, на уровне плагина выбирает, какими именно USD платить. Если список оказался пуст, плагин пишет ошибку «Currency EUR not allowed»
Задача бэкенда:
При оплате выбранной корзины фронтенд уже знает сумму и валюту, он запускает с этими параметрами бэкенд плагина. Тот делает бэкенду запрос на оплату, включая в него currency — валюту, которую выбрал пользователь для семейства:
currency: «USDC»
[!] И тут конечно бэкенд магазина должен перед передачей демону проверить, что эта валюта (USDC) соответствует первыми буквами валюте корзины (USD). А то какие-нибудь умники начнут там подменять коды и покупать по евровым ценам за доллары, благо на демоне окажется и то и другое разрешено...
Все страницы по теме «kalatori»: 2024-06-18: KALATORI: библиотеке фронтенда |