summaryrefslogtreecommitdiffstats
path: root/sandbox/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java')
-rw-r--r--sandbox/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java54
1 files changed, 29 insertions, 25 deletions
diff --git a/sandbox/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java b/sandbox/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
index 1e7050edbe..8dfe4b2b40 100644
--- a/sandbox/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
+++ b/sandbox/travelsample/contributions/payment-spring/src/main/java/com/tuscanyscatours/payment/impl/PaymentImpl.java
@@ -19,18 +19,18 @@
package com.tuscanyscatours.payment.impl;
+import com.tuscanyscatours.customer.Customer;
+import com.tuscanyscatours.customer.CustomerNotFoundException;
+import com.tuscanyscatours.customer.CustomerRegistry;
import com.tuscanyscatours.emailgateway.EmailGateway;
import com.tuscanyscatours.emailgateway.EmailType;
import com.tuscanyscatours.payment.Payment;
-import com.tuscanyscatours.payment.creditcard.CreditCardDetailsType;
import com.tuscanyscatours.payment.creditcard.CreditCardPayment;
-import com.tuscanyscatours.payment.creditcard.CreditCardTypeType;
-import com.tuscanyscatours.payment.creditcard.ObjectFactory;
-import com.tuscanyscatours.payment.creditcard.PayerType;
public class PaymentImpl implements Payment {
private CreditCardPayment creditCardPayment;
+ private CustomerRegistry customerRegistry;
private EmailGateway emailGateway;
private float transactionFee;
@@ -38,6 +38,10 @@ public class PaymentImpl implements Payment {
this.creditCardPayment = creditCardPayment;
}
+ public void setCustomerRegistry(CustomerRegistry customerRegistry) {
+ this.customerRegistry = customerRegistry;
+ }
+
public void setEmailGateway(EmailGateway emailGateway) {
this.emailGateway = emailGateway;
}
@@ -47,27 +51,27 @@ public class PaymentImpl implements Payment {
}
public String makePaymentMember(String customerId, float amount) {
-
- ObjectFactory objectFactory = new ObjectFactory();
- CreditCardDetailsType ccDetails = objectFactory.createCreditCardDetailsType();
- ccDetails.setCreditCardType(CreditCardTypeType.fromValue("Visa"));
- PayerType ccOwner = objectFactory.createPayerType();
- ccOwner.setName(customerId);
- ccDetails.setCardOwner(ccOwner);
-
- amount += transactionFee;
-
- String status = creditCardPayment.authorize(ccDetails, amount);
-
- com.tuscanyscatours.emailgateway.ObjectFactory emailFactory
- = new com.tuscanyscatours.emailgateway.ObjectFactory();
- EmailType email = emailFactory.createEmailType();
- email.setTitle("Payment Received");
- email.setTo(customerId);
-
- emailGateway.sendEmail(email);
-
- return status;
+ try {
+ Customer customer = customerRegistry.getCustomer(customerId);
+
+ amount += transactionFee;
+
+ String status = creditCardPayment.authorize(customer.getCreditCard(), amount);
+
+ com.tuscanyscatours.emailgateway.ObjectFactory emailFactory
+ = new com.tuscanyscatours.emailgateway.ObjectFactory();
+ EmailType email = emailFactory.createEmailType();
+ email.setTitle("Payment Received");
+ email.setTo(customerId);
+
+ emailGateway.sendEmail(email);
+
+ return status;
+ } catch (CustomerNotFoundException ex) {
+ return "Payment failed due to " + ex.getMessage();
+ } catch (Throwable t) {
+ return "Payment failed due to system error " + t.getMessage();
+ }
}
}