Subversion Repositories SmartDukaan

Rev

Rev 8733 | Rev 11435 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
6050 anupam.sin 1
package in.shop2020.serving.controllers;
2
 
8733 anupam.sin 3
import java.util.List;
4
 
6050 anupam.sin 5
import in.shop2020.model.v1.order.RechargeOrder;
6
import in.shop2020.model.v1.user.Address;
8733 anupam.sin 7
import in.shop2020.payments.Payment;
8
import in.shop2020.payments.PaymentException;
6050 anupam.sin 9
import in.shop2020.serving.services.EbsPaymentService;
10
import in.shop2020.serving.services.HdfcPaymentService;
11
import in.shop2020.serving.services.IPaymentService;
8733 anupam.sin 12
import in.shop2020.thrift.clients.PaymentClient;
6050 anupam.sin 13
import in.shop2020.thrift.clients.TransactionClient;
14
import in.shop2020.thrift.clients.UserClient;
15
 
16
import org.apache.log4j.Logger;
17
import org.apache.struts2.convention.annotation.Result;
18
import org.apache.struts2.convention.annotation.Results;
19
 
20
 
21
@Results({
8733 anupam.sin 22
    @Result(name="recharge-redirect", type="redirectAction", params = {"actionName" , "recharge", "error", "${errorMessage}"}),
6050 anupam.sin 23
    @Result(name="recharge-pay-options-redirect", type="redirectAction", params = {"actionName" , "recharge-pay-options", "rechargeOrderId", "${rechargeOrderId}"}),
6233 anupam.sin 24
    @Result(name="ebs-pay-redirect", type="redirectAction", params = {"actionName", "/ebs-pay/${paymentId}/edit", "phone", "${phone}"}),
6050 anupam.sin 25
    @Result(name="cod-redirect", type="redirect", location="/pay-success?paymentId=${paymentId}")
26
})
27
 
28
 
29
public class RechargePaymentController extends BaseController {
30
 
31
    /**
32
     * 
33
     */
34
    private String rechargeOrderId = "";
6228 anupam.sin 35
    private String name = "";
36
    private String line1 = "";
37
    private String line2 = "";
38
    private String city = "";
39
    private String state = "";
40
    private String pincode = "";
6050 anupam.sin 41
    private String phone = "";
42
 
43
 
44
    private static final long serialVersionUID = 2079308723099307749L;
45
 
46
    private static Logger log = Logger.getLogger(Class.class);
47
 
48
    public String index() {
49
        return "index";
50
    }
51
 
52
    /******************************************************
53
     * 
54
     * 
55
     * 
56
     *****************************************************/
57
 
58
 
59
    public long getPaymentId() {
60
        return paymentId;
61
    }
62
 
63
    private String id;
64
    private long txnId = 0;
65
 
66
    private long paymentId;
8733 anupam.sin 67
    private String errorMessage;
6050 anupam.sin 68
 
69
    private String redirectURL;
70
    private RechargeOrder rechargeOrder;
71
 
72
    // GET /order/ orderid
73
    public String show() {
74
        log.info("id=" + id);
75
        htmlSnippets.put("MYACCOUNT_HEADER", pageLoader.getMyaccountHeaderHtml());
76
        htmlSnippets.put("ORDER_DETAILS", pageLoader.getOrderDetailsHtml(Long.parseLong(id), userinfo));
77
        return "show";
78
    }
79
 
80
    // POST /order/
81
    public String create(){
6228 anupam.sin 82
 
6050 anupam.sin 83
        if(rechargeOrderId == null){
8733 anupam.sin 84
            setErrorMessage("There was some problem. Please try again.");
6050 anupam.sin 85
            return "recharge-redirect";
86
        }
6091 anupam.sin 87
        try {
88
            TransactionClient tc = new TransactionClient();
89
            rechargeOrder = tc.getClient().getRechargeOrder(Long.parseLong(rechargeOrderId));
6228 anupam.sin 90
        } catch (Exception ee) {
91
            log.error("problem fetching rechargeOrder : " + rechargeOrderId);
8733 anupam.sin 92
            setErrorMessage("There was some problem. Please try again.");
6228 anupam.sin 93
            return "recharge-redirect";
94
        }
8733 anupam.sin 95
 
6228 anupam.sin 96
        try {
8733 anupam.sin 97
            PaymentClient paymentServiceClient = new PaymentClient();
98
            List<Payment> payments = paymentServiceClient.getClient().getPaymentForRechargeTxnId(rechargeOrder.getTransactionId());
99
            if(payments.size() > 0) {
100
                setErrorMessage("There was some problem. Please try again.");
101
                return "recharge-redirect";
102
            }
103
        } catch (Exception ee) {
104
            log.error("problem fetching payment for rechargeId : " + rechargeOrderId);
105
            setErrorMessage("There was some problem. Please try again.");
106
            return "recharge-redirect";
107
        }
108
 
109
        try {
6228 anupam.sin 110
            UserClient uc = new UserClient();
111
            if(!name.isEmpty() && !phone.isEmpty()) {
6091 anupam.sin 112
                Address address = new Address();
113
                address.setName(name);
114
                address.setLine1(line1);
115
                address.setLine2(line2);
116
                address.setCity(city);
117
                address.setState(state);
118
                address.setCountry("India");
119
                address.setPin(pincode);
120
                address.setPhone(phone);
6228 anupam.sin 121
 
6050 anupam.sin 122
                uc.getClient().addAddressForUser(rechargeOrder.getUserId(), address, true);
123
            }
6228 anupam.sin 124
 
125
        } catch (Exception e) {
126
            log.error("Problem saving the address", e);
127
            return "recharge-pay-options-redirect";
6050 anupam.sin 128
        }
6091 anupam.sin 129
 
6050 anupam.sin 130
        String paymentOption = request.getParameter("payment_option");
131
        log.info("Payment Option Selected: " + paymentOption);
132
        if(paymentOption == null || paymentOption.equals("")){
133
            addActionError("Please select a payment method to continue.");
134
            return "recharge-pay-options-redirect";
135
        }
136
 
6228 anupam.sin 137
        if (name.isEmpty() && !phone.isEmpty()) {
138
            //This means we only got the phone from UI.
139
            //Lets keep it.
140
        } else {
141
            //For all other cases make it empty.
142
            phone = "";
10968 amit.gupta 143
            log.info("---- phone is set to empty here");
6228 anupam.sin 144
        }
6050 anupam.sin 145
 
10968 amit.gupta 146
        log.info("phone after---- " + phone);
6228 anupam.sin 147
 
6050 anupam.sin 148
        if(paymentOption.equals(IPaymentService.HDFC_MASTERCARD_CREDIT) || paymentOption.equals(IPaymentService.HDFC_MASTERCARD_DEBIT) || 
149
                paymentOption.equals(IPaymentService.HDFC_VISA) || paymentOption.equals(IPaymentService.HDFC_VISA_ELECTRON)) {
150
            // User has selected Visa or MasterCard
151
            HdfcPaymentService hdfcPaymentService = new HdfcPaymentService();
6228 anupam.sin 152
            paymentId = hdfcPaymentService.createPayment(rechargeOrder, paymentOption, phone);
6050 anupam.sin 153
            if (paymentId == IPaymentService.PAYMENT_NOT_CREATED) {
154
                log.error("Unable to process payment through HDFC. Falling through to EBS.");
155
            } else {
156
                this.redirectURL = hdfcPaymentService.getRedirectUrl();
157
                log.info(this.redirectURL);
158
                return "success";
159
            }
160
        }
161
 
162
        if(paymentOption.equals(IPaymentService.HDFC_VISA))
163
            paymentOption = IPaymentService.EBS_VISA;
164
        else if(paymentOption.equals(IPaymentService.HDFC_MASTERCARD_DEBIT) || paymentOption.equals(IPaymentService.HDFC_MASTERCARD_CREDIT))
165
            paymentOption = IPaymentService.EBS_MASTERCARD;
166
        else if(paymentOption.equals(IPaymentService.HDFC_VISA_ELECTRON))
167
            paymentOption = null;           //Since we don't know the bank's name in this case, we'll let the user select the bank on the EBS page.
168
 
169
        EbsPaymentService ebsPaymentService = new EbsPaymentService();
170
        paymentId = ebsPaymentService.createPayment(rechargeOrder, paymentOption);
171
        if(paymentId == IPaymentService.PAYMENT_NOT_CREATED){
172
            addActionError("We are experiencing some problems. Please try later.");
173
            log.error("Unable to process payment through EBS.");
8733 anupam.sin 174
            setErrorMessage("There was some problem. Please try again.");
6215 anupam.sin 175
            return "recharge-redirect";
6050 anupam.sin 176
        } else {
177
            log.info("Successfully created payment for EBS to process. Redirecting to /ebs-pay/" + paymentId);
178
            return "ebs-pay-redirect";
179
        }           
180
    }
181
 
182
    public String getMyaccountHeaderSnippet(){
183
        return htmlSnippets.get("MYACCOUNT_HEADER");
184
    }
185
 
186
    public String getOrderDetailsSnippet(){
187
        return htmlSnippets.get("ORDER_DETAILS");
188
    }
189
 
190
    public long getTxn(){
191
        return this.txnId;
192
    }
193
 
194
    public String getRedirectURL(){
195
        return this.redirectURL;
196
    }
197
 
198
    public void setRechargeOrderId(String rechargeOrderId) {
199
        this.rechargeOrderId = rechargeOrderId;
200
    }
201
 
202
    public String getRechargeOrderId() {
203
        return rechargeOrderId;
204
    }
205
 
206
    public String getPhone() {
207
        return phone;
208
    }
209
 
210
    public void setPhone(String phone) {
10968 amit.gupta 211
    	log.info("phone---- " + phone);
6050 anupam.sin 212
        this.phone = phone;
213
    }
6228 anupam.sin 214
 
215
    public String getName() {
216
        return name;
217
    }
218
 
219
    public void setName(String name) {
10968 amit.gupta 220
    	log.info("name---- " + name);
6228 anupam.sin 221
        this.name = name;
222
    }
223
 
224
    public String getLine1() {
225
        return line1;
226
    }
227
 
228
    public void setLine1(String line1) {
229
        this.line1 = line1;
230
    }
231
 
232
    public String getLine2() {
233
        return line2;
234
    }
235
 
236
    public void setLine2(String line2) {
237
        this.line2 = line2;
238
    }
239
 
240
    public String getCity() {
241
        return city;
242
    }
243
 
244
    public void setCity(String city) {
245
        this.city = city;
246
    }
247
 
248
    public String getState() {
249
        return state;
250
    }
251
 
252
    public void setState(String state) {
253
        this.state = state;
254
    }
255
 
256
    public String getPincode() {
257
        return pincode;
258
    }
259
 
260
    public void setPincode(String pincode) {
261
        this.pincode = pincode;
262
    }
8733 anupam.sin 263
 
264
    public void setErrorMessage(String errorMessage) {
265
        this.errorMessage = errorMessage;
266
    }
267
 
268
    public String getErrorMessage() {
269
        return errorMessage;
270
    }
6050 anupam.sin 271
}