Rev 6326 | Rev 6336 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.serving.controllers;import in.shop2020.datalogger.EventType;import in.shop2020.model.v1.order.RechargeOrder;import in.shop2020.model.v1.order.RechargeOrderStatus;import in.shop2020.model.v1.order.RechargeType;import in.shop2020.model.v1.order.TransactionServiceException;import in.shop2020.payments.PaymentException;import in.shop2020.serving.utils.FormattingUtils;import in.shop2020.thrift.clients.PaymentClient;import in.shop2020.thrift.clients.TransactionClient;import in.shop2020.utils.DataLogger;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import org.apache.log4j.Logger;import org.apache.thrift.TException;import org.apache.thrift.transport.TTransportException;public class RechargeResultController extends BaseController {private static final long serialVersionUID = 1L;// private static final String SHOOGLOO_AFF_NAME = "shoogloo";private static Logger log = Logger.getLogger(Class.class);private FormattingUtils formattingUtils = new FormattingUtils();//private boolean isShooglooAff = false;private static Map<Long,String> allProviders;static {try {allProviders = new TransactionClient().getClient().getServiceProviders(RechargeType.DTH, true);allProviders.putAll(new TransactionClient().getClient().getServiceProviders(RechargeType.MOBILE, true));} catch (TTransportException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (TException e) {// TODO Auto-generated catch blocke.printStackTrace();}}private static Map<String, String> FailureReasonMap;static {FailureReasonMap = new HashMap<String, String>();FailureReasonMap.put("Invalid Amount", "the amount you tried seems to be invalid. Please try another amount.");FailureReasonMap.put("Customer Exceeded Daily Limit", "you have exceeded daily recharge limit for this number. Please try after 12 hours.");FailureReasonMap.put("Invalid Mobile Number", "it seems that your mobile number is not being recognized by selected operator. Please make sure the number you tried is correct.");}long merchantPaymentId;RechargeOrder rechargeOrder = null;String message = null;public RechargeResultController(){super();}public String index() {PaymentClient paymentServiceClient = null;TransactionClient transactionServiceClient = null;//UserClient userServiceClient = null;try {paymentServiceClient = new PaymentClient();transactionServiceClient = new TransactionClient();// userServiceClient = new UserClient();} catch (Exception e1) {// TODO Nothing to worrylog.error("Unable to initialize the client for either payment or transaction or user service", e1);}String returningPayIdString = this.request.getParameter("paymentId");if (returningPayIdString == null || returningPayIdString.isEmpty()) {this.message = "Payment Failed at payment gateway. Please try again.";return "index";}merchantPaymentId = Long.parseLong(this.request.getParameter("paymentId"));long txnId;try {txnId = paymentServiceClient.getClient().getPayment(merchantPaymentId).getMerchantTxnId();rechargeOrder = transactionServiceClient.getClient().getRechargeOrdersForTransaction(txnId);this.message = "You have successfully recharged your mobile.";/*if (cookiesMap.containsKey(TrackingInterceptor.AFF_COOKIE)) {long affId = Long.parseLong(cookiesMap.get(TrackingInterceptor.AFF_COOKIE).getValue());userServiceClient.getClient().addTrackLog(affId, userinfo.getUserId(), TrackLogType.PAYMENT_SUCCESS, "",Long.toString(merchantPaymentId), (new Date()).getTime());Affiliate aff = userServiceClient.getClient().getAffiliateById(affId);if (aff.getName().equals(SHOOGLOO_AFF_NAME)) {isShooglooAff = true;}}*/} catch (PaymentException e) {log.error("Payment service not responding. Payment id is" + merchantPaymentId, e);} catch (TException e) {log.error("Thrift service exception. Payment id is" + merchantPaymentId, e);} catch (TransactionServiceException e) {log.error("Transaction service exception. Payment id is" + merchantPaymentId, e);}// catch (UserAffiliateException e) {// log.error("Affiliate service exception. Payment id is" + merchantPaymentId, e);// }return "index";}public String formatPrice(double price) {return formattingUtils.formatPrice(price);}public String getMessage(){return this.message;}// public boolean getIsShooglooAff() {// return this.isShooglooAff;// }public long getMerchantPaymentId() {return merchantPaymentId;}public static String formatDate(long timestamp){SimpleDateFormat dateformat = new SimpleDateFormat("dd MMMM yyyy");return dateformat.format(new Date(timestamp));}@Overridepublic String getHeaderSnippet() {String url = request.getQueryString();if (url == null) {url = "";} else {url = "?" + url;}url = request.getRequestURI() + url;return pageLoader.getHeaderHtml(userinfo.isLoggedIn(), userinfo.getEmail(), userinfo.getTotalItems(), url , 0, false);}public RechargeOrder getRechargeOrder() {return rechargeOrder;}public void setRechargeOrder(RechargeOrder rechargeOrder) {this.rechargeOrder = rechargeOrder;}public boolean isDTH() {return rechargeOrder.getRechargeType().equals(RechargeType.DTH);}public String getProvider() {return allProviders.get(rechargeOrder.getOperatorId());}public String[] getOrderStatus(){RechargeOrderStatus status = rechargeOrder.getStatus();if(status.equals(RechargeOrderStatus.PAYMENT_FAILED)||status.equals(RechargeOrderStatus.PAYMENT_PENDING)){DataLogger.logData(EventType.RECHARGE_PAYMENT_FAILED, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),rechargeOrder.getRechargeType().toString());return new String[]{"red", "PAYMENT FAILED", "Payment failed at the payment gateway. Try to <a href='/recharge'>recharge again</a>"};}else if(status.equals(RechargeOrderStatus.PAYMENT_SUCCESSFUL)) {DataLogger.logData(EventType.RECHARGE_PAYMENT_SUCCESSFUL, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),rechargeOrder.getRechargeType().toString());return new String[]{"red", "RECHARGE IN PROCESS", "Your Payment was successful but due to some internal error with the operator's system we are not sure if the recharge was successful.<br>" +"We have put your recharge under process. As soon as we get a confirmation on this transaction, we will notify you.<br>" +"In case of recharge failure your entire amount will be credited to your " +"<a href='/my-wallet'>recharge wallet</a>.<br><br> You " +"will need to <a href='/login?redirectUrl=/recharge'>login</a> to use your Wallet.<br> If you are registered on" +" Saholic.com please use your username and password to Login.<br> In case you are " +"a first time user, we have sent your login details on the emailId you gave us. " +"<br>For more information <a href='/static/recharge-faq'>click here</a>"};}else if (status.equals(RechargeOrderStatus.RECHARGE_FAILED)){DataLogger.logData(EventType.RECHARGE_PAYMENT_SUCCESSFUL, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),rechargeOrder.getRechargeType().toString());String displayReason = FailureReasonMap.get(rechargeOrder.getDescription());if (!(displayReason == null || displayReason.isEmpty())) {displayReason = "Your Payment was successful but unfortunately the recharge failed because " + displayReason + "<br>";} else {displayReason = "Your Payment was successful but unfortunately the recharge failed.<br>";}return new String[]{"red", "RECHARGE FAILED", displayReason +"Don't worry your payment is safe with us. The entire Amount has been refunded to your " +"<a href='/my-wallet'>recharge wallet</a>.<br><br> You " +"will need to <a href='/login?redirectUrl=/recharge'>login</a> to use your Wallet.<br> If you are registered on" +" Saholic.com please use your username and password to Login.<br> In case you are " +"a first time user, we have sent your login details on the emailId you gave us. " +"<br>For more information <a href='/static/recharge-faq'>click here</a>"};} else {DataLogger.logData(EventType.RECHARGE_SUCCESSFUL, getSessionId(), userinfo.getUserId(), userinfo.getEmail(),Long.toString(rechargeOrder.getOperatorId()), Long.toString(rechargeOrder.getTotalAmount()), Long.toString(rechargeOrder.getWalletAmount()),rechargeOrder.getRechargeType().toString());String fbUrl = "";String giftMessage = "Congratulations! Your device is successfully recharged.";if(rechargeOrder.getTotalAmount()>=100){if(rechargeOrder.getTotalAmount()>=500){fbUrl = "http://www.facebook.com/dialog/feed?app_id=291830044248933&link=www.saholic.com/static/giftvoucher-offer?afid=6666&picture=http://i1074.photobucket.com/albums/w407/amathur2k/logo_saholic.png&name=I just won a Rs.500 Coupon Code&caption=Win Assured Gift Coupons worth 100% on every Mobile or DTH Recharge&description=One Click Hassle Free Recharges&redirect_uri=http://saholic.com/?shared=1";giftMessage = "Congratulations! Your device is successfully recharged and you have won Gift Coupons worth Rs.500 which you can use to shop for Mobiles, Laptops, Cameras, Accessories. Please help us Spread the word by Sharing on Facebook <a href='" + fbUrl + "'><img width='155' height='35' src='/images/Post-On-Facebook-6323.jpg'></a>";}else{fbUrl = "http://www.facebook.com/dialog/feed?app_id=291830044248933&link=www.saholic.com/static/giftvoucher-offer?afid=6666&picture=http://i1074.photobucket.com/albums/w407/amathur2k/logo_saholic.png&name=I just won a Rs. " + rechargeOrder.getTotalAmount() + " Coupon Code&caption=Win Assured Gift Coupons worth 100% on every Mobile or DTH Recharge&description=One Click Hassle Free Recharges&redirect_uri=http://saholic.com/?shared=1";giftMessage = "Congratulations! Your device is successfully recharged and you have won Gift Coupons worth Rs." + rechargeOrder.getTotalAmount() + " which you can use to shop for Mobiles, Laptops, Cameras, Accessories. Please help us Spread the word by Sharing on Facebook <a href='" + fbUrl + "'><img width='155' height='35' src='/images/Post-On-Facebook-6323.jpg'></a>";}}return new String[] {"", "SUCCESS", giftMessage};}}}