public void authorizeOrder(PaymentEngine paymentEngine, HttpServletRequest request) throws AuthorizationException, PaymentException, Exception { if (!isOpen(orderHeader)) { throw new PaymentException("Order is not open"); } if (!shoppingCart.isCashPaymentOrder()) { paymentEngine.setCreditCardInfo(creditCardInfo); shoppingCart.getPaymentEngine().authorizePayment(orderHeader, request); PaymentTran paymentTran = new PaymentTran(); paymentTran.setAuthCode(paymentEngine.getAuthCode()); paymentTran.setPaymentReference1(paymentEngine.getPaymentReference1()); paymentTran.setPaymentReference2(paymentEngine.getPaymentReference2()); paymentTran.setPaymentReference3(paymentEngine.getPaymentReference3()); paymentTran.setPaymentReference4(paymentEngine.getPaymentReference4()); paymentTran.setPaymentReference5(paymentEngine.getPaymentReference5()); paymentTran.setTranDatetime(new Date()); orderHeader.setPaymentTran(paymentTran); orderHeader.setPaymentGatewayProvider(paymentEngine.getClass().getSimpleName()); } orderHeader.setOrderStatus(calcStatus(orderHeader)); }