Commit e938a3d0 authored by steurwadkar's avatar steurwadkar

F17ABAS001 GST API integration wizard source code commit

git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@165102 ce508802-f39f-4f6c-b175-0d175dae99d5
parent da685ed9
...@@ -260,7 +260,16 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -260,7 +260,16 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
break; break;
} }
} }
closeResources(rs, pstmt); if(rs != null)
{
rs.close();
rs = null;
}
if(pstmt != null)
{
pstmt.close();
pstmt = null;
}
System.out.println("BASE_API_URL["+BASE_API_URL+"]"); System.out.println("BASE_API_URL["+BASE_API_URL+"]");
System.out.println("AUTH_TOKEN_URL["+AUTH_TOKEN_URL+"]"); System.out.println("AUTH_TOKEN_URL["+AUTH_TOKEN_URL+"]");
...@@ -349,6 +358,8 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -349,6 +358,8 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
byte[] authSEK = null; byte[] authSEK = null;
String loginCode = "", chgTerm = "", callStatus = "", responseId = "", responseJsonStr= "", recType = ""; String loginCode = "", chgTerm = "", callStatus = "", responseId = "", responseJsonStr= "", recType = "";
String signDataXML = "", summaryDataJsonStr = ""; String signDataXML = "", summaryDataJsonStr = "";
ArrayList<HashMap<String,String>> getGstrDataList = new ArrayList<HashMap<String,String>>();
ArrayList<String> byPassSectionList = new ArrayList<String>();
System.out.println(" -------- Inside itemchange case 2222222 ------------ "); System.out.println(" -------- Inside itemchange case 2222222 ------------ ");
if( currentColumn.trim().equalsIgnoreCase( "itm_default" )) if( currentColumn.trim().equalsIgnoreCase( "itm_default" ))
...@@ -397,6 +408,45 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -397,6 +408,45 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
} }
} }
if("GETINV".equalsIgnoreCase(action))
{
sql = " SELECT TRAN_ID, RESPONSE_ID, CALL_DATE,CALL_TYPE"
+ " FROM API_CALL_LOG"
+ " WHERE SITE_CODE = ? AND REC_TYPE = ? AND PRD_CODE = ?"
+ " AND CALL_STATUS = ? AND CALL_TYPE LIKE '%GET%' AND RESPONSE_ID IS NOT NULL"
+ " ORDER BY CALL_DATE DESC";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, siteCode);
pstmt.setString(2, recType);
pstmt.setString(3, periodCode);
pstmt.setString(4, "0");
rs = pstmt.executeQuery();
while(rs.next())
{
HashMap<String,String> tempHMap = new HashMap<String,String>();
tempHMap.put("api_tranid", rs.getString("TRAN_ID"));
tempHMap.put("token", rs.getString("RESPONSE_ID"));
String tempStr = rs.getString("CALL_TYPE");
String section = tempStr.substring(tempStr.indexOf("_")+1);
tempHMap.put("section", section);
byPassSectionList.add(section);
getGstrDataList.add(tempHMap);
}
if(rs!=null)
{
rs.close();
rs = null;
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
}
transactionId = UUID.randomUUID().toString().replaceAll("-", ""); transactionId = UUID.randomUUID().toString().replaceAll("-", "");
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstinNo; gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstinNo;
...@@ -511,7 +561,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -511,7 +561,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
{ {
retXML += summaryDataJsonStr; retXML += summaryDataJsonStr;
} }
retXML += downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK); retXML += downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK, byPassSectionList);
} }
else if("FILE".equalsIgnoreCase(action)) else if("FILE".equalsIgnoreCase(action))
{ {
...@@ -527,7 +577,61 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -527,7 +577,61 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
} }
else if("GETINV".equalsIgnoreCase(action)) else if("GETINV".equalsIgnoreCase(action))
{ {
retXML += downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK); if(getGstrDataList.size() > 0)
{
for(HashMap<String,String> eachDataHamp : getGstrDataList)
{
String sectionName = eachDataHamp.get("section");
JSONObject dataJSONObject = new JSONObject();
dataJSONObject.put("token", eachDataHamp.get("token"));
dataJSONObject.put("est", "");
dataJSONObject.put("api_tranid", eachDataHamp.get("api_tranid"));
String retDataXML = getDataFromFileServer(gstinNo, recType, periodCode, authToken, userName, stateCode, authSEK, dataJSONObject, sectionName, xtraParams);
if("B2B".equalsIgnoreCase(sectionName))
{
retXML += "<b2b_invoices>" + retDataXML + "</b2b_invoices>";
}
else if("B2CL".equalsIgnoreCase(action))
{
retXML += "<b2cl_invoices>" + retDataXML + "</b2cl_invoices>";
}
else if("B2CS".equalsIgnoreCase(action))
{
retXML += "<b2cs_invoices>" + retDataXML + "</b2cs_invoices>";
}
else if("CDNR".equalsIgnoreCase(action))
{
retXML += "<cdnr_data>" + retDataXML + "</cdnr_data>";
}
else if("CDNUR".equalsIgnoreCase(action))
{
retXML += "<cdnur_data>" + retDataXML + "</cdnur_data>";
}
else if("AT".equalsIgnoreCase(action))
{
retXML += "<at_data>" + retDataXML +"</at_data>";
}
else if("TXP".equalsIgnoreCase(action))
{
retXML += "<txp_data>" + retDataXML + "</txp_data>";
}
else if("NIL".equalsIgnoreCase(action))
{
retXML += "<nil_data>" + retDataXML + "</nil_data>";
}
else if("EXP".equalsIgnoreCase(action))
{
retXML += "<exp_data>" + retDataXML + "</exp_data>";
}
else if("HSNSUM".equalsIgnoreCase(action))
{
retXML += "<hsnsum_data>" + retDataXML + "</hsnsum_data>";
}
}
}
retXML += downloadGstr1Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK, byPassSectionList);
} }
} }
if("GSTR2".equalsIgnoreCase(returnType)) if("GSTR2".equalsIgnoreCase(returnType))
...@@ -543,7 +647,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -543,7 +647,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
{ {
retXML += summaryDataJsonStr; retXML += summaryDataJsonStr;
} }
retXML += downloadGstr2Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK); retXML += downloadGstr2Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK, byPassSectionList);
} }
else if("FILE".equalsIgnoreCase(action)) else if("FILE".equalsIgnoreCase(action))
{ {
...@@ -559,7 +663,65 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -559,7 +663,65 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
} }
else if("GETINV".equalsIgnoreCase(action)) else if("GETINV".equalsIgnoreCase(action))
{ {
retXML += downloadGstr2Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK); if(getGstrDataList.size() > 0)
{
for(HashMap<String,String> eachDataHamp : getGstrDataList)
{
String sectionName = eachDataHamp.get("section");
JSONObject dataJSONObject = new JSONObject();
dataJSONObject.put("token", eachDataHamp.get("token"));
dataJSONObject.put("est", "");
dataJSONObject.put("api_tranid", eachDataHamp.get("api_tranid"));
String retDataXML = getDataFromFileServer(gstinNo, recType, periodCode, authToken, userName, stateCode, authSEK, dataJSONObject, sectionName, xtraParams);
if("B2B".equalsIgnoreCase(sectionName))
{
retXML += "<b2b_invoices>" + retDataXML + "</b2b_invoices>";
}
else if("IMPG".equalsIgnoreCase(action))
{
retXML += "<impg_data>" + retDataXML + "</impg_data>";
}
else if("IMPS".equalsIgnoreCase(action))
{
retXML += "<imps_data>" + retDataXML + "</imps_data>";
}
else if("CDN".equalsIgnoreCase(action))
{
retXML += "<cdnr_data>" + retDataXML + "</cdnr_data>";
}
else if("CDNUR".equalsIgnoreCase(action))
{
retXML += "<cdnur_data>" + retDataXML + "</cdnur_data>";
}
else if("NIL".equalsIgnoreCase(action))
{
retXML += "<nil_data>" + retDataXML + "</nil_data>";
}
else if("TXLI".equalsIgnoreCase(action))
{
retXML += "<txli_data>" + retDataXML + "</txli_data>";
}
else if("TXP".equalsIgnoreCase(action))
{
retXML += "<txp_data>" + retDataXML + "</txp_data>";
}
else if("HSNSUM".equalsIgnoreCase(action))
{
retXML += "<hsnsum_data>" + retDataXML + "</hsnsum_data>";
}
else if("B2BUR".equalsIgnoreCase(action))
{
retXML += "<b2bur_data>" + retDataXML + "</b2bur_data>";
}
else if("ITCRVSL".equalsIgnoreCase(action))
{
retXML += "<itcrvsl_data>" + retDataXML + "</itcrvsl_data>";
}
}
}
retXML += downloadGstr2Data(gstinNo, periodCode, authToken, userName, stateCode, appKeyEncryptedAndCoded, xtraParams, authSEK, byPassSectionList);
} }
} }
if("GSTR3B".equalsIgnoreCase(returnType)) if("GSTR3B".equalsIgnoreCase(returnType))
...@@ -1658,7 +1820,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -1658,7 +1820,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
System.out.println("final retResonseXML ["+retResponseXML+"]"); System.out.println("final retResonseXML ["+retResponseXML+"]");
return retResponseXML; return retResponseXML;
} }
private String downloadGstr1Data (String gstinNo, String periodCode, String authToken, String userName, String stateCode, String appKeyEncryptedAndCoded, String xtraParams, byte[] authSek) throws ITMException private String downloadGstr1Data (String gstinNo, String periodCode, String authToken, String userName, String stateCode, String appKeyEncryptedAndCoded, String xtraParams, byte[] authSek, ArrayList<String> byPassSectionList) throws ITMException
{ {
StringBuffer retStringBuff = new StringBuffer(); StringBuffer retStringBuff = new StringBuffer();
String[] gstr1Section = {"B2B","B2CL","B2CS","CDNR","AT","TXP","NIL","EXP","HSNSUM","CDNUR"}; String[] gstr1Section = {"B2B","B2CL","B2CS","CDNR","AT","TXP","NIL","EXP","HSNSUM","CDNUR"};
...@@ -1673,171 +1835,174 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -1673,171 +1835,174 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
for(String action : gstr1Section) for(String action : gstr1Section)
{ {
long timeStamp = new Timestamp().getDateTime(); if(byPassSectionList != null && !byPassSectionList.contains(action))
System.out.println("calling for ["+action+"]");
String transactionId = UUID.randomUUID().toString().replaceAll("-", "");
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstinNo;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpRequest getDataReq = Unirest.get(String.format("%s%s", BASE_API_URL, GSTR1_URL))
.queryString("action", action)
.queryString("gstin", gstinNo)
.queryString("ret_period", periodCode)
.header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
.header("clientid", clientId)
.header("client-secret", clientSecret)
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstinNo)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.getHttpRequest();
System.out.println("get GSTR1 ["+action+"] invoices url["+getDataReq.getUrl()+"]");
System.out.println("get GSTR1 ["+action+"] invoices method["+getDataReq.getHttpMethod()+"]");
System.out.println("get GSTR1 ["+action+"] invoices request header["+getDataReq.getHeaders()+"]");
HttpResponse<JsonNode> getDataResp = getDataReq.asJson();
System.out.println("getDataResp.getStatus()["+getDataResp.getStatus()+"]");
if(getDataResp.getStatus() == 200)
{ {
JSONObject getDataRespObj = getDataResp.getBody().getObject(); long timeStamp = new Timestamp().getDateTime();
if(getDataRespObj.has("data") && getDataRespObj.has("rek")) System.out.println("calling for ["+action+"]");
{ String transactionId = UUID.randomUUID().toString().replaceAll("-", "");
callStatus = "1";
String getdata = getDataRespObj.getString("data"); gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstinNo;
String getrek = getDataRespObj.getString("rek"); gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
byte[] getapiEK = aesEncryption.decrypt(getrek, authSek); HttpRequest getDataReq = Unirest.get(String.format("%s%s", BASE_API_URL, GSTR1_URL))
.queryString("action", action)
String getrespJsoninBase64 = new String(aesEncryption.decrypt(getdata, getapiEK)); .queryString("gstin", gstinNo)
.queryString("ret_period", periodCode)
byte[] getrespJsonInBytes = aesEncryption.decodeBase64StringTOByte(getrespJsoninBase64); .header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
String getjsonData = new String(getrespJsonInBytes); .header("clientid", clientId)
System.out.println("json response["+getjsonData+"] for ["+action+"]"); .header("client-secret", clientSecret)
.header("ip-usr", ipAddress)
JSONObject getJsonDataJsonObj = new JSONObject(getjsonData); .header("username", userName)
.header("auth-token", authToken)
if(getJsonDataJsonObj.has("est") && getJsonDataJsonObj.has("token")) .header("app_key", appKeyEncryptedAndCoded)
{ .header("txn", transactionId)
dataXML = getDataFromFileServer(gstinNo, "1", periodCode, authToken, userName, stateCode, authSek, getJsonDataJsonObj, action, xtraParams); .header("ret_period", periodCode)
} .header("gstin", gstinNo)
else .header("X-Asp-Auth-Token", gspAuthString)
{ .header("X-Asp-Auth-Signature", gspAuthSignature)
dataXML = XML.toString(getJsonDataJsonObj); .getHttpRequest();
//writeDatatoJsonFile(getJsonDataJsonObj.toString(), action);
} System.out.println("get GSTR1 ["+action+"] invoices url["+getDataReq.getUrl()+"]");
System.out.println("get GSTR1 ["+action+"] invoices method["+getDataReq.getHttpMethod()+"]");
System.out.println("get GSTR1 ["+action+"] invoices request header["+getDataReq.getHeaders()+"]");
if("B2B".equalsIgnoreCase(action))
{ HttpResponse<JsonNode> getDataResp = getDataReq.asJson();
retStringBuff.append("<b2b_invoices>");
retStringBuff.append(dataXML); System.out.println("getDataResp.getStatus()["+getDataResp.getStatus()+"]");
retStringBuff.append("</b2b_invoices>");
} if(getDataResp.getStatus() == 200)
else if("B2CL".equalsIgnoreCase(action)) {
{ JSONObject getDataRespObj = getDataResp.getBody().getObject();
retStringBuff.append("<b2cl_invoices>"); if(getDataRespObj.has("data") && getDataRespObj.has("rek"))
retStringBuff.append(dataXML); {
retStringBuff.append("</b2cl_invoices>"); String getdata = getDataRespObj.getString("data");
} String getrek = getDataRespObj.getString("rek");
else if("B2CS".equalsIgnoreCase(action))
{ byte[] getapiEK = aesEncryption.decrypt(getrek, authSek);
retStringBuff.append("<b2cs_invoices>");
retStringBuff.append(dataXML); String getrespJsoninBase64 = new String(aesEncryption.decrypt(getdata, getapiEK));
retStringBuff.append("</b2cs_invoices>");
} byte[] getrespJsonInBytes = aesEncryption.decodeBase64StringTOByte(getrespJsoninBase64);
else if("CDNR".equalsIgnoreCase(action))
{ String getjsonData = new String(getrespJsonInBytes);
retStringBuff.append("<cdnr_data>"); System.out.println("json response["+getjsonData+"] for ["+action+"]");
retStringBuff.append(dataXML);
retStringBuff.append("</cdnr_data>"); JSONObject getJsonDataJsonObj = new JSONObject(getjsonData);
}
else if("CDNUR".equalsIgnoreCase(action)) if(getJsonDataJsonObj.has("est") && getJsonDataJsonObj.has("token"))
{ {
retStringBuff.append("<cdnur_data>"); responseId = getJsonDataJsonObj.getString("token");
retStringBuff.append(dataXML); callStatus = "0";
retStringBuff.append("</cdnur_data>"); dataXML = getDataFromFileServer(gstinNo, "1", periodCode, authToken, userName, stateCode, authSek, getJsonDataJsonObj, action, xtraParams);
} }
else if("AT".equalsIgnoreCase(action)) else
{ {
retStringBuff.append("<at_data>"); callStatus = "1";
retStringBuff.append(dataXML); dataXML = XML.toString(getJsonDataJsonObj);
retStringBuff.append("</at_data>"); }
}
else if("TXP".equalsIgnoreCase(action)) if("B2B".equalsIgnoreCase(action))
{ {
retStringBuff.append("<txp_data>"); retStringBuff.append("<b2b_invoices>");
retStringBuff.append(dataXML); retStringBuff.append(dataXML);
retStringBuff.append("</txp_data>"); retStringBuff.append("</b2b_invoices>");
} }
else if("NIL".equalsIgnoreCase(action)) else if("B2CL".equalsIgnoreCase(action))
{ {
retStringBuff.append("<nil_data>"); retStringBuff.append("<b2cl_invoices>");
retStringBuff.append(dataXML); retStringBuff.append(dataXML);
retStringBuff.append("</nil_data>"); retStringBuff.append("</b2cl_invoices>");
} }
else if("EXP".equalsIgnoreCase(action)) else if("B2CS".equalsIgnoreCase(action))
{ {
retStringBuff.append("<exp_data>"); retStringBuff.append("<b2cs_invoices>");
retStringBuff.append(dataXML); retStringBuff.append(dataXML);
retStringBuff.append("</exp_data>"); retStringBuff.append("</b2cs_invoices>");
} }
else if("HSNSUM".equalsIgnoreCase(action)) else if("CDNR".equalsIgnoreCase(action))
{ {
retStringBuff.append("<hsnsum_data>"); retStringBuff.append("<cdnr_data>");
retStringBuff.append(dataXML); retStringBuff.append(dataXML);
retStringBuff.append("</hsnsum_data>"); retStringBuff.append("</cdnr_data>");
} }
else if("CDNUR".equalsIgnoreCase(action))
{
retStringBuff.append("<cdnur_data>");
retStringBuff.append(dataXML);
retStringBuff.append("</cdnur_data>");
}
else if("AT".equalsIgnoreCase(action))
{
retStringBuff.append("<at_data>");
retStringBuff.append(dataXML);
retStringBuff.append("</at_data>");
}
else if("TXP".equalsIgnoreCase(action))
{
retStringBuff.append("<txp_data>");
retStringBuff.append(dataXML);
retStringBuff.append("</txp_data>");
}
else if("NIL".equalsIgnoreCase(action))
{
retStringBuff.append("<nil_data>");
retStringBuff.append(dataXML);
retStringBuff.append("</nil_data>");
}
else if("EXP".equalsIgnoreCase(action))
{
retStringBuff.append("<exp_data>");
retStringBuff.append(dataXML);
retStringBuff.append("</exp_data>");
}
else if("HSNSUM".equalsIgnoreCase(action))
{
retStringBuff.append("<hsnsum_data>");
retStringBuff.append(dataXML);
retStringBuff.append("</hsnsum_data>");
}
}
else
{
callStatus = "2";
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
System.out.println("errorJSON["+errorJSON+"]");
}
} }
else if(getDataResp.getStatus() == 500)
{
callStatus = "2";
String errMsg = "Message : Error occurred at GSTN server \nResponse code : "+getDataResp.getStatus();
responseJsonStr = errMsg;
System.out.println("errMsg["+errMsg+"]");
}
else else
{ {
callStatus = "2"; callStatus = "2";
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error"); JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString(); responseJsonStr = errorJSON.toString();
System.out.println("errorJSON["+errorJSON+"]"); System.out.println("errorJSON["+errorJSON+"]");
} }
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("GET_"+action);
apiCallData.setRecType("1");
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
apiCallData.setResponseId(responseId);
apiCallData.setResponseJsonStr(responseJsonStr);
apiCallData.setChgUser(loginCode);
apiCallData.setChgDate(new Date());
apiCallData.setChgTerm(chgTerm);
gstCommonUtil.updateAPICallLogHistory(apiCallData, null);
} }
else if(getDataResp.getStatus() == 500)
{
callStatus = "2";
String errMsg = "Message : Error occurred at GSTN server \nResponse code : "+getDataResp.getStatus();
responseJsonStr = errMsg;
System.out.println("errMsg["+errMsg+"]");
}
else
{
callStatus = "2";
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
System.out.println("errorJSON["+errorJSON+"]");
}
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("GET_"+action);
apiCallData.setRecType("1");
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
apiCallData.setResponseId(responseId);
apiCallData.setResponseJsonStr(responseJsonStr);
apiCallData.setChgUser(loginCode);
apiCallData.setChgDate(new Date());
apiCallData.setChgTerm(chgTerm);
gstCommonUtil.updateAPICallLogHistory(apiCallData, null);
} }
} }
catch (Exception e) catch (Exception e)
...@@ -1849,7 +2014,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -1849,7 +2014,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
System.out.println("final retStringBuff.toSting["+retStringBuff.toString()+"]"); System.out.println("final retStringBuff.toSting["+retStringBuff.toString()+"]");
return retStringBuff.toString(); return retStringBuff.toString();
} }
private String downloadGstr2Data (String gstinNo, String periodCode, String authToken, String userName, String stateCode, String appKeyEncryptedAndCoded, String xtraParams, byte[] authSek) throws ITMException private String downloadGstr2Data (String gstinNo, String periodCode, String authToken, String userName, String stateCode, String appKeyEncryptedAndCoded, String xtraParams, byte[] authSek, ArrayList<String> byPassSectionList) throws ITMException
{ {
StringBuffer retStringBuff = new StringBuffer(); StringBuffer retStringBuff = new StringBuffer();
String[] gstr2Section = {"B2B","IMPG","IMPS","CDN","NIL","TXLI","TXP","HSNSUM","B2BUR","ITCRVSL","CDNUR"}; String[] gstr2Section = {"B2B","IMPG","IMPS","CDN","NIL","TXLI","TXP","HSNSUM","B2BUR","ITCRVSL","CDNUR"};
...@@ -1864,175 +2029,178 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -1864,175 +2029,178 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
for(String action : gstr2Section) for(String action : gstr2Section)
{ {
long timeStamp = new Timestamp().getDateTime(); if(byPassSectionList != null && !byPassSectionList.contains(action))
System.out.println("calling for ["+action+"]");
String transactionId = UUID.randomUUID().toString().replaceAll("-", "");
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstinNo;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpRequest getDataReq = Unirest.get(String.format("%s%s", BASE_API_URL,GSTR2_URL))
.queryString("action", action)
.queryString("gstin", gstinNo)
.queryString("ret_period", periodCode)
.header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
.header("clientid", clientId)
.header("client-secret", clientSecret)
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("app_key", appKeyEncryptedAndCoded)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstinNo)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.getHttpRequest();
System.out.println("get GSTR2 ["+action+"] invoices url["+getDataReq.getUrl()+"]");
System.out.println("get GSTR2 ["+action+"] invoices method["+getDataReq.getHttpMethod()+"]");
System.out.println("get GSTR2 ["+action+"] invoices request header["+getDataReq.getHeaders()+"]");
HttpResponse<JsonNode> getDataResp = getDataReq.asJson();
System.out.println("getDataResp.getStatus()["+getDataResp.getStatus()+"]");
if(getDataResp.getStatus() == 200)
{ {
JSONObject getDataRespObj = getDataResp.getBody().getObject(); long timeStamp = new Timestamp().getDateTime();
if(getDataRespObj.has("data") && getDataRespObj.has("rek")) System.out.println("calling for ["+action+"]");
{ String transactionId = UUID.randomUUID().toString().replaceAll("-", "");
callStatus = "1";
String getdata = getDataRespObj.getString("data"); gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstinNo;
String getrek = getDataRespObj.getString("rek"); gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
byte[] getapiEK = aesEncryption.decrypt(getrek, authSek); HttpRequest getDataReq = Unirest.get(String.format("%s%s", BASE_API_URL,GSTR2_URL))
.queryString("action", action)
String getrespJsoninBase64 = new String(aesEncryption.decrypt(getdata, getapiEK)); .queryString("gstin", gstinNo)
.queryString("ret_period", periodCode)
byte[] getrespJsonInBytes = aesEncryption.decodeBase64StringTOByte(getrespJsoninBase64); .header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
String getjsonData = new String(getrespJsonInBytes); .header("clientid", clientId)
System.out.println("json response["+getjsonData+"] for ["+action+"]"); .header("client-secret", clientSecret)
.header("ip-usr", ipAddress)
if("B2B".equalsIgnoreCase(action)) .header("username", userName)
{ .header("auth-token", authToken)
String b2bXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); .header("app_key", appKeyEncryptedAndCoded)
retStringBuff.append("<b2b_invoices>"); .header("txn", transactionId)
retStringBuff.append(b2bXML); .header("ret_period", periodCode)
retStringBuff.append("</b2b_invoices>"); .header("gstin", gstinNo)
} .header("X-Asp-Auth-Token", gspAuthString)
else if("IMPG".equalsIgnoreCase(action)) .header("X-Asp-Auth-Signature", gspAuthSignature)
{ .getHttpRequest();
String impgXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<impg_data>"); System.out.println("get GSTR2 ["+action+"] invoices url["+getDataReq.getUrl()+"]");
retStringBuff.append(impgXML); System.out.println("get GSTR2 ["+action+"] invoices method["+getDataReq.getHttpMethod()+"]");
retStringBuff.append("</impg_data>"); System.out.println("get GSTR2 ["+action+"] invoices request header["+getDataReq.getHeaders()+"]");
}
else if("IMPS".equalsIgnoreCase(action)) HttpResponse<JsonNode> getDataResp = getDataReq.asJson();
{
String impsXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); System.out.println("getDataResp.getStatus()["+getDataResp.getStatus()+"]");
retStringBuff.append("<imps_data>");
retStringBuff.append(impsXML); if(getDataResp.getStatus() == 200)
retStringBuff.append("</imps_data>"); {
} JSONObject getDataRespObj = getDataResp.getBody().getObject();
else if("CDN".equalsIgnoreCase(action)) if(getDataRespObj.has("data") && getDataRespObj.has("rek"))
{ {
String cdnrXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); callStatus = "1";
retStringBuff.append("<cdnr_data>"); String getdata = getDataRespObj.getString("data");
retStringBuff.append(cdnrXML); String getrek = getDataRespObj.getString("rek");
retStringBuff.append("</cdnr_data>");
} byte[] getapiEK = aesEncryption.decrypt(getrek, authSek);
else if("CDNUR".equalsIgnoreCase(action))
{ String getrespJsoninBase64 = new String(aesEncryption.decrypt(getdata, getapiEK));
String cdnurXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<cdnur_data>"); byte[] getrespJsonInBytes = aesEncryption.decodeBase64StringTOByte(getrespJsoninBase64);
retStringBuff.append(cdnurXML);
retStringBuff.append("</cdnur_data>"); String getjsonData = new String(getrespJsonInBytes);
} System.out.println("json response["+getjsonData+"] for ["+action+"]");
else if("NIL".equalsIgnoreCase(action))
{ if("B2B".equalsIgnoreCase(action))
String nilData = XML.toString(new JSONObject(new String(getrespJsonInBytes))); {
retStringBuff.append("<nil_data>"); String b2bXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append(nilData); retStringBuff.append("<b2b_invoices>");
retStringBuff.append("</nil_data>"); retStringBuff.append(b2bXML);
} retStringBuff.append("</b2b_invoices>");
else if("TXLI".equalsIgnoreCase(action)) }
{ else if("IMPG".equalsIgnoreCase(action))
String taxLiabXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); {
retStringBuff.append("<txli_data>"); String impgXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append(taxLiabXML); retStringBuff.append("<impg_data>");
retStringBuff.append("</txli_data>"); retStringBuff.append(impgXML);
} retStringBuff.append("</impg_data>");
else if("TXP".equalsIgnoreCase(action)) }
{ else if("IMPS".equalsIgnoreCase(action))
String taxPaidXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); {
retStringBuff.append("<txp_data>"); String impsXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append(taxPaidXML); retStringBuff.append("<imps_data>");
retStringBuff.append("</txp_data>"); retStringBuff.append(impsXML);
} retStringBuff.append("</imps_data>");
else if("HSNSUM".equalsIgnoreCase(action)) }
{ else if("CDN".equalsIgnoreCase(action))
String hsnSumXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); {
retStringBuff.append("<hsnsum_data>"); String cdnrXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append(hsnSumXML); retStringBuff.append("<cdnr_data>");
retStringBuff.append("</hsnsum_data>"); retStringBuff.append(cdnrXML);
} retStringBuff.append("</cdnr_data>");
else if("B2BUR".equalsIgnoreCase(action)) }
{ else if("CDNUR".equalsIgnoreCase(action))
String b2burXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); {
retStringBuff.append("<b2bur_data>"); String cdnurXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append(b2burXML); retStringBuff.append("<cdnur_data>");
retStringBuff.append("</b2bur_data>"); retStringBuff.append(cdnurXML);
} retStringBuff.append("</cdnur_data>");
else if("ITCRVSL".equalsIgnoreCase(action)) }
{ else if("NIL".equalsIgnoreCase(action))
String itcRverslXML = XML.toString(new JSONObject(new String(getrespJsonInBytes))); {
retStringBuff.append("<itcrvsl_data>"); String nilData = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append(itcRverslXML); retStringBuff.append("<nil_data>");
retStringBuff.append("</itcrvsl_data>"); retStringBuff.append(nilData);
} retStringBuff.append("</nil_data>");
}
else if("TXLI".equalsIgnoreCase(action))
{
String taxLiabXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<txli_data>");
retStringBuff.append(taxLiabXML);
retStringBuff.append("</txli_data>");
}
else if("TXP".equalsIgnoreCase(action))
{
String taxPaidXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<txp_data>");
retStringBuff.append(taxPaidXML);
retStringBuff.append("</txp_data>");
}
else if("HSNSUM".equalsIgnoreCase(action))
{
String hsnSumXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<hsnsum_data>");
retStringBuff.append(hsnSumXML);
retStringBuff.append("</hsnsum_data>");
}
else if("B2BUR".equalsIgnoreCase(action))
{
String b2burXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<b2bur_data>");
retStringBuff.append(b2burXML);
retStringBuff.append("</b2bur_data>");
}
else if("ITCRVSL".equalsIgnoreCase(action))
{
String itcRverslXML = XML.toString(new JSONObject(new String(getrespJsonInBytes)));
retStringBuff.append("<itcrvsl_data>");
retStringBuff.append(itcRverslXML);
retStringBuff.append("</itcrvsl_data>");
}
}
else
{
callStatus = "2";
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
System.out.println("errorJSON["+errorJSON+"]");
}
} }
else if(getDataResp.getStatus() == 500)
{
callStatus = "2";
String errMsg = "Message : Error occurred at GSTN server \nResponse code : "+getDataResp.getStatus();
responseJsonStr = errMsg;
System.out.println("errMsg["+errMsg+"]");
}
else else
{ {
callStatus = "2"; callStatus = "2";
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error"); JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString(); responseJsonStr = errorJSON.toString();
System.out.println("errorJSON["+errorJSON+"]"); System.out.println("errorJSON["+errorJSON+"]");
} }
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("GET_"+action);
apiCallData.setRecType("2");
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
apiCallData.setResponseId(responseId);
apiCallData.setResponseJsonStr(responseJsonStr);
apiCallData.setChgUser(loginCode);
apiCallData.setChgDate(new Date());
apiCallData.setChgTerm(chgTerm);
gstCommonUtil.updateAPICallLogHistory(apiCallData, null);
} }
else if(getDataResp.getStatus() == 500)
{
callStatus = "2";
String errMsg = "Message : Error occurred at GSTN server \nResponse code : "+getDataResp.getStatus();
responseJsonStr = errMsg;
System.out.println("errMsg["+errMsg+"]");
}
else
{
callStatus = "2";
JSONObject errorJSON = getDataResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
System.out.println("errorJSON["+errorJSON+"]");
}
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("GET_"+action);
apiCallData.setRecType("2");
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
apiCallData.setResponseId(responseId);
apiCallData.setResponseJsonStr(responseJsonStr);
apiCallData.setChgUser(loginCode);
apiCallData.setChgDate(new Date());
apiCallData.setChgTerm(chgTerm);
gstCommonUtil.updateAPICallLogHistory(apiCallData, null);
} }
} }
catch (Exception e) catch (Exception e)
...@@ -2867,6 +3035,13 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -2867,6 +3035,13 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
String transactionId = "", retFolderPath = "", gspAuthString = "", gspAuthSignature = ""; String transactionId = "", retFolderPath = "", gspAuthString = "", gspAuthSignature = "";
String siteCode = "", loginCode = "", chgTerm = "", responseId = "", responseJsonStr = "", callStatus = ""; String siteCode = "", loginCode = "", chgTerm = "", responseId = "", responseJsonStr = "", callStatus = "";
String sep = File.separator; String sep = File.separator;
String sql = "", apiTranId = "";
PreparedStatement pstmt = null;
Connection conn = null;
int updateCnt = 0;
boolean isError = false;
try try
{ {
siteCode = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginSiteCode"); siteCode = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginSiteCode");
...@@ -2951,7 +3126,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -2951,7 +3126,7 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
if(tempJsonObj.has("ul")) if(tempJsonObj.has("ul"))
{ {
String fileUrl = tempJsonObj.getString("ul"); String fileUrl = tempJsonObj.getString("ul");
fileUrl = BASE_API_URL + fileUrl; fileUrl = FILEDET_URL + fileUrl;
System.out.println("fileUrl["+fileUrl+"]"); System.out.println("fileUrl["+fileUrl+"]");
URL url = new URL(fileUrl); URL url = new URL(fileUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
...@@ -3014,8 +3189,28 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -3014,8 +3189,28 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
tarInput.close(); tarInput.close();
} }
} }
}
if(dataJSONObject.has("api_tranid"))
{
conn = getConnection();
apiTranId = dataJSONObject.getString("api_tranid");
sql = "UPDATE API_CALL_LOG SET CALL_STATUS = ? WHERE TRAN_ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "1");
pstmt.setString(2, apiTranId);
updateCnt = pstmt.executeUpdate();
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
//retString = getDataXMLFromJsonFile(sectionName); System.out.println("api call log update["+updateCnt+"] apiTranId["+apiTranId+"]");
} }
} }
else else
...@@ -3050,6 +3245,28 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -3050,6 +3245,28 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
retString = "<data_error><![CDATA["+errMsg+"]]></data_error>"; retString = "<data_error><![CDATA["+errMsg+"]]></data_error>";
} }
} }
if(dataJSONObject.has("api_tranid"))
{
conn = getConnection();
apiTranId = dataJSONObject.getString("api_tranid");
sql = "UPDATE API_CALL_LOG SET CALL_STATUS = ? WHERE TRAN_ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "1");
pstmt.setString(2, apiTranId);
updateCnt = pstmt.executeUpdate();
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
System.out.println("api call log update["+updateCnt+"] apiTranId["+apiTranId+"]");
}
} }
APICallData apiCallData = new APICallData(); APICallData apiCallData = new APICallData();
...@@ -3071,10 +3288,47 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi ...@@ -3071,10 +3288,47 @@ public class GSTDataSubmitWizEJB extends ValidatorEJB implements GSTDataSubmitWi
} }
catch(Exception e) catch(Exception e)
{ {
isError = true;
System.out.println("GSTCommonUtil.getDataFromFileServer()["+e.getMessage()+"]"); System.out.println("GSTCommonUtil.getDataFromFileServer()["+e.getMessage()+"]");
e.printStackTrace(); e.printStackTrace();
throw new ITMException(e); throw new ITMException(e);
} }
finally
{
try
{
if(isError)
{
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
if(conn!=null)
{
conn.rollback();
}
}
else
{
if(conn!=null)
{
conn.commit();
}
}
if(conn!=null && !conn.isClosed())
{
conn.close();
}
}
catch(Exception se)
{
System.out.println("GSTDataSubmitWizEJB.getDataFromFileServer().finally["+se.getMessage()+"]");
se.printStackTrace();
throw new ITMException(se);
}
}
System.out.println("final retString["+retString+"]"); System.out.println("final retString["+retString+"]");
return retString; return retString;
} }
......
...@@ -212,6 +212,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -212,6 +212,8 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
String loginCode = "", chgTerm = "", callStatus = "", responseId = "", responseJsonStr= ""; String loginCode = "", chgTerm = "", callStatus = "", responseId = "", responseJsonStr= "";
ArrayList<String> tranIdList = new ArrayList<String>(); ArrayList<String> tranIdList = new ArrayList<String>();
ArrayList<HashMap<String,String>> getGstrDataList = new ArrayList<HashMap<String,String>>();
ArrayList<String> byPassSectionList = new ArrayList<String>();
APICallData apiCallData = null; APICallData apiCallData = null;
boolean isDataLogged = false; boolean isDataLogged = false;
...@@ -592,6 +594,45 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -592,6 +594,45 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
System.out.println("tranIdList.size()["+tranIdList.size()+"]"); System.out.println("tranIdList.size()["+tranIdList.size()+"]");
} }
if("GETINV".equalsIgnoreCase(action))
{
sql = " SELECT TRAN_ID, RESPONSE_ID, CALL_DATE,CALL_TYPE"
+ " FROM API_CALL_LOG"
+ " WHERE SITE_CODE = ? AND REC_TYPE = ? AND PRD_CODE = ?"
+ " AND CALL_STATUS = ? AND CALL_TYPE LIKE '%GET%' AND RESPONSE_ID IS NOT NULL"
+ " ORDER BY CALL_DATE DESC";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, siteCode);
pstmt.setString(2, "4");
pstmt.setString(3, periodCode);
pstmt.setString(4, "0");
rs = pstmt.executeQuery();
while(rs.next())
{
HashMap<String,String> tempHMap = new HashMap<String,String>();
tempHMap.put("api_tranid", rs.getString("TRAN_ID"));
tempHMap.put("token", rs.getString("RESPONSE_ID"));
String tempStr = rs.getString("CALL_TYPE");
String section = tempStr.substring(tempStr.indexOf("_")+1);
tempHMap.put("section", section);
byPassSectionList.add(section);
getGstrDataList.add(tempHMap);
}
if(rs!=null)
{
rs.close();
rs = null;
}
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
}
if(authToken != null && authToken.trim().length() > 0 && authSEK != null) if(authToken != null && authToken.trim().length() > 0 && authSEK != null)
{ {
if("GSTR1".equalsIgnoreCase(returnsType)) if("GSTR1".equalsIgnoreCase(returnsType))
...@@ -621,7 +662,20 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -621,7 +662,20 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
{ {
if("GETINV".equalsIgnoreCase(action)) if("GETINV".equalsIgnoreCase(action))
{ {
retString = downloadGstr2AData(siteCode, xtraParams, conn); if(getGstrDataList.size() > 0)
{
for(HashMap<String,String> eachDataHamp : getGstrDataList)
{
String sectionName = eachDataHamp.get("section");
JSONObject dataJSONObject = new JSONObject();
dataJSONObject.put("token", eachDataHamp.get("token"));
dataJSONObject.put("est", "");
dataJSONObject.put("api_tranid", eachDataHamp.get("api_tranid"));
retString = getDataFromFileServer("4", dataJSONObject, sectionName, xtraParams, conn);
}
}
retString = downloadGstr2AData(siteCode, xtraParams, byPassSectionList, conn);
} }
} }
else if("GSTR2".equalsIgnoreCase(returnsType)) else if("GSTR2".equalsIgnoreCase(returnsType))
...@@ -3389,7 +3443,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -3389,7 +3443,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
} }
return retString; return retString;
}*/ }*/
private String downloadGstr2AData(String siteCode, String xtraParams, Connection conn) throws ITMException private String downloadGstr2AData(String siteCode, String xtraParams, ArrayList<String> byPassSectionList, Connection conn) throws ITMException
{ {
String retString = ""; String retString = "";
String errMsg = "", gspAuthString = "", gspAuthSignature = ""; String errMsg = "", gspAuthString = "", gspAuthSignature = "";
...@@ -3405,70 +3459,90 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -3405,70 +3459,90 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
for(String action : gstr2Section) for(String action : gstr2Section)
{ {
System.out.println("calling for ["+action+"]"); if(byPassSectionList != null && !byPassSectionList.contains(action))
long timeStamp = new Timestamp().getDateTime();
gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
HttpRequest getGstr2InvoicesReq = Unirest.get(String.format("%s%s", BASE_API_URL, GSTR2A_URL))
.queryString("action", action)
.queryString("gstin", gstin)
.queryString("ret_period", periodCode)
.header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
.header("clientid", clientId)
.header("client-secret", clientSecret)
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.getHttpRequest();
System.out.println("get GSTR2A ["+action+"] invoices url["+getGstr2InvoicesReq.getUrl()+"]");
System.out.println("get GSTR2A ["+action+"] invoices method["+getGstr2InvoicesReq.getHttpMethod()+"]");
System.out.println("get GSTR2A ["+action+"] invoices request header["+getGstr2InvoicesReq.getHeaders()+"]");
HttpResponse<JsonNode> getGstr2InvoicesResp = getGstr2InvoicesReq.asJson();
System.out.println(String.format("getGstr2InvoicesResp Request : Status[%s] Response[%s]", getGstr2InvoicesResp.getStatus(), getGstr2InvoicesResp.getBody()));
if (getGstr2InvoicesResp.getStatus() == 200)
{ {
JSONObject getGstr2InvoicesRespObj = getGstr2InvoicesResp.getBody().getObject(); System.out.println("calling for ["+action+"]");
if(getGstr2InvoicesRespObj.has("data") && getGstr2InvoicesRespObj.has("rek")) long timeStamp = new Timestamp().getDateTime();
{ gspAuthString = clientId + ":" + transactionId + ":" + timeStamp + ":" + gstin;
callStatus = "1"; gspAuthSignature = gspSignature.sign(gspAuthString, aspPrivateKey);
String gstr2InvoicesData = getGstr2InvoicesRespObj.getString("data");
String gstr2InvoicesRek = getGstr2InvoicesRespObj.getString("rek"); HttpRequest getGstr2InvoicesReq = Unirest.get(String.format("%s%s", BASE_API_URL, GSTR2A_URL))
.queryString("action", action)
.queryString("gstin", gstin)
.queryString("ret_period", periodCode)
.header("Content-Type", APPLICATION_JSON)
.header("state-cd", stateCode)
.header("clientid", clientId)
.header("client-secret", clientSecret)
.header("ip-usr", ipAddress)
.header("username", userName)
.header("auth-token", authToken)
.header("txn", transactionId)
.header("ret_period", periodCode)
.header("gstin", gstin)
.header("X-Asp-Auth-Token", gspAuthString)
.header("X-Asp-Auth-Signature", gspAuthSignature)
.getHttpRequest();
System.out.println("get GSTR2A ["+action+"] invoices url["+getGstr2InvoicesReq.getUrl()+"]");
System.out.println("get GSTR2A ["+action+"] invoices method["+getGstr2InvoicesReq.getHttpMethod()+"]");
System.out.println("get GSTR2A ["+action+"] invoices request header["+getGstr2InvoicesReq.getHeaders()+"]");
HttpResponse<JsonNode> getGstr2InvoicesResp = getGstr2InvoicesReq.asJson();
System.out.println(String.format("getGstr2InvoicesResp Request : Status[%s] Response[%s]", getGstr2InvoicesResp.getStatus(), getGstr2InvoicesResp.getBody()));
if (getGstr2InvoicesResp.getStatus() == 200)
{
JSONObject getGstr2InvoicesRespObj = getGstr2InvoicesResp.getBody().getObject();
if(getGstr2InvoicesRespObj.has("data") && getGstr2InvoicesRespObj.has("rek"))
{
String gstr2InvoicesData = getGstr2InvoicesRespObj.getString("data");
String gstr2InvoicesRek = getGstr2InvoicesRespObj.getString("rek");
byte[] apiEK = aesEncryption.decrypt(gstr2InvoicesRek, authSEK); byte[] apiEK = aesEncryption.decrypt(gstr2InvoicesRek, authSEK);
String respJsoninBase64 = new String(aesEncryption.decrypt(gstr2InvoicesData, apiEK)); String respJsoninBase64 = new String(aesEncryption.decrypt(gstr2InvoicesData, apiEK));
byte[] respJsonInBytes = aesEncryption.decodeBase64StringTOByte(respJsoninBase64); byte[] respJsonInBytes = aesEncryption.decodeBase64StringTOByte(respJsoninBase64);
JSONObject gstr2InvoiceJsonObj = new JSONObject(new String(respJsonInBytes)); JSONObject gstr2InvoiceJsonObj = new JSONObject(new String(respJsonInBytes));
System.out.println("respJsonInBytes["+new String(respJsonInBytes)+"]"); System.out.println("respJsonInBytes["+new String(respJsonInBytes)+"]");
if(gstr2InvoiceJsonObj.has("est") && gstr2InvoiceJsonObj.has("token")) if(gstr2InvoiceJsonObj.has("est") && gstr2InvoiceJsonObj.has("token"))
{ {
retString = getDataFromFileServer("4", gstr2InvoiceJsonObj, action, xtraParams, conn); callStatus = "0";
} responseId = gstr2InvoiceJsonObj.getString("token");
else retString = getDataFromFileServer("4", gstr2InvoiceJsonObj, action, xtraParams, conn);
{ }
if("B2B".equalsIgnoreCase(action)) else
{
insertB2BInvoiceData(stateCode, periodCode, siteCode, gstr2InvoiceJsonObj, xtraParams, conn);
}
else if("CDN".equalsIgnoreCase(action))
{ {
insertCDNData(stateCode, periodCode, siteCode, gstr2InvoiceJsonObj, xtraParams, conn); callStatus = "1";
if("B2B".equalsIgnoreCase(action))
{
insertB2BInvoiceData(stateCode, periodCode, siteCode, gstr2InvoiceJsonObj, xtraParams, conn);
}
else if("CDN".equalsIgnoreCase(action))
{
insertCDNData(stateCode, periodCode, siteCode, gstr2InvoiceJsonObj, xtraParams, conn);
}
} }
} }
else
{
callStatus = "2";
JSONObject errorJSON = getGstr2InvoicesResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
}
else if(getGstr2InvoicesResp.getStatus() == 500)
{
callStatus = "2";
errMsg = "Message : Error occurred at GSTN server \nResponse code : "+getGstr2InvoicesResp.getStatus();
responseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
} }
else else
{ {
...@@ -3478,40 +3552,24 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -3478,40 +3552,24 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd"); errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn); retString = getError(errMsg, "GSTAPIERR", conn);
} }
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("GET_"+action);
apiCallData.setRecType("4");
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
apiCallData.setResponseId(responseId);
apiCallData.setResponseJsonStr(responseJsonStr);
apiCallData.setChgUser(loginCode);
apiCallData.setChgDate(new Date());
apiCallData.setChgTerm(chgTerm);
apiCallDataList.add(apiCallData);
} }
else if(getGstr2InvoicesResp.getStatus() == 500)
{
callStatus = "2";
errMsg = "Message : Error occurred at GSTN server \nResponse code : "+getGstr2InvoicesResp.getStatus();
responseJsonStr = errMsg;
retString = getError(errMsg, "GSTAPIERR", conn);
}
else
{
callStatus = "2";
JSONObject errorJSON = getGstr2InvoicesResp.getBody().getObject().getJSONObject("error");
responseJsonStr = errorJSON.toString();
errMsg = "Message : "+errorJSON.getString("message")+" \nError code : "+errorJSON.getString("error_cd");
retString = getError(errMsg, "GSTAPIERR", conn);
}
APICallData apiCallData = new APICallData();
apiCallData.setPeriodCode(periodCode);
apiCallData.setCallDate(new Date());
apiCallData.setSiteCode(siteCode);
apiCallData.setUserId(loginCode);
apiCallData.setCallType("GET_"+action);
apiCallData.setRecType("4");
apiCallData.setNoOfRecords(0);
apiCallData.setCallStatus(callStatus);
apiCallData.setResponseId(responseId);
apiCallData.setResponseJsonStr(responseJsonStr);
apiCallData.setChgUser(loginCode);
apiCallData.setChgDate(new Date());
apiCallData.setChgTerm(chgTerm);
apiCallDataList.add(apiCallData);
} }
} }
catch(Exception e) catch(Exception e)
...@@ -4428,6 +4486,13 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -4428,6 +4486,13 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
String transactionId = "", gspAuthString = "", gspAuthSignature = ""; String transactionId = "", gspAuthString = "", gspAuthSignature = "";
String siteCode = "", loginCode = "", chgTerm = "", responseId = "", responseJsonStr = "", callStatus = ""; String siteCode = "", loginCode = "", chgTerm = "", responseId = "", responseJsonStr = "", callStatus = "";
String sep = File.separator; String sep = File.separator;
String sql = "", apiTranId = "";
PreparedStatement pstmt = null;
Connection localConn = null;
int updateCnt = 0;
boolean isError = false;
try try
{ {
siteCode = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginSiteCode"); siteCode = e12GenericUtility.getValueFromXTRA_PARAMS(xtraParams, "loginSiteCode");
...@@ -4518,7 +4583,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -4518,7 +4583,7 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
if(tempJsonObj.has("ul")) if(tempJsonObj.has("ul"))
{ {
String fileUrl = tempJsonObj.getString("ul"); String fileUrl = tempJsonObj.getString("ul");
fileUrl = BASE_API_URL + fileUrl; fileUrl = FILEDET_URL + fileUrl;
System.out.println("fileUrl["+fileUrl+"]"); System.out.println("fileUrl["+fileUrl+"]");
URL url = new URL(fileUrl); URL url = new URL(fileUrl);
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); HttpURLConnection connection = (HttpURLConnection) url.openConnection();
...@@ -4590,6 +4655,26 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -4590,6 +4655,26 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
} }
} }
} }
if(dataJSONObject.has("api_tranid"))
{
apiTranId = dataJSONObject.getString("api_tranid");
sql = "UPDATE API_CALL_LOG SET CALL_STATUS = ? WHERE TRAN_ID = ?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "1");
pstmt.setString(2, apiTranId);
updateCnt = pstmt.executeUpdate();
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
System.out.println("api call log update["+updateCnt+"] apiTranId["+apiTranId+"]");
}
} }
else else
{ {
...@@ -4623,6 +4708,27 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -4623,6 +4708,27 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
retString = "<data_error><![CDATA["+errMsg+"]]></data_error>"; retString = "<data_error><![CDATA["+errMsg+"]]></data_error>";
} }
} }
if(dataJSONObject.has("api_tranid"))
{
localConn = getConnection();
apiTranId = dataJSONObject.getString("api_tranid");
sql = "UPDATE API_CALL_LOG SET CALL_STATUS = ? WHERE TRAN_ID = ?";
pstmt = localConn.prepareStatement(sql);
pstmt.setString(1, "1");
pstmt.setString(2, apiTranId);
updateCnt = pstmt.executeUpdate();
if(pstmt!=null)
{
pstmt.close();
pstmt = null;
}
System.out.println("api call log update["+updateCnt+"] apiTranId["+apiTranId+"]");
}
} }
APICallData apiCallData = new APICallData(); APICallData apiCallData = new APICallData();
...@@ -4644,10 +4750,45 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi ...@@ -4644,10 +4750,45 @@ public class GSTDataSubmitWizPos extends ValidatorEJB implements GSTDataSubmitWi
} }
catch(Exception e) catch(Exception e)
{ {
isError = true;
System.out.println("GSTDataSubmitWizPos.getDataFromFileServer()["+e.getMessage()+"]"); System.out.println("GSTDataSubmitWizPos.getDataFromFileServer()["+e.getMessage()+"]");
e.printStackTrace(); e.printStackTrace();
throw new ITMException(e); throw new ITMException(e);
} }
finally
{
try
{
if(isError)
{
if(pstmt!=null)
{
pstmt.close();
pstmt=null;
}
if(localConn!=null)
{
localConn.rollback();
}
}
else
{
localConn.commit();
}
if(localConn!=null && !localConn.isClosed())
{
localConn.close();
localConn = null;
}
}
catch(SQLException se)
{
System.out.println("GSTDataSubmitWizPos.getDataFromFileServer().finally["+se.getMessage()+"]");
se.printStackTrace();
throw new ITMException(se);
}
}
System.out.println("final retString["+retString+"]"); System.out.println("final retString["+retString+"]");
return retString; return retString;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment