Delphi. UniShop. Интеграция с банком Тинькофф

Delphi. UniShop. Интеграция с банком Тинькофф

Делал интернет-магазин на Delphi, появилась задача провести интеграцию с банком Тинькофф. Эквайринг. Внимательно изучил API Тинькофф. С заказчиком решили остановиться на платежном виджете с типом нотификации Email.

Расскажу основные моменты. Оттолкнувшись от API написал такой код обработки параметров отправляемых через GET запрос Читать далее «Delphi. UniShop. Интеграция с банком Тинькофф»

Delphi. UniGUI. Делаем витрину (showcase) 2 часть

Delphi. UniGUI. Делаем витрину (showcase) 2 часть

В прошлом посте мы сделали подготовочку. Структуру базы данных, определили основные сущности программы, создали под них таблицы в базе и модули в прекрасной IDE Delphi.

В данном посте добавим функцию добавления товара, выделения товара, удаления товара, а также наладим листание страниц товаров, перестройку витрины в зависимости от новой ширины. Ну и исправим пару мелких глюков в алгоритме. Вот что у нас получится.

Общий вид витрины

90

Выделение товара

91

Добавление товара

94

Перелистнем на следующую страницу

93

Изменим размер формы — как видно товары перестроились в зависимости от новой ширины.

95

Исходники

Читать далее «Delphi. UniGUI. Делаем витрину (showcase) 2 часть»

Delphi. UniGUI. Простой способ пропорционального уменьшения картинки

Delphi. UniGUI. Простой способ пропорционального уменьшения картинки

Заблудился, что называется в 3 соснах. Долго отлаживал этот простой код и Аллилуйя теперь все работает как нужно. С одной стороны сказалась специфика UniGUI, с другой нюансы Delphi. Я уже писал код для уменьшения картинок в потоке, но там все только для VCL и может быть FireMonkey. В UniGUI же я столкнулся с тем, что не смог воспользоваться методом LoadFromFile для экземпляра класса TWIC, что ввело меня в ступор. Но слава Богу нашелся другой вариант.

В общем вот элегантное решение, на мой взгляд, на примере UniGUI фрэймворка, но оно же подойдет для VCL если TuniImage заменить на TImage

Читать далее «Delphi. UniGUI. Простой способ пропорционального уменьшения картинки»

Delphi. Indy. Как отправить Get запрос, принять и обработать его на idHTTPServer?

Delphi. Indy. Как отправить Get запрос, принять и обработать его на idHTTPServer?

Уже была подобная статья про отправку запросов с параметрами методом POST, а также был подобный пост, который касался отправки файлов методом POST и был на порядок сложнее того, что я напишу сейчас. Данные во второй статье отправляются в кодированном виде и мы делали специальный модуль для декодирования параметров запроса, а также передаваемых файлов. GET запрос в данном случае будем передавать в традиционном виде, то есть URI+параметры, например так…

В качестве примера я возьму проект на UniGUI, который в свою очередь использует idHTTPServer по умолчанию, в один из модулей я добавил idHTTP, таким образом у нас есть всё, для того, чтобы отправить и принять запрос.

Отправка GET запроса Читать далее «Delphi. Indy. Как отправить Get запрос, принять и обработать его на idHTTPServer?»

Delphi. UniGUI. Application Data Module and Free DataModule

Delphi. UniGUI. Application Data Module and Free DataModule

Небольшая заметка! При создании дата модулей в UniGUI у нас есть 2 варианта — Application Data Module and Free Data Module

69

В чем разница? Ответ на этот вопрос я получил на форуме UniGUI. Процитирую его здесь.

Application Data Module’s life time is managed by uniGUI. For each session a copy pf datamodule is created and destroyed when session is gone.

Free datamodules are not created automatically and must be created manually when needed.

То есть, по сути — разница в управлении памятью.

Application DataModule создается в начале сессии UniGUI и уничтожается в конце.

Чтобы получить доступ к экземпляру класса нужно добавить в uses наш модуль и обратиться к функции вызова.

В каждом модуле Application DataModule можно найти такую функцию сразу перед implementation

Чтобы использовать такой модуль, в другом модуле, нужно добавить его в uses и просто обратиться к этой функции.

Free DataModule может быть создан и уничтожен в любой момент времени.

Delphi. UniGUI. Делаем витрину (showcase)

Delphi. UniGUI. Делаем витрину (showcase)

Друг попросил сделать небольшую витрину на UniGUI, получилось так…

64

Сделал на фрэймах. В 2 режимах — multipage — когда товары добавляются по N, например по 10 товаров на странице и бесконечно слева направо сверху вниз. Читать далее «Delphi. UniGUI. Делаем витрину (showcase)»

Delphi. UniGUI. Deploy от А до Я (Версия 2)

Delphi. UniGUI. Deploy от А до Я (Версия 2)

Я уже писал о размещении (deploy) проекта на внешних серверах в одноименной статье ранее. Но тогда я только начинал разбираться с фрэймфорком UniGUI, а сейчас более менее все устаканилось в голове, поэтому этот пост наверное будет почти тем же самым, но более структурным, упорядоченным причесанным.

Какие виды файлов генерирует UniGUI?

Это важный вопрос, потому что от того какой файл будет на выходе будет зависеть стиль деплоя. Я знаю о как минимум 3 вариантах выходных файлов — это

EXE

DLL (запускается через IIS)

Windows Service

Для разработки предпочтительнее использовать EXE файлы, когда приложение уже сформировано, лучше, на мой взгляд использовать IIS, потому как это профессиональный и проверенный веб-сервер. EXE файл тоже можно сделать профессиональным, так как в нем уже содержится idHTTPServer, но это другая более кастомная и тонкая работа что ли. Но обо всем по порядку.

Я здесь разберу только случаи для EXE и DLL, так как они наиболее частые в практике использования программистами Delphi UniGUI.

Как сделать Delpoy EXE файла?

Тут все очень просто. Компилируем в EXE, переносим его на машину, которая у нас будет работать сервером, и далее обращаемся в стиле

IP машины : порт

Например,

То есть, просто открываем браузер на любой, произвольной машине, вводим подобную строку и все начинает работать.

В случае с localhost это будет выглядеть так…

8077 это порт по умолчанию для приложения UniGUI


Как сделать Delpoy DLL файла?

Здесь всё намного интереснее! Итак, на выходе у нас есть DLL, и нам нужно прикрутить её к IIS серверу, чтобы это всё запускалось, скажем как

Читать далее «Delphi. UniGUI. Deploy от А до Я (Версия 2)»

Delphi. UniGUI. Правильная архитектура приложения на примере создания соединения с базой данных MySQL с помощью FireDAC

Delphi. UniGUI. Правильная архитектура приложения на примере создания соединения с базой данных MySQL с помощью FireDAC

Интересное обсуждение у меня сложилось на форуме UniGUI, когда я не смог передать ссылку на объект так как я это делаю обычно, в Delphi (через свойства или через параметр Sender). Вот ссылка на само обсуждение

http://forums.unigui.com/index.php?/topic/7556-how-to-give-correct-link-to-created-instance

Итак, в UniGUI есть 3 типа объектов

UniServer Module ( создается 1 раз и работает все время, пока работает приложение)

http://www.unigui.com/doc/online_help/server_module.htm

UniMainModule (создается 1 раз и работает в течение сессии — о том, что такое сессия в UniGUI можно узнать в другом моем посте — и это не тоже самое, что сессия в PHP )

http://www.unigui.com/doc/online_help/main_module.htm

Все остальное — работает от создания до закрытия. Например формы. Создали — она держится в памяти — закрыли — уносит все данные с собой. В этом смысле UniMainModule это вроде как глобальный юнит, к которому можно обратиться, например как UniMainModule.doSomething, и также к UniServerModule.doSomething.

Как выяснилось на форуме, данные форм лучше хранить в зеркальных структурах в UniMainModule, так как просто этот объект живет дольше и не убивается при закрытии формы.

Разберем пример соединения с базой данных

Читать далее «Delphi. UniGUI. Правильная архитектура приложения на примере создания соединения с базой данных MySQL с помощью FireDAC»

Delphi. UniGUI. Режим StandAlone Server / ISAPI Module

Delphi. UniGUI. Режим StandAlone Server / ISAPI Module

Я уже писал об этом преобразовании. Суть в том, что разрабатывать приложение удобно как StandAlone Server. Минимум действий для запуска программы и её отладки. Запустил EXE файл сервера, открыл браузер, набрал localhost: 8077 и вот она, твоя программа.

Отлаженную же программу многие оформляют как dll, и запускают под IIS как ISAPI модуль. Я ещё напишу об этом более подробно.

Суть в том, что нужен такой режим, который бы позволял компилировать в EXE файл или dll файл простым переключением. И такой режим в UniGUI есть.

Видите на рисунке ниже StandAlone Server / ISAPI Module ? Я обычно выбираю при разработке именно его, так как EXE крайне удобен и прост при самой разработке, но когда продукт готов, я просто переключаю на dll способами, описанными ниже.

19 Читать далее «Delphi. UniGUI. Режим StandAlone Server / ISAPI Module»

Delphi. UniGUI. Делаем авторизацию через СМС. Часть 2 – база данных и логика программы

Delphi. UniGUI. Делаем авторизацию через СМС. Часть 2 – база данных и логика программы

Результат у меня получился таким

33

34

После отправки кода, в случае корректного результата происходит переход на нужную страницу и уходит сообщение админу, либо открывается форма. Читать далее «Delphi. UniGUI. Делаем авторизацию через СМС. Часть 2 – база данных и логика программы»