Регистрация заказа и оплата через платежную систему

В этой оркестровке используются два веб-сервиса: веб-сервис интернет-магазина, чье описание можно найти в лабораторной работе №3, и веб-сервис платежной системы, который для простоты представлен всего одной операцией:

/// <summary>

/// Переводит деньги со счета на счет

/// </summary>

/// <param name="fromCard">

/// Карта с которой переводить.

/// Формат: 1234567812345678

/// </param>

/// <param name="toCard">

/// Карта куда переводить.

/// Формат: 1234567812345678

/// </param>

/// <param name="sum">

/// Сумма перевода в формате: 11.11 XXX,

/// где XXX - код валюты по ISO

/// </param>

/// <param name="password">

/// Пароль

/// </param>

/// <returns>

/// True в случае успешной транзакции,

/// False в любом другом случае

/// </returns>

[WebMethod(Description = "Переводит деньги со счета на счет")]

public bool TransferMoney(string fromCard, string toCard,

string sum, string password)

{

 

}

 

Оркестровка заказа в интернет-магазине также можно разбить на две логических части: регистрацию заказа (Рис. 8.5) и его оплату через платежную систему (Рис. 8.7), которая производится только в том случае, если регистрация прошла успешно.

В качестве входного параметра эта оркестровка получает заказ в формате ERP системы, который надо преобразовать в формат интернет магазина. Для этого в конструкторе сообщения «Construct Order» используется преобразование XML-сообщений при помощи Activity «Transform», которое исполняет карту преобразований BizTalk. Карты преобразований задаются отдельными файлами и позволяют настраивать преобразование XML-данных из формата одной схемы в другую, выполняя попутно множество необходимых функции, например, вычисление математических выражений, произведение операций над строками и другие.

На Рис. 8.6 представлена карта, преобразующая заказ в формат интернет-магазина. Как наглядно видно из рисунка, она копирует идентификатор заказа, для каждого товара копируются количество и его идентификатор в каталоге интернет-магазина. Для значения даты заказа используется функция, возвращающая текущую дату. Информация о доставке заказа также по большей части просто копируется в соответствующие элементы. Однако веб-сервис интернет-магазина принимает адрес одной строкой, в то время как в ERP системе он задается четырьмя элементами. Поэтому для его вычисления применяется функция конкатенации строк, суммирующая значения элементов через пробел.

 

Рис. 8.5. Регистрация заказа в интернет-магазине.

 

После создания сообщения содержащего готовый к отправке заказ в интернет-магазине можно наблюдать Activity «Debug Order», которое используется для вывода полученного сообщения в журнал событий системы с целью отладки системы. Для этого в оркестровки заведена переменная tempXmlDoc типа XmlDocument. В нее при помощи скрипта копируется сообщение с преобразованным заказом, а затем оно, преобразованное к строке, сохраняется в системном журнале:

tempXmlDoc = RegisterOrderReq.order;

System.Diagnostics.EventLog.WriteEntry("BizTalk Server 2006",

System.Convert.ToString(tempXmlDoc.InnerXml));

 

После регистрации заказа в интернет-магазине в ответе веб-сервиса возвращается сумма сделанного заказа и его статус в виде строки. Статус может принимать следующие значения:

public enum OrderStatus

{

Registered,

InWork,

Sended,

NotEnoughGoods,

WrongGoodId,

OrderNotFound

}

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

Рис. 8.6. Преобразование заказа и одного формата в другой.

 

Рис. 8.7. Оплата заказа.

 

Поэтому после совершения заказа выполняется условный оператор с условием: «RegisterOrderRes.statusName == "Registered"». В случае если условие не выполняется, то переменной ordered присваивается значение False и процесс завершается. Если же заказ был успешно зарегистрирован, то выполняется запрос на получение номера счета магазина, куда следует переводить деньги. Затем переменной Sum присваивается значение RegisterOrderRes.RegisterOrderResult и значение переменной передается в оркестровку конвертации валюты.

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

TransferMoneyReq.toCard = GetCardNumberRes.GetCardNumberResult;

TransferMoneyReq.fromCard =

System.Convert.ToString(PaymentInfo.GetPaymentInfoResult);

TransferMoneyReq.password = PaymentInfo.password;

TransferMoneyReq.sum = Sum.ToString() + " RUR";

По результатам проведения банковской транзакции возвращается сообщение, которое содержит код успешности операции, который затем присваивается переменной ordered, используемой для возврата результата проведения заказа в интернет-магазине. Полная структура данных оркестровки представлена на Рис. 8.8:

Рис. 8.8. Структура данных оркестровки заказа в интернет-магазине.








Дата добавления: 2015-02-28; просмотров: 767;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.