Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

Взаимодействие с DataCash

1. Для применения компонента DataCash в проекте WroxProcessor необходима ссылка на соответствующие библиотеки. Выполните в меню Project  References… и щелкните мышью на DataCash Payment Authorization for Windows NT.

2. Потребуется несколько базовых функций. Добавьте в объект OrderProcessor следующий код (метод GetReferenceNumber рассматривается ниже):

 Взаимодействие с DataCashВзаимодействие с DataCash

Взаимодействие с DataCash

 

 

3. В тот же объект OrderProcessor добавьте метод GetAmount (получение общей суммы части заказа):

Взаимодействие с DataCash

 

4. Для проведения авторизации платежа нужно реализовать метод Process в коннекторе PipelinePaymentAuth:

 Взаимодействие с DataCash

Взаимодействие с DataCash

Взаимодействие с DataCash

 

 

6. Протестируйте работу с DataCash. Поместите точку останова в начало метода и пройдите до получения результата. Укажите номер своей кредитной карточки. С тестовой учетной записью ничего не случится, поскольку сервер DataCash возвращает случайные результаты. Значение 1 в методе Authorise указывает на то, что транзакция успешна, любое другое значение свидетельствует о неудаче.

Описание работы

Метод GetPaymentDetails объекта OrderProcessor служит для хранения номера кредитной карточки, месяц и год истечения срока действия карточки связываются с заказом. Методом GetCardID определяем идентификатор используемой карточки и запускаем запрос, возвращающий сведения об этой карточке:

 Взаимодействие с DataCash

Взаимодействие с DataCash

 

Если карточка найдена, то через параметры типа ByRef возвращаются сведения о ней. Методом GetAmount определяем итоговую стоимость части заказа. Во время выходной проверки, при выборе ставки налога и варианта отгрузки, мы сохраняем результат вычисления в таблице OrderParts при каждом обращении. Теперь итоговая сумма извлекается из столбца Total:

 Взаимодействие с DataCash

В методе Process проверяем, что получены все данные о заказе, включая:

□ Идентификатор кредитной карточки (необходим для извлечения сведений о карточке)

□ Сведения для авторизации

□ Ссылочный номер заказа

Эти значения предоставляются разными методами:

CardlD = Processor.GetCardlD

Amount = Processor.GetAmount

Reference = Processor.GetReferenceNumber

Метод DataCash.Authorise исполняет всю работу по авторизации транзакции. Сначала он подключается к шлюзу платежей сервера DataCash, находящемуся где-то в Интернете (в нашем примере — new-auth.datacash.com), устанавливает защитные и шифрующие протоколы для безопасной пересылки по Интернету сведений о кредитных карточках, а затем передает данные в шлюз. Шлюз платежей выясняет по учетной записи, с кем имеет дело, определяет банк (куда нужно направить запрос), транслирует полученный запрос по выбранному банком протоколу на линию Х.25 и, наконец, переходит в режим ожидания результатов.

Метод Authorise подробно рассматривается в приложении А. В коде мы пользуемся имеющимися сведениями о карточке, итоговой суммой и ссылочным номером. Наряду с этим указаны тестовый клиентский номер и пароль ("21859999" и "fred"):

 Взаимодействие с DataCash

В реальном проекте нужно подставить другие номер клиента и пароль.

DataCash предполагает, что ссылочный номер содержит более 6 цифр, поэтому для формирования уникального ссылочного номера добавляем 2 000 000 (методом GetRef erenceNumber) к Part ID. Затем создаем объект DataCash и выполняем запрос к нему.

Приводится подробное описание DataCash АРІ, в частности так называемых магических номеров (magic number) и возвращаемых кодов. Магические номера используются в тестировании и возвращают либо случайный, либо заранее известный результат. Например, по номеру карточки 5473000000000114 мы всегда получим сообщение Retain Card (удержать карточку), а по номеру 41М111111111111 — случайный результат, которым может быть и успешная авторизация. В нашем варианте коннектора мы продолжаем работу только после авторизации карточки, поэтому пользуемся номером 5473000000000015, гарантирующим успешное исполнение транзакции.

Если авторизация сработает (карточка правильная, деньги на счету есть и т.д.), метод Authorise вернет значение 1. В этом случае объект DataCash предоставит сведения о транзакции, в том числе уникальный ссылочный номер, метку времени, страну, тип карточки и, что важнее всего, код авторизации. Компании кредитных карточек используют его для авторизации транзакций, поэтому если банковский счет позволяет провести транзакцию, будет запрошен код авторизации.

 Взаимодействие с DataCash

Кроме записи в журнал аудита, мы устанавливаем параметр RunNextConnector в значение True, а статус заказа в значение 4 (коннектор, указывающий поставщику на возможность отгрузки заказа):

 Взаимодействие с DataCash

Если транзакция неуспешна, мы посылаем почтовое сообщение владельцу сайта и заносим этот факт в журнал аудита (вместе с описанием причины отмены транзакции). Метод AuthCode объекта DataCash обеспечит доступ к текстовому описанию ошибки:

 Взаимодействие с DataCash

Важна структура перехвата ошибок. Все значения проверяются в наборе вложенных операторов If. Любой из них прерывает исполнение функции и возвращает нас в процессор заказов. По умолчанию в этом случае значение функции равно False, что указывает методу OrderProcessor .Go на то, что не все в порядке и нужно предпринять какие-то действия. Применяется правило: все успешные проверки группируются в верхней части оператора If, а ошибки — в нижней части. Поэтому в конец функции помещен шаблон вызова AddAudit для записи потенциальных проблем в журнал аудита:

 Взаимодействие с DataCash

 

При тестировании мы пользуемся методом AuthCode объекта DataCash для возврата строки, показывающей причину неудачного исполнения транзакции, или кода авторизации в случае успешной транзакции. Заносим результат в журнал аудита и, если транзакция успешна, уведомляем процессор о правильном исполнении метода и запрашиваем переход к следующему коннектору:

Processor.AddAudit Me, PPAAuthSuccessful,

True, "Auth code: " & DataCash.AuthCode, Data

Работа с кредитными карточками на реальном сайте может преподнести дополнительные сюрпризы. Например, специализированное бюро может брать деньги за любые попытки авторизации, в том числе и неуспешные (фальшивый или неправильно введенный номер карточки). Мы не будем вдаваться влетали проверки разрядности (например, все номера карточек American Express содержат 15 цифр и начинаются с 34 или 37) и вычисления контрольных сумм, хотя такое тестирование помогает проводить локальную проверку карточки.

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

Перейдем к работе с журналом аудита.

Просмотр журнала аудита

При продвижении по конвейеру в журнале аудита накапливаются разнообразные сведения, и для доступа к ним нужен инструмент. Изменим код RenderOrder, но сначала реализуем в объекте Orders метод, возвращающий журнал аудита для данной части заказа.

Вывод журнала аудита

1. Вернитесь в проект WroxCommerce и добавьте в объект Orders новый метод:

 Взаимодействие с DataCash

В данном случае условием для заказа является AuditlD. В SQL Server этот столбец является полем идентичности, поэтому всегда возвращаются числа, а сортировка по 4 — байтовому целому столбцу выполняется быстрее, чем по 8-байтовому столбцу даты.

2. Вернитесь в проект Visual InterDev и добавьте код уровня представления в функцию RenderOrder страницы site.asp. Поместите этот код сразу за оператором  If…End If, выводящим сведения о поставщике:

Взаимодействие с DataCash 

В приведенном примере показано несколько вариантов оператора Select Case, выводящих пояснения к сообщениям из журнала аудита (список неполон, но идея ясна). Вспомогательная функция RenderOrder выведет информацию об истории обработки заказа.

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

 Взаимодействие с DataCash

Читайте так же:
Not found

Нам доверяют

Интернет магазин