Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
20112 aman.kumar 1
package in.shop2020.serving.utils;
2
 
20278 aman.kumar 3
import java.util.Collections;
4
import java.util.HashMap;
5
import java.util.List;
6
import java.util.Map;
7
 
8
import org.apache.log4j.Logger;
9
import org.apache.thrift.TException;
10
import org.apache.thrift.transport.TTransportException;
11
 
12
import in.shop2020.model.v1.order.EmiScheme;
13
import in.shop2020.model.v1.order.TransactionService.Client;
14
import in.shop2020.serving.controllers.ProceedToPayController;
15
import in.shop2020.serving.services.IPaymentService;
16
import in.shop2020.thrift.clients.TransactionClient;
17
 
18
/**
19
 * class  that provides utility and 
20
 * contants related to payment
21
 */
20112 aman.kumar 22
public class PaymentUtils {
20278 aman.kumar 23
 
24
	private static List<EmiScheme> emiSchemes;
25
	private static Logger logger = Logger.getLogger(PaymentUtils.class);
26
 
27
	public static enum PAYMENT_TYPE{
28
		NB,CC,DC,WAL,COD,CAS,EMI
29
	} 
30
 
31
 
32
    @SuppressWarnings("serial")
33
	public static final Map<String, String> PAYU_NET_BANKING_CODES_MAP = Collections.unmodifiableMap(
34
    		new HashMap<String, String>(){
35
	    		{
36
	    			put("1004","AXIB");
37
	    			put("1135","CRPB");
38
	    			put("1029","FEDB");
39
	    			put("1007","HDFB");
40
	    			put("1016","ICIB");
41
	    			put("1032","SBIB");
42
	    			put("1034","SBHB");
43
	    			put("1038","SBMB");
44
	    			put("1035","SBMB");
45
	    			put("1039","SBTB");
46
	    			put("1127","CITNB");
47
	    			put("1033","SBBJB");
48
    				//Oriental Bank of Commerce
49
	    			//put("1154","");
50
	    			put("1147","CBIB");
51
	    			put("1146","YESB");
52
	    			put("1214","BOIB");
53
	    			put("1215","CUBB");
54
	    			put("1212","UNIB");
55
	    			put("1224","CABB");
56
	    			put("1210","INGB");
57
	    			put("1148","162B");
58
	    			put("1273","DLSB");
59
	    			put("1015","JAKB");
60
	    			put("1133","KRKB");
61
	    			put("1143","INDB");
62
	    			put("1216","UBIB");
63
	    			put("1213","INOB");
64
	    			put("1229","BOMB");
65
	    			put("1601","CSBN");
66
	    			put("1602","DCBB");
67
	    			put("1603","DSHB");
68
	    			put("1604","IDBB");
69
	    			put("1605","INIB");
70
	    			put("1606","KRVB");
71
	    			put("1607","PNBB");
72
	    			put("1608","SOIB");
73
	    			put("1609","SRSWT");
74
	    			put("1610","VJYB");
75
	    			put("1611","DCBCORP");
76
	    			put("1612","UBIBC");
77
	    			put("1613","CPNB");
78
	    		}
79
    		});
80
 
81
    @SuppressWarnings("serial")
82
	public static final Map<String, String> PAYU_CREDIT_CARD_CODES_MAP = Collections.unmodifiableMap(
83
    		new HashMap<String, String>(){
84
	    		{
85
	    			put("2008","CC");
86
	    			put("2017","CC");
87
	    			put("2028","AMEX");
88
	    			put("1010","DINR");
89
	    		}
90
    		});
20112 aman.kumar 91
 
20278 aman.kumar 92
    @SuppressWarnings("serial")
93
	public static final Map<String, String> PAYU_DEBIT_CARD_CODES_MAP = Collections.unmodifiableMap(
94
    		new HashMap<String, String>(){
95
	    		{
96
	    			put("2000","VISA");
97
	    			put("2018","MAST");
98
	    			put("1009","MAST");
99
	    			put("2038","RUPAY");
100
	    			put("SMAE","SMAE");
101
	    			put("1164","MAES");
102
	    		}
103
    		});
104
    public static final String PAYU_CC = "4001";
105
 
106
    public static String getPayubankCode(String paymentOptions){
107
    	String payCode = "";
108
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.CC.toString())) {
109
    		payCode = paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.CC.toString(),"");
110
			return PAYU_CREDIT_CARD_CODES_MAP.get(payCode);
111
		}
112
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.DC.toString())) {
113
    		payCode = paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.DC.toString(),"");
114
			return PAYU_DEBIT_CARD_CODES_MAP.get(payCode);
115
		}
116
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.NB.toString())) {
117
    		payCode = paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.NB.toString(),"");
118
			return PAYU_NET_BANKING_CODES_MAP.get(payCode);
119
		}
120
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.WAL.toString())) {
121
    		payCode = paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.NB.toString(),"");
122
    		if(payCode.equals(PAYU_CC));
123
    			return "payuw";
124
		}
125
 
126
    	return "";
127
    }
128
 
129
    public static String getPayugatewayCode(String paymentOptions){
130
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.CC.toString())) {
131
			return PaymentUtils.PAYMENT_TYPE.CC.toString();
132
		}
133
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.DC.toString())) {
134
			return PaymentUtils.PAYMENT_TYPE.DC.toString();
135
		}
136
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.NB.toString())) {
137
			return PaymentUtils.PAYMENT_TYPE.NB.toString();
138
		}
139
    	if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.WAL.toString())) {
140
    			return "Wallet";
141
		}
142
 
143
    	return "";
144
    }
145
 
146
	public static void populateEmiSchemes() {
147
		try {
148
			Client tClient = new TransactionClient().getClient();
149
			emiSchemes = tClient.getAvailableEmiSchemes();
150
		} catch (TTransportException e) {
151
			logger.error("Error while getting EMI schemes: ", e);
152
		} catch (TException e) {
153
			logger.error("Error while getting EMI schemes: ", e);
154
		}
155
	}
156
 
157
	public static List<EmiScheme> getEmiSchemes() {
158
		if (emiSchemes != null) {
159
			return emiSchemes;
160
		} else {
161
			populateEmiSchemes();
162
			return emiSchemes;
163
		}
164
	}
165
 
166
	public static long getGatewayId(String paymentOptions) {
167
		String payCode = "";
168
		// checking for emis
169
		if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.EMI.toString())) {
170
			payCode = paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.EMI.toString(), "");
171
			for (EmiScheme scheme : getEmiSchemes()) {
172
				if (scheme.getId() == Long.parseLong(payCode)) {
173
					return scheme.getGatewayId();
174
				}
175
			}
176
		}
177
 
178
		// As of on august 2 2016 all the debit,credit and netbanking payments
179
		// have to be redirected to payu.
180
		// so returning 13 as payment gateway
181
		// this can be re-written for other business logic
182
		if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.CC.toString())) {
183
			// payCode =
184
			// paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.CC.toString(),
185
			// "");
186
			return 5;
187
 
188
		}
189
		if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.DC.toString())) {
190
			// payCode =
191
			// paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.CC.toString(),
192
			// "");
193
			return 5;
194
		}
195
		if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.NB.toString())) {
196
			// payCode =
197
			// paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.CC.toString(),
198
			// "");
199
			return 5;
200
		}
201
		if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.WAL.toString())) {
202
			payCode = paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.WAL.toString(), "");
203
			if (PaymentUtils.PAYU_CC.equals(payCode))
204
				return 5;
205
			return 5;
206
		}
207
		if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.CAS.toString())) {
208
			return 18;
209
		}
210
		if (paymentOptions.startsWith(PaymentUtils.PAYMENT_TYPE.COD.toString())) {
211
			payCode = paymentOptions.replace(PaymentUtils.PAYMENT_TYPE.COD.toString(), "");
212
			if (payCode.equals(IPaymentService.COD)) {
213
				return 4;
214
			}
215
			if (payCode.equals(IPaymentService.COUPON)) {
216
				return 17;
217
			}
218
		}
219
 
220
		return 0;
221
	}
222
 
223
 
20112 aman.kumar 224
}