Существует возможность использования WinCalc Mobile Server в качестве сервера просчетов для калькулятора на сайте. Данных механизм пришел на смену
сервера просчетов, который больше не поддерживается.
Для того, чтобы рассчитать заказ, необходимо:
1. Настроить сервис WinCalc Mobile (создать учетные записи, подготовить сервер к работе).
2. Создать запрос на расчет заказа
Выполнить запрос к одному из серверов заказов (c1.vsgroup.ua или c2.vsgroup.ua) :
user=[учетная запись пользователя]
psw=[пароль учетной записи]
action=offer_insert
guid=[уникальный id заказа]
data_in=[файл заказа]
Запрос вернет XML файл, поле result должно быть ok в случае успешной операции.
3. Дождаться расчета заказа
Выполнить запрос к серверу заказов :
user=[учетная запись пользователя]
psw=[пароль учетной записи]
action=offer_get_info
guid=[уникальный id заказа]
Запрос вернет XML файл, поле result должно быть ok в случае успешной операции. Поле Status будет равно 1 если заказ рассчитан сервером. Рекомендуется делать опрос сервера каждые 10 секунд после отправки запроса.
4. Получить результат XML
Выполнить запрос к серверу заказов :
user=[учетная запись пользователя]
psw=[пароль учетной записи]
action=offer_get_info_out
guid=[уникальный id заказа]
Запрос вернет XML файл, поле result должно быть ok в случае успешной операции. Поле data_out содержит XML файл заказа WinCalc, упакованного библиотекой ZLIB и функцией EncodeBase64
Распаковка data_out :
Код:
XMLStr := ExpandZLIB( DecodeBase64( XmlToStr(XML.Root.NamedItem['data_out'].AsString) ) );
...
function XMLToStr(XML: string): string;
begin
Result := XML;
Result := StringReplace(Result, '&', '&', [rfReplaceAll]);
Result := StringReplace(Result, '<', '<', [rfReplaceAll]);
Result := StringReplace(Result, '>', '>', [rfReplaceAll]);
Result := StringReplace(Result, '"', '"', [rfReplaceAll]);
Result := StringReplace(Result, ''', '''', [rfReplaceAll]);
Result := StringReplace(Result, ' ', #10, [rfReplaceAll]);
Result := StringReplace(Result, ' ', #13, [rfReplaceAll]);
end;
5. Получить результат PDF
Выполнить запрос к серверу заказов :
user=[учетная запись пользователя]
psw=[пароль учетной записи]
action=offer_get_info_out_pdf
guid=[уникальный id заказа]
Запрос вернет XML файл, поле result должно быть ok в случае успешной операции. Поле data_out_pdf содержит PDF файл предложения WinCalc, упакованного библиотекой ZLIB и функцией EncodeBase64. Распаковка аналогична п.4
6. Чтобы сервер начал считать заказ немедленно, нужно ему открыть UDP порты 5221-5223
7. В приложении php скрипт, который отправляет заказ на расчет и получает результат. Там же и пример файла запроса.