Subversion Repositories SmartDukaan

Rev

Rev 8729 | Rev 8738 | Go to most recent revision | 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;
8733 anupam.sin 110
            if (rechargeOrder.getWalletAmount() != rechargeOrder.getTotalAmount() || rechargeOrder.getWalletAmount() <= 0) {
111
                log.error("Wallet amount is " + rechargeOrder.getWalletAmount() + " and total amount is " + rechargeOrder.getTotalAmount());
8729 anupam.sin 112
                merchantPaymentId = paymentServiceClient.getClient().createPayment(rechargeOrder.getUserId(), rechargeOrder.getTotalAmount(), 8, rechargeOrder.getTransactionId(), true);
113
                paymentServiceClient.getClient().updatePaymentDetails(merchantPaymentId, "",
114
                        "", "0", "", "", "", "", "", PaymentStatus.FAILED, "", null);
115
                transactionServiceClient.getClient().updateRechargeOrderStatus(rechargeOrder.getId(),  RechargeOrderStatus.PAYMENT_FAILED);
116
            } else {
117
                merchantPaymentId = paymentServiceClient.getClient().createPayment(rechargeOrder.getUserId(), rechargeOrder.getTotalAmount(), 8, rechargeOrder.getTransactionId(), true);
118
                //Update payment status as authorized
119
                paymentServiceClient.getClient().updatePaymentDetails(merchantPaymentId, "",
120
                        "", "0", "", "", "", "", "", PaymentStatus.SUCCESS, "", null);
121
                transactionServiceClient.getClient().updateRechargeOrderStatus(rechargeOrder.getId(),  RechargeOrderStatus.PAYMENT_SUCCESSFUL);
122
            }
6058 anupam.sin 123
            this.redirectUrl = rechargeResultUri + "?paymentId=" + merchantPaymentId;
124
        } catch (PaymentException e) {
125
            log.error("Unable to mark the payment as authorized", e);
126
        } catch (TException e) {
127
            log.error("Unable to mark the payment as authorized", e);
128
        } catch (TransactionServiceException e) {
129
            // TODO Auto-generated catch block
130
            log.error("Unable to recharge");
131
        }
132
 
133
            //DataLogger.logData(EventType.PAYMENT_FAILURE, getSessionId(), userinfo.getUserId(), userinfo.getEmail(), Long.toString(merchantPaymentId), gatewayPaymentId,
134
            //        gatewayTxnStatus, description);
135
        log.info("User will be redirected to: " + this.redirectUrl);
136
        return "index";
137
    }
138
 
139
    public String getRedirectUrl(){
140
        return this.redirectUrl;
141
    }
142
 
143
    public void setServletRequest(HttpServletRequest request) {
144
        this.request = request;
145
    }
146
 
147
    public Map<String, String> getPaymentParams() {
148
        return paymentParams;
149
    }
150
 
151
 
152
    public static String getRechargeResultUri() {
153
        return rechargeResultUri;
154
    }
155
 
156
    public String getRechargeOrderId() {
157
        return rechargeOrderId;
158
    }
159
 
160
    public void setRechargeOrderId(String rechargeOrderId) {
161
        this.rechargeOrderId = rechargeOrderId;
162
    }
163
 
164
}