Программирование >>  Руководство по созданию web приложений 

1 ... 114 115 116 [ 117 ] 118 119 120 ... 141


Глава 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. Поэто-

му сейчас мы не будем вдаваться в детали.



1 ... 114 115 116 [ 117 ] 118 119 120 ... 141

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика