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

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

Расскажу основные моменты. Оттолкнувшись от API написал такой код обработки параметров отправляемых через GET запрос Continue reading

Delphi. RestServer. Как получить произвольный tjsonobject в качестве ответа сервера?

Всем привет, продолжаем говорить про RestServer, построенный на одном из лучших языков программирования Delphi.

Встала такая задача – получать баланс с сервиса SMSC.ru

Стандартный ответ сервера выглядит примерно так…

Причем 200,OK это результат функции, которая отработала на сервере по запросу. И этот результат типа string. Заказчик же попросил сделать что-то в духе…

Прочитав мануал MarcoCantu, на 39-40 страницах, раздел  RETURNING JSON O BJECTS AND VALUES, я пришел к выводу, что результатом функции должен быть JSON Object, немного поэкспериментировав, у меня получилось следующее

Ok, это уже интересно, правда? Выходит мы можем обмениваться любыми объектами таким образом. Вот часть кода моей программы, которая запрашивает баланс Continue reading

Delphi. RestServer. Делаем красивый URL

Всем доброго дня! Любви, здоровья, удачи. Ну и вообще разберитесь в себе при случае))) Продолжаю писать REST сервер, понадобилось делать красивые URL для API REST сервера, что-то в таком духе

Красиво? Мне тоже нравится. Так хотел заказчик, а он ну прямо опытный человек очень в программировании!

Что у нас на входе?

Если собрать типичный REST сервер из мастера Delphi и запустить его. Пусть ну самый простой вариант. Standalone exe шник. Выглядит он так…

Ок, я тут немного подшаманил для своего проекта. Добавил ожидание СМС в секундах. Но суть простая – стандартная форма не сильно отличается. Если галки не снимали, по дефолту должно быть 2 метода в модуле TServerMethodsUnit Continue reading

Delphi. FastReport. Отправка отчета на почту в HTML формате

Заказчик захотел получать красивые отчеты на почту.

Решил использовать FastReport и придерживаться следующего алгоритма

Генерировать отчет в HTML файл

Загрузить  в строку

Отправить на почту

Код (Очень черновой вариант, но чтобы было)

 

Также кусок кода из примера UniGUI для FastReport

 

UniGUI.DBGrid.RowsFetching. Пост-подсказка

Запутался немного в “фетчингах” UniGUI и FireDAC. Вижу, что в UniDBGrid выводятся не все записи, хотя если отправлять данные в обычный DBGrid, то всё будет в порядке.

Немного поизучал свойства UniDBGrid и увидел галочку FetchALL. Теперь записи отображаются все и целиком.

 

Delphi. MySQL. Считаем сумму заказа через Delphi и MySQL

Есть таблицы. Далее будут эволюционировать по мере написания поста.

39

Требуется посчитать сумму заказа. Самый простой способ, сделать это через MySQL

Вариант посложнее, через Delphi. Continue reading

Delphi. UniGUI. Знаки вопроса. Кодировка (charset) на VPS и локаль

2 дня убил на то, чтобы понять, почему на VPS, при загрузке туда приложения UniGUI и базы MySQL при Insert и Update пишутся знаки вопросов вместо русского текста.

Решение. Выставить локаль Wndows Server 2012 на русскую. А также все, что возможно выставить в UTF-8.

Что было сделано до локали?

-Все, что возможно, было выставлено в utf-8 в MySQL.

-При подключении TFDConnection, параметр UTF-8 также был добавлен.

Но обо всем по порядку. Обсуждение темы находится на официальном форуме UniGUI.

Приведу описание проблемы и ее решение Continue reading

MySQL. 2 способа пересечения множеств и объединения таблиц

Есть следующая структура

36

Нужно составить вот такую таблицу

37

Часть данных у нас в одной таблице, часть данных в другой. Как получить это за один запрос?

1 способ (спасибо Денису Зубову из Самары)

2 способ

На выходе получим

38

Но есть одна проблема – поля с одинаковыми названиями, тогда делаем так…

либо так…

 

Delphi. MySQL. Пишем в DECIMAL поле и читаем из него.

Есть Decimal поле для цены в одном из проектов. Есть на форме 2 spinEdit, рубли и копейки соответственно.

33

Чтение из базы

Получение дробной части из Float(Real)

Получение целой и дробной частей для загрузки на форму

Запись в базу

 

Delphi. Гениальная борьба с WideMemo

Делаю проект на UniGUI. Соответственно, не могу воспользоваться DBGridEh

Имеется поле типа TEXT в MySQL, Delphi определяет его как WideMemo

32

Я просто создал кальк поле и прописал значения туда