
1. При выборе платежа Kalatori SaaS-магазин своими средствами обращается к демону по внешнему url, например
orderid = 162
amount = 7.62
currency = USD
callback = https://saas.com/callback/id=3e8c3b37f6825cb14c169c92f430d
Все согласно https://alzymologist.github.io/kalatori-api/ callback — адрес движка saas для пометки при удачном платеже.
Если код валюты DOT, то вопросов нет. Если USD или EUR, то известно общее семейство валют, но неизвестен финальный выбор валюты, его сделает пользователь: USDT или USDC. Впрочем, нам это похер, потому что платеж все равно будет именно в USD, а значит, amount не изменится.
Таким образом, всё готово для регистрации платежного аккаунта на основе order_id, amount и currency, и с регистрацией callback.
2. Демон в ответ формирует ссылку на свою внешнюю страницу, указывая лишь платежный аккаунт, код семейства валюты и amount. Номер ордера становится не нужен — он уже хранится в базу демона, ассоциированный с этим платежным аккаунтом.
В ответ демона следует добавить поле payment_page.
3. Магазин SaaS в таком виде передает ссылку для редиректа клиенту, не изменяя ее. Пример ссылки:
<?php
https://kalatori-page.zymologia.fi/
?currency=USD
&amount=7.62
&payment_account=5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY
?>
4. Браузер покупателя отправляется на заданную страницу. Там пользователь выбирает нужную валюту в пределах семейства. Фронтенд JS производит платеж, общаясь поочередно с браузерными с кошельками, демоном напрямую, с блокчейном.
В качестве идентификатора платежа при общении с демоном используются не orderid с amount для вычисления платежного аккаунта, а просто уже готовый payment_account — необходимо внести эти мелкие дополнения в демон и DOT.js
Добавить в демон опциональное поле payment_account (при этом поле orderid отсутствует).
Добавить в DOT.js передачу поля payment_account, если оно существует, одновременно не обращая внимание на пустой orderid, если его не существует.
5. После успешной оплаты пользователь редиректится обратно в магазин при помощи url, который прислал демон (а он его получил при успешном каллбэке). Магазин к тому времени уже получил от демона callback и пометил, что заказ оплачен, поэтому формирует страницу завершения платежа.