|
Программирование >> Руководство по созданию web приложений
Глава 8. серверных ActiveX 343 необходимо на : Web Вашего магазина, причем вызов ни и этого модуля должен выполняться из программного обеспечения магазина. Если магазин создан с применением технологии ASP, нужно придумать способ вызова интерфейсного модуля из серверных сценариев, написанных на или VBScript. В этом разделе мы расскажем о том, как создать н : управ- ления ActiveX, вызываюгций функции из библиотеки . имитируюгцей часть интерфейса обработки карточек. Библиотека для имитации интерфейса JIhhi демонстрационный интерфейс обработки кредитных карточек состоит всего из одной функции с именем iiSendPayData. Ее задача - отправить информацию о платеже на сервер компании. Напомним, что при создании реального магазина Вы интерфейсный модуль от процессинговой компании. Прототип функции fnSendPayData показан ниже: extern С decls - int . LPSTR STjmrmnt, LPSTR - DWORD LPSTR szSuccessURL, LPSTR . LPSTR Так как предполагается, что мы вызываем из программы, написан- на С++, для отключения механизма функции (name используется определение extern Чтобы функция fnSendPayData попадав список экспортируемых функций, определим ее как Это позволит нам не создавать def-файл определения модуля библиотеки DLL. Нри вызове функции . . необходимо передать шесть параметров. Через первые два параметра szAmount и передается величина суммы и название валюты. И тот, и другой параметр задается я виде текстовой строки. Третий dwMerchantID - идентификатор покупателя, назначенный ему при регистрации и зарегистрированный в процессинговой компании. Но этому идентификатору компания сможет определить, кто выполняет платеж. Через последние три интерфейсный модуль серверу ма- газина адреса URL-страниц, на которые попадает посетитель в зависимости от результата выполнения платежа. Если результат успешный, посетитель попадает на страницу, адрес которой задан параметром s z S ucce ss URL, если нет - па стра-ницycaдpecoмsz Err о rURL,aecлипpи выполнении операциипоявиласьдопол-нительная информация - на страницу с адресом Функция ... . код выполнения Если этот код [ивсн нулю, операция выполнена успешно, а если нет, то это означает, что ошибки. Рассмотрим действия, выполняемые функцией Ее исходный текст Вы найдете в листинге 8-4. Листинг 8-4 хранится в файле chOi/CriidftCardlnterface/CreiltCarollnterfice.cpp на прилагаемом к книге компакт-диске. Прежде всего эта функция проверяет идентификатор покупателя: 1 fCdaierchafitIO 1= 12345) return 1; != NULL) erf ar. htffil ); - - - - IITTLL) IL, ratif y. html 5; Далее функция возвращает нулевой значение в качестве признака го завершения своей работы. Помимо функции fnSendPayData в исходном тексте нашей библиотеки DEE определена стандартная функция OllMala BOOL APIENTRY DIIMain(HANDLE hModule, CMOpi jr.ca.ll, LPVOID Ipleaartfaa) switch (ul reason for call) { case DLL PROCESS ATTACH: case Dli case DL caseDLL PROCESS DETACH; breal<; return TRUE; Она вызывается, когда или поток обращается к библиотеке. Эта функция была создана мастером Microsoft Visual С++ и не выполняет никаких Тестовая программа для вызова имитатора интерфейса Прежде чем : только что описанный модуль из серверного сценария ASP, его тестирование. Для этого мы подготовили небольшую кон- программу, исходный текст которой Вы найдете в листинге 8-5. Листинг 8-5 хранится в файле сhOe/CreditCard!лterfaceTeet/ CrecJitCardlnterfaceTesl.cpp на прилагаемом к книге компакт-диске. Мы разрешаем выполнение платежа только посетителя с . . ром 12345. При ошибке значение 1. ; ; . компания ; . этот идентификатор своей базе данных. Далее функция -: . - ..- .--п убеждается, что параметры szAmount и SzCur не . нулевых значений: . == О strlen(szCurrency) == 0) return 2; В случае функция возвращает значение 2. Если; - - .указаныправильно, функцияГп8епс1РауВа1а;1а111 ;ываг1 имена файлов по ... хранящимся в параметрах szSuccessURL, szErrorURL и szNoyificationURL: NULL) В области глобальных переменных этой программы мы подготовили онред!- ление типа (* DLLFN)(LPSTR LPSTR DWORD LPSTR szErrorURL, LPSTR Как этот тип представляет собой указатель на . fnSend- PayData, описанную ранее. Тестовая программа функцию предварительно вы- полняя динамическую загрузку библиотеки DLL с именем . . face.dll. БиблиoтeкaDLL фyнкциeйLoadLibrary,кaкэтoпoкaзaнoнижe: HINSTANCE Идентификатор загруженной библиотеки сохраняется в локальной переменной hCreditCardlnterfaceDLL. Если загрузка прогпла успегпно, тестовая программа вызывает функцию предварительно получив на нее указатель с помощью функции DLLFN fn; char E2HeyirieatianliHL[51a]; l-(f . . != NULL) fn = (DLLFN)GetProcAddress( . != NULL) int = , aad 12345, szSuccessURL, szErrorURL, szNoyificationURL); = arCarcIatarraaeDLL); Здесь мы передаем функции сумму 123, название валюты - аао , идентификатор покупателя 12345. Адреса i К i функция запишет в переменные szaae-eeasURL szErrorURL и szNoyificationURL. Убедившись с . . тестовой программы и отладчика, что интерфейсная библиотека DLL работает . мы переходим к . серверного эле- мента ActiveX, доступного из страниц ASP и предназначенного для вызова fnSendPayData, Элемент . енм CreiltCari в начале этой главы мы подробно рассмотрели создания серверного элемента . . ActiveX с применением библиотеки шаблонов ALL. Поэто- му сейчас мы не будем вдаваться в детали.
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |