Rev 8738 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.controllers;import in.shop2020.config.ConfigException;import in.shop2020.model.v1.order.RechargeOrder;import in.shop2020.model.v1.order.RechargeOrderStatus;import in.shop2020.model.v1.order.TransactionServiceException;import in.shop2020.payments.Payment;import in.shop2020.payments.PaymentException;import in.shop2020.payments.PaymentStatus;import in.shop2020.serving.utils.ebs.Base64;import in.shop2020.serving.utils.ebs.RC4;import in.shop2020.thrift.clients.PaymentClient;import in.shop2020.thrift.clients.TransactionClient;import in.shop2020.thrift.clients.UserClient;import in.shop2020.thrift.clients.config.ConfigClient;import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.List;import java.util.Map;import java.util.StringTokenizer;import java.util.TreeMap;import javax.servlet.http.HttpServletRequest;import org.apache.log4j.Logger;import org.apache.thrift.TException;public class WalletOnlyPaymentController {private static Logger log = Logger.getLogger(Class.class);private static final String FLAG_KEY = "IsFlagged";private static final String TXN_KEY = "TransactionID";private static final String AUTH_TXN_ID = "AuthTxnId";private static String successUrl;private static String errorUrl;private static String rechargeResultUri;private RechargeOrder rechargeOrder = null;/*** The secret key used to decode RC4 encoded data.*/private static String accountKey;private String redirectUrl;static{try {successUrl = ConfigClient.getClient().get("ebs_success_url");errorUrl = ConfigClient.getClient().get("ebs_error_url");rechargeResultUri = ConfigClient.getClient().get("recharge_success_url");accountKey = ConfigClient.getClient().get("ebs_secret_key");} catch (ConfigException e) {log.error("Unable to get success and error usr info from config server.");}}private Map<String, String> paymentParams = new TreeMap<String, String>();private String rechargeOrderId;private HttpServletRequest request;public String index() {StringBuffer data1 = new StringBuffer(rechargeOrderId);log.info("Received rechargeORder Id : " + data1.toString());//byte[] result = decodeRecvdData(data1);//String recvString = parseRecvdData(result);//updatePaymentParams(recvString);PaymentClient paymentServiceClient = null;TransactionClient transactionServiceClient = null;UserClient userServiceClient = null;try {paymentServiceClient = new PaymentClient();transactionServiceClient = new TransactionClient();userServiceClient = new UserClient();} catch (Exception e) {log.error("Unable to initialize one of the clients", e);}//long merchantPaymentId = Long.parseLong(paymentParams.get("MerchantRefNo"));//String gatewayPaymentId = paymentParams.get("PaymentID");//double amount = Double.parseDouble(paymentParams.get("Amount"));// String isFlagged = paymentParams.get(FLAG_KEY);// String gatewayTxnStatus = paymentParams.get("ResponseCode");// String description = paymentParams.get("ResponseMessage");// String authTxnId = paymentParams.get(TXN_KEY);Payment payment = null;Long txnId = null;try {//payment = paymentServiceClient.getClient().getPayment(merchantPaymentId);//txnId = payment.getMerchantTxnId();/*** CREATE PAYMENT*/rechargeOrder = transactionServiceClient.getClient().getRechargeOrder(Long.parseLong(rechargeOrderId));List<Payment> payments = paymentServiceClient.getClient().getPaymentForRechargeTxnId(rechargeOrder.getTransactionId());if(payments.size() > 0) {throw new PaymentException(rechargeOrder.getId(), "Payment already exists for recharge");}Long merchantPaymentId = 0l;if (rechargeOrder.getWalletAmount() + rechargeOrder.getCouponAmount() != rechargeOrder.getTotalAmount()) {log.error("Wallet amount : " + rechargeOrder.getWalletAmount()+ ", coupon amount : " + rechargeOrder.getCouponAmount() + " and total amount : " + rechargeOrder.getTotalAmount());merchantPaymentId = paymentServiceClient.getClient().createPayment(rechargeOrder.getUserId(), rechargeOrder.getTotalAmount(), 8, rechargeOrder.getTransactionId(), true);paymentServiceClient.getClient().updatePaymentDetails(merchantPaymentId, "","", "0", "", "", "", "", "", PaymentStatus.FAILED, "", null);transactionServiceClient.getClient().updateRechargeOrderStatus(rechargeOrder.getId(), RechargeOrderStatus.PAYMENT_FAILED);} else {merchantPaymentId = paymentServiceClient.getClient().createPayment(rechargeOrder.getUserId(), rechargeOrder.getTotalAmount(), 8, rechargeOrder.getTransactionId(), true);//Update payment status as authorizedpaymentServiceClient.getClient().updatePaymentDetails(merchantPaymentId, "","", "0", "", "", "", "", "", PaymentStatus.SUCCESS, "", null);transactionServiceClient.getClient().updateRechargeOrderStatus(rechargeOrder.getId(), RechargeOrderStatus.PAYMENT_SUCCESSFUL);}this.redirectUrl = rechargeResultUri + "?paymentId=" + merchantPaymentId;} catch (PaymentException e) {log.error("Unable to mark the payment as authorized", e);} catch (TException e) {log.error("Unable to mark the payment as authorized", e);} catch (TransactionServiceException e) {// TODO Auto-generated catch blocklog.error("Unable to recharge");}//DataLogger.logData(EventType.PAYMENT_FAILURE, getSessionId(), userinfo.getUserId(), userinfo.getEmail(), Long.toString(merchantPaymentId), gatewayPaymentId,// gatewayTxnStatus, description);log.info("User will be redirected to: " + this.redirectUrl);return "index";}public String getRedirectUrl(){return this.redirectUrl;}public void setServletRequest(HttpServletRequest request) {this.request = request;}public Map<String, String> getPaymentParams() {return paymentParams;}public static String getRechargeResultUri() {return rechargeResultUri;}public String getRechargeOrderId() {return rechargeOrderId;}public void setRechargeOrderId(String rechargeOrderId) {this.rechargeOrderId = rechargeOrderId;}}