/* * Licensed to csti consulting * You may obtain a copy of the License at * * http://www.csticonsulting.com * Copyright (c) 2006-Aug 24, 2010 Consultation CS-TI inc. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.salesmanager.core.service.workflow.order; import java.util.Locale; import com.salesmanager.core.constants.OrderConstants; import com.salesmanager.core.entity.customer.Customer; import com.salesmanager.core.entity.merchant.MerchantStore; import com.salesmanager.core.entity.orders.Order; import com.salesmanager.core.entity.payment.CreditCard; import com.salesmanager.core.entity.payment.PaymentMethod; import com.salesmanager.core.service.ServiceFactory; import com.salesmanager.core.service.payment.PaymentService; import com.salesmanager.core.service.workflow.Activity; import com.salesmanager.core.service.workflow.ProcessorContext; import com.salesmanager.core.util.PaymentUtil; /** * One time payment processing Does not handle recurring transactions * * @author Carl Samson * */ public class ProcessPayment implements Activity { public ProcessorContext execute(ProcessorContext context) throws Exception { Order order = (Order) context.getObject("Order"); Customer customer = (Customer) context.getObject("Customer"); MerchantStore store = (MerchantStore) context .getObject("MerchantStore"); PaymentMethod payment = (PaymentMethod) context .getObject("PaymentMethod"); order.setPaymentMethod(payment.getPaymentMethodName()); order.setPaymentModuleCode(payment.getPaymentModuleName()); if (PaymentUtil.isPaymentModuleCreditCardType(payment .getPaymentModuleName())) { CreditCard cc = (CreditCard) payment.getConfig("CARD"); Locale locale = (Locale) context.getObject("Locale"); cc.setLocale(locale);//for getting credit card name order.setCardType(cc.getCreditCardName()); order.setCcCvv(cc.getCvv()); order.setCcExpires(cc.getExpirationMonth() + cc.getExpirationYear().substring(2, cc.getExpirationYear().length())); //payment ui does not capture credit card owner //we will take customer billing name order.setCcOwner(customer.getCustomerBillingFirstName() + " " + customer.getCustomerBillingLastName()); order.setCcNumber(cc.getCardNumber()); } // process payment PaymentService pservice = (PaymentService) ServiceFactory .getService(ServiceFactory.PaymentService); pservice.processPaymentTransaction(store, order, customer, payment); order.setOrderStatus(OrderConstants.STATUSPROCESSING); if (context.getObject("files") != null) { order.setOrderStatus(OrderConstants.STATUSDELIVERED); } // transform to online object so it appears in order list order.setChannel(OrderConstants.ONLINE_CHANNEL); return context; } }