diff options
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.java | 54 |
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(); + } } } |