<?xml version='1.0' encoding='windows-1251'?>
<rss version='2.0' xmlns:ya='http://blogs.yandex.ru/yarss/' xmlns:wfw='http://wellformedweb.org/CommentAPI/'>

<channel>
  <title>Alzymologist OY</title>
  <lastBuildDate>Fri, 01 Nov 2024 02:07:49 +0200</lastBuildDate>
  <link>https://site.zymologia.fi/</link>
  <description>Alzymologist OY: блог</description>
  <generator>Binoniq 3.0</generator>
  <wfw:commentRss>https://site.zymologia.fi/rssc</wfw:commentRss>
  <ya:more>https://site.zymologia.fi/rss?skip=10</ya:more>
  <image>
    <url>https://site.zymologia.fi/design/userpick.jpg</url>
    <width>120</width>
    <height>155</height>
  </image>


<item>
	<title>2024/11/01 - Залить видео</title>
	<link>https://site.zymologia.fi/2024/11/01</link>
	<comments>https://site.zymologia.fi/2024/11/01</comments>
	<pubDate>Fri, 01 Nov 2024 00:00:00 +0200</pubDate>
	<lastBuildDate>Fri, 01 Nov 2024 02:07:49 +0200</lastBuildDate>
	<guid isPermaLink='true'>https://site.zymologia.fi/2024/11/01</guid>
	<author>https://site.zymologia.fi/</author>
        <description><![CDATA[<center><div style='display: inline-block; max-width: 90% !important;EEEwidth:853px;border: 1px solid #ccc; box-shadow: 0px 15px 15px 15px rgba(0,0,0,0.6); border-radius: 7px 7px 7px 7px; padding: 15px 15px 15px 15px;margin-bottom:35px;'><video src='https://site.zymologia.fi/2024/11/01/Brewing-Beer-in-the-Countryside-.mp4' controls>Play: <a href='https://site.zymologia.fi/2024/11/01/Brewing-Beer-in-the-Countryside-.mp4'>https://site.zymologia.fi/2024/11/01/Brewing-Beer-in-the-Countryside-.mp4</a></video></div></center>

Залогинившийся сотрудник (доступ админа) может создавать любые заметки и заливать видео и картинки. Ограничения по размеру файла кажется 100мб или 200mb, если надо больше, изменю.

<center><img class='foto' src='https://site.zymologia.fi/2024/11/01/0.webp' border='0'></center>

В редакторе новой заметки надо нажать кнопку выбора файла, файл загрузится в актуальную папку и будет доступен с https://site.zymologia.fi/ по ссылке. Например, вот я сейчас загрузил файл размером 41mb: https://site.zymologia.fi/2024/11/01/Brewing-Beer-in-the-Countryside-.mp4

Чтобы в заметке появился плеер (как здесь выше) нужно адрес файла обрамить тэгом PLAYTUBE, вот так:

<p>=============== cut ===============<br>{<b></b>_PLAYTUBE: /2024/11/01/Brewing-Beer-in-the-Countryside-.mp4 _<b></b>}<br>=============== /cut ===============<p>

]]></description>
</item>

<item>
	<title>2024/06/18 - KALATORI: библиотеке фронтенда</title>
	<link>https://site.zymologia.fi/2024/06/18</link>
	<comments>https://site.zymologia.fi/2024/06/18</comments>
	<pubDate>Tue, 18 Jun 2024 00:00:00 +0300</pubDate>
	<lastBuildDate>Tue, 18 Jun 2024 18:05:03 +0300</lastBuildDate>
	<guid isPermaLink='true'>https://site.zymologia.fi/2024/06/18</guid>
	<author>https://site.zymologia.fi/</author>
        <description><![CDATA[Итак, мы делаем отдельную библиотеку бэкенда (она — друг магазина, прослойка между фронтендом и демоном) на JS. Для удобства отладки делаем модельку в двух вариантах: как JS-библиотеку и как URL на nodeJS, который можно вызывать, например, из бэкенда PHP. Итак, у нас имеется библиотека <u>kalatori_frontend.js</u> тупо с одной функцией <u>function KALATORI(query, order)</u> Вариант: она же, завернутая в <u>http://localhost:12345</u> для обращения. В функцию передаются два параметра:

<u>query</u> — это, собственно, тот запрос, что прислал фронтенд. Он передается в библиотеку без изменений.
Если интересны подробности, вообще-то запрос фронтенда целиком соответствует <a href='https://alzymologist.github.io/kalatori-api/' target='_blank'>API Kalatori</a> — за исключением дополнительного параметра endpoint. Дело в том, что <a href='https://alzymologist.github.io/kalatori-api/' target='_blank'>API Kalatori</a> использует эклектику и параллельные сущности — часть параметров передаются как POST, часть почему-то как GET. Поэтому параметр endpoint нужен чтобы пакет данных был един. Но этим, повторю, занимается сам фронтенд, об этом думать не надо. Также отмечу, что фронтенд способен работать с демоном напрямую безо всяких прослоек — это возможно в случае donate, когда сумма добровольна и обман невозможен. Но это тоже не имеет сейчас значения.
Параметр <u>callback</u> можно добавить в запрос фронтенда здесь, а можно в параметре order.

<u>order</u> необязательный параметр с данными этого заказа из базы магазина, где присутствуют все или некоторые параметры. Те, что присутствуют, будут использованы.

<p>=============== cut ===============<br><u>order_id: «kalatori_frontend_123»</u>
Идентификатор заказа, который будет передан демону как orderId. Не может содержать слэшей и прочих запрещенных в URL символов, поскольку в API это будет часть url. В идеале это номер заказа, а лучше еще имя вашего конкретного магазина, пример: DennyShop_123 Если параметр не указан, в качестве orderId будет передан номер заказа order из запроса query (с добавленным именем kalatori_frontend для удобства отладки).
[!] Внимание! Мы не будем проверять, что «DennyShop_123» похоже какими-то цифрами на order:123, если вы передали идентификатор, именно он и полетит к демону.

<u>total: 123.45</u>
Сумма к оплате. Если этот параметр указан, мы передадим демону именно его, а не ту сумму, что прислал фронтенд в query. Сравнений тоже делать не будем.

<u>currency: «USD»</u>
Валюта, которую установил магазин для заказа. Точнее — имя семейства. Потому что валюта магазина может называться DOT или TUGRIC или USD, но в последнем случае это может оказаться именем целого семейства, начинающегося на USD: USDC, USDT, USD-XZ, и тогда окончательный выбор делает пользователь уже на уровне плагина, магазину без разницы, какой разновидностью доллара ему платят. Демону передается именно конкретный код валюты, что прислал фронтенд, от этого зависит, с какими серверами демон будет работать. Но имеет смысл проверить соответствие первых букв, чтобы покупатель не обманул систему, получив сумму в DOT, а оплатив эту сумму более дешевой валютой USDC. Поэтому, если у магазина currencу=USD, то мы проводим проверку, что код выбранной плагином валюты тоже начинается на «USD».

<u>currencies: «USDC USDT DOT»</u>
Совсем необязательный параметр. Это список валют, которые разрешены для использования в настройках магазина, перечисленные через пробел. Зачем? Например, цена у магазина в USD, демон умеет USDC, USDT, USD-XZ, а у владельца магазина есть аккаунт только в USDС, и он не желает принимать иные. На уровне фронтенда иных вариантов и не отобразится, но вдруг злоумышленник сделает подмену? Мне лень сейчас думать, возможна ли тут какая-то уязвимость и сможет ли злодей как-то получить деньги на свой же счет в USD-XZ, поэтому мы на всякий случай просто ограничиваем возможность использовать валюты, запрещенные в магазине.

<u>callback: «https://my_great_store.me/callback?id=123&hash=d1438b69fa53e6d9a3ce321e3096b9ac28652a70"</u>
URL, по которому демон стукнет магазину в случае успешного платежа. Это любой произвольный URL, но мы рекомендуем, чтобы в нем содержался id заказа и секретный хэш, гарантирующий, что этот URL сформирован вашим магазином. Например, hash=sha1('my order 123');
Если callback не указан, то демон работает без каллбэка — бэкенд повторяет фоновые запросы (некоторое разумное время) до тех пор, пока демон (и, соответственно, функция KALATORI) не вернет <u>payment_status: 'paid'</u>, и этот paid на выходе будет пойман и обработан движком вашего магазина.<br>=============== /cut ===============<p>


<center><table><tr><td align=left><p><i><b>Все страницы по теме &laquo;kalatori&raquo;:</b></i>
<div style='margin-left:50pt'>2024-06-17: <a href='https://site.zymologia.fi/2024/06/17'>KALATORI: Хуепутало: логика валютных курсов</a></div></td></tr></table></center>]]></description>
</item>

<item>
	<title>2024/06/17 - KALATORI: Хуепутало: логика валютных курсов</title>
	<link>https://site.zymologia.fi/2024/06/17</link>
	<comments>https://site.zymologia.fi/2024/06/17</comments>
	<pubDate>Mon, 17 Jun 2024 00:00:00 +0300</pubDate>
	<lastBuildDate>Tue, 18 Jun 2024 15:31:00 +0300</lastBuildDate>
	<guid isPermaLink='true'>https://site.zymologia.fi/2024/06/17</guid>
	<author>https://site.zymologia.fi/</author>
        <description><![CDATA[В платежном плагине существует отдельно штатная валюта DOT, отдельно семейство USD (USDC, USDT), в будущем возможно семейство EUR (EURC/EURT). Также могут быть и собственные валютные ноды (у меня это USDC-L). При этом:

<u>1. DOT.cx.currency</u>
У нас есть пара цена/валюта, которую выставил фронтенду магазин для этого товара. Валюта здесь — название семейства (USD, EUR, DOT), например:
DOT.cx.total: 17
DOT.cx.currency: «USD»
Если покупатель в уголке магазина меняет валюту с USD на EUR или DOT, магазин меняет цены на товары и вообще всю страницу или что там у него.

<u>2. DOT.cx.currences</u>
При этом у нас есть список валют, разрешенных магазином. Например, платежи семейства USD магазин хочет принимать в USDC, а в USDT не желает — нет у него там аккаунта. Этот допустимый вишлист магазин тоже выставляет фронтенду при запуске плагина. Валюта здесь — представители семейств:
DOT.cx.currences: «USDC USDT USDC-L DOT DOT-L»
Этот список админ магазина задает отдельно при настройке, для этого в админках магазинов есть отдельная строка.

<u>3. {supported_currencies:...}</u>
И отдельно есть возможности демона. Демон по эндпоинту status отдает список  supported_currencies — всех доступных сейчас валют, настроенных админом демона (он не обязательно админ магазина). В этом списке, вопреки пожеланиям магазина или покупателя, может быть только USDT, а с USDC сегодня связи нет. А также какой-нибудь загадочный USDC-L и прочие представители семейств. Список supported_currencies фронтенд скачивает сам и формирует где-то себе массив DOT.nodes

Как организовать грамотную работу всего этого пушистого зоопарка?

<u>Задача фронтенда:</u>
Среди всех кодов DOT.cx.currences берутся лишь те, что начинаются на код семейства DOT.cx.currency (например, для семейства USD годятся USDT, USDC, USDC-L). Затем из полученного списка удаляются те, которых нет на демоне (USD-L может не быть). Получившийся список USDT, USDC предлагается для выбора покупателю уже в самом плагине. Оплату в USD он выбрал на уровне магазина, на уровне плагина выбирает, какими именно USD платить. Если список оказался пуст, плагин пишет ошибку «Currency EUR not allowed»

<u>Задача бэкенда:</u>
При оплате выбранной корзины фронтенд уже знает сумму и валюту, он запускает с этими параметрами бэкенд плагина. Тот делает бэкенду запрос на оплату, включая в него currency — валюту, которую выбрал пользователь для семейства:
currency: «USDC»

<b>[!]</b> И тут конечно бэкенд магазина должен перед передачей демону проверить, что эта валюта (USDC) соответствует первыми буквами валюте корзины (USD). А то какие-нибудь умники начнут там подменять коды и покупать по евровым ценам за доллары, благо на демоне окажется и то и другое разрешено...

<center><table><tr><td align=left><p><i><b>Все страницы по теме &laquo;kalatori&raquo;:</b></i>
<div style='margin-left:50pt'>2024-06-18: <a href='https://site.zymologia.fi/2024/06/18'>KALATORI: библиотеке фронтенда</a></div></td></tr></table></center>]]></description>
</item>


</channel>
</rss>