Subversion Repositories SmartDukaan

Rev

Rev 8738 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6058 anupam.sin 1
package in.shop2020.serving.controllers;
2
 
3
import in.shop2020.config.ConfigException;
4
import in.shop2020.model.v1.order.RechargeOrder;
5
import in.shop2020.model.v1.order.RechargeOrderStatus;
6
import in.shop2020.model.v1.order.TransactionServiceException;
7
import in.shop2020.payments.Payment;
8
import in.shop2020.payments.PaymentException;
9
import in.shop2020.payments.PaymentStatus;
10
import in.shop2020.serving.utils.ebs.Base64;
11
import in.shop2020.serving.utils.ebs.RC4;
12
import in.shop2020.thrift.clients.PaymentClient;
13
import in.shop2020.thrift.clients.TransactionClient;
14
import in.shop2020.thrift.clients.UserClient;
15
import in.shop2020.thrift.clients.config.ConfigClient;
16
 
17
import java.io.BufferedReader;
18
import java.io.ByteArrayInputStream;
19
import java.io.IOException;
20
import java.io.InputStreamReader;
8729 anupam.sin 21
import java.util.List;
6058 anupam.sin 22
import java.util.Map;
23
import java.util.StringTokenizer;
24
import java.util.TreeMap;
25
 
26
import javax.servlet.http.HttpServletRequest;
27
 
28
import org.apache.log4j.Logger;
29
import org.apache.thrift.TException;
30
 
31
public class WalletOnlyPaymentController {
32
    private static Logger log = Logger.getLogger(Class.class);
33
 
34
    private static final String FLAG_KEY = "IsFlagged";
35
    private static final String TXN_KEY = "TransactionID";
36
    private static final String AUTH_TXN_ID = "AuthTxnId";
37
 
38
    private static String successUrl;
39
    private static String errorUrl;
40
    private static String rechargeResultUri;
41
    private RechargeOrder rechargeOrder = null;
42
 
43
    /**
44
     * The secret key used to decode RC4 encoded data.
45
     */
46
    private static String accountKey;
47
 
48
    private String redirectUrl;
49
 
50
    static{
51
        try {
52
            successUrl = ConfigClient.getClient().get("ebs_success_url");
53
            errorUrl = ConfigClient.getClient().get("ebs_error_url");
6090 anupam.sin 54
            rechargeResultUri = ConfigClient.getClient().get("recharge_success_url");
6058 anupam.sin 55
            accountKey = ConfigClient.getClient().get("ebs_secret_key");
56
        } catch (ConfigException e) {
57
            log.error("Unable to get success and error usr info from config server.");
58
        }
59
    }
60
 
61
    private Map<String, String> paymentParams = new TreeMap<String, String>();
62
 
63
    private String rechargeOrderId;
64
 
65
    private HttpServletRequest request;
66
 
67
    public String index() {
68
        StringBuffer data1 = new StringBuffer(rechargeOrderId);
69
        log.info("Received rechargeORder Id : " + data1.toString());
6070 anupam.sin 70
        //byte[] result = decodeRecvdData(data1);
6058 anupam.sin 71
 
72
        //String recvString = parseRecvdData(result);
73
        //updatePaymentParams(recvString);
74
 
75
        PaymentClient paymentServiceClient = null;
76
        TransactionClient transactionServiceClient = null;
77
        UserClient userServiceClient = null;
78
        try {
79
            paymentServiceClient = new PaymentClient();
80
            transactionServiceClient = new TransactionClient();
81
            userServiceClient = new UserClient();
82
        } catch (Exception e) {
83
            log.error("Unable to initialize one of the clients", e);
84
        }
85
 
86
 
87
        //long merchantPaymentId = Long.parseLong(paymentParams.get("MerchantRefNo"));
88
        //String gatewayPaymentId = paymentParams.get("PaymentID");
89
        //double amount = Double.parseDouble(paymentParams.get("Amount"));
90
//        String isFlagged = paymentParams.get(FLAG_KEY);
91
//        String gatewayTxnStatus = paymentParams.get("ResponseCode");
92
//        String description = paymentParams.get("ResponseMessage");
93
//        String authTxnId = paymentParams.get(TXN_KEY);
94
 
95
        Payment payment = null;
96
        Long txnId = null;
97
        try {
98
            //payment = paymentServiceClient.getClient().getPayment(merchantPaymentId);
99
            //txnId = payment.getMerchantTxnId();
100
            /**
101
             * CREATE PAYMENT
102
             */
103
            rechargeOrder = transactionServiceClient.getClient().getRechargeOrder(Long.parseLong(rechargeOrderId));
8729 anupam.sin 104
 
105
            List<Payment> payments = paymentServiceClient.getClient().getPaymentForRechargeTxnId(rechargeOrder.getTransactionId());
106
            if(payments.size() > 0) {
107
                throw new PaymentException(rechargeOrder.getId(), "Payment already exists for recharge");
108
            }
109
            Long merchantPaymentId = 0l;
8738 manish.sha 110
            if (rechargeOrder.getWalletAmount() +  rechargeOrder.getCouponAmount() != rechargeOrder.getTotalAmount()) {
8743 anupam.sin 111
                log.error("Wallet amount : " + rechargeOrder.getWalletAmount() 
112
                        + ", coupon amount : " + rechargeOrder.getCouponAmount() + " and total amount : " + rechargeOrder.getTotalAmount());
8729 anupam.sin 113
                merchantPaymentId = paymentServiceClient.getClient().createPayment(rechargeOrder.getUserId(), rechargeOrder.getTotalAmount(), 8, rechargeOrder.getTransactionId(), true);
114
                paymentServiceClient.getClient().updatePaymentDetails(merchantPaymentId, "",
115
                        "", "0", "", "", "", "", "", PaymentStatus.FAILED, "", null);
116
                transactionServiceClient.getClient().updateRechargeOrderStatus(rechargeOrder.getId(),  RechargeOrderStatus.PAYMENT_FAILED);
117
            } else {
118
                merchantPaymentId = paymentServiceClient.getClient().createPayment(rechargeOrder.getUserId(), rechargeOrder.getTotalAmount(), 8, rechargeOrder.getTransactionId(), true);
119
                //Update payment status as authorized
120
                paymentServiceClient.getClient().updatePaymentDetails(merchantPaymentId, "",
121
                        "", "0", "", "", "", "", "", PaymentStatus.SUCCESS, "", null);
122
                transactionServiceClient.getClient().updateRechargeOrderStatus(rechargeOrder.getId(),  RechargeOrderStatus.PAYMENT_SUCCESSFUL);
123
            }
6058 anupam.sin 124
            this.redirectUrl = rechargeResultUri + "?paymentId=" + merchantPaymentId;
125
        } catch (PaymentException e) {
126
            log.error("Unable to mark the payment as authorized", e);
127
        } catch (TException e) {
128
            log.error("Unable to mark the payment as authorized", e);
129
        } catch (TransactionServiceException e) {
130
            // TODO Auto-generated catch block
131
            log.error("Unable to recharge");
132
        }
133
 
134
            //DataLogger.logData(EventType.PAYMENT_FAILURE, getSessionId(), userinfo.getUserId(), userinfo.getEmail(), Long.toString(merchantPaymentId), gatewayPaymentId,
135
            //        gatewayTxnStatus, description);
136
        log.info("User will be redirected to: " + this.redirectUrl);
137
        return "index";
138
    }
139
 
140
    public String getRedirectUrl(){
141
        return this.redirectUrl;
142
    }
143
 
144
    public void setServletRequest(HttpServletRequest request) {
145
        this.request = request;
146
    }
147
 
148
    public Map<String, String> getPaymentParams() {
149
        return paymentParams;
150
    }
151
 
152
 
153
    public static String getRechargeResultUri() {
154
        return rechargeResultUri;
155
    }
156
 
157
    public String getRechargeOrderId() {
158
        return rechargeOrderId;
159
    }
160
 
161
    public void setRechargeOrderId(String rechargeOrderId) {
162
        this.rechargeOrderId = rechargeOrderId;
163
    }
164
 
165
}