Электронный магазин на Java и XML

       

Класс TestPaymentAuthorizer


Следующие классы, которые мы будем рассматривать, используются в процессе оформления заказа. Первый из них занимается проверкой данных о кредитной

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

Класс TestPaymentAuthori zer представлен в листинге 5.10. Первый метод в этом классе, getAuthorization, в качестве параметра получает объект Order, из которого извлекается информация о кредитной карте для проверки. В нашем примере мы просто берем последнюю цифру номера и, если это 1, карта с таким номером отклоняется, то есть считается не прошедшей проверку. Этот абстрактный, произвольный критерий мы используем только для того, чтобы протестировать работу метода и продемонстрировать оба типа возвращаемых значений.

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

Листинг 5.10. Класс TestPaymentAuthorizer (TestPaymentAuthorizer.java)

public class TestPaymentAuthorizer {

static public Authorization getAuthorization( Order order ) {

Authorization authorization = new Authorization();

try {

CustomerInfo custInfo = order.getCustomerInfo();

CreditInfo creditInfo = custInfo.getCreditInfo();

String num = creditInfo.getCreditCardNumber();



if( num != null ) {

if( num.endsWith( "1" ) ) {

authorization.setApproved( false );

authorization.setReason("Insufficent Funds");

}

else

{

authorization.setApproved( true );

authorization.setReason( "Approved" );

authorization.setAuthorizationCode( "Test" );

}

}

}

catch( Exception e ) {}

return authorization;

}

static public void capture( String authorizationCode, double amount ) {

}

}



Содержание раздела