diff --git a/pg-checksum-1.0-jar-with-dependencies.jar b/pg-checksum-1.0-jar-with-dependencies.jar deleted file mode 100644 index 706888b..0000000 Binary files a/pg-checksum-1.0-jar-with-dependencies.jar and /dev/null differ diff --git a/src/main/java/com/example/demo/Account.java b/src/main/java/com/example/demo/Account.java deleted file mode 100644 index ab005f2..0000000 --- a/src/main/java/com/example/demo/Account.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.example.demo; - -public class Account { - - private final long id; - private final String content; - - public Account(long id, String content) { - this.id = id; - this.content = content; - } - - public long getId() { - return id; - } - - public String getContent() { - return content; - } -} diff --git a/src/main/java/com/example/demo/AddMoney.java b/src/main/java/com/example/demo/AddMoney.java deleted file mode 100644 index 96ee0bc..0000000 --- a/src/main/java/com/example/demo/AddMoney.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.example.demo; -import com.paytm.pg.merchant.CheckSumServiceHelper; - -import java.net.URL; -import java.util.Map; -import java.util.TreeMap; - - -public class AddMoney { - public AddMoney(){} - - String merchantMid = "merchant-perpule-stg"; - // Key in your staging and production MID available in your dashboard - String merchantKey = "jlgBKygCagp6PKECMEbLBfCviJorleAj"; - // Key in your staging and production merchant key available in your dashboard - String orderId = "order1"; - String sso_token = "4ff34c02-1a5c-43f8-95fc-091d53b01700"; - String channelId = "WEB"; - String custId = "1000039359"; - String mobileNo = "7397430279"; - String email = "amba.rohit8@gmail.com"; - String txnAmount = "1.00"; - String website = "WEBSTAGING"; - // This is the staging value. Production value is available in your dashboard - String industryTypeId = "Retail"; - // This is the staging value. Production value is available in your dashboard - String callbackUrl = "localhost:8080/addmoney"; - public void add_money() throws Exception { - TreeMap paytmParams = new TreeMap(); - paytmParams.put("MID", merchantMid); - paytmParams.put("REQUEST_TYPE", "ADD_MONEY"); - paytmParams.put("SSO_TOKEN", sso_token); - paytmParams.put("ORDER_ID", orderId); - paytmParams.put("CHANNEL_ID", channelId); - paytmParams.put("CUST_ID", custId); - paytmParams.put("MOBILE_NO", mobileNo); - paytmParams.put("EMAIL", email); - paytmParams.put("TXN_AMOUNT", txnAmount); - paytmParams.put("WEBSITE", website); - paytmParams.put("INDUSTRY_TYPE_ID", industryTypeId); - paytmParams.put("CALLBACK_URL", callbackUrl); - String paytmChecksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(merchantKey, paytmParams); - StringBuilder outputHtml = new StringBuilder(); - outputHtml.append(""); - outputHtml.append(""); - outputHtml.append(""); - outputHtml.append("Merchant Checkout Page"); - outputHtml.append(""); - outputHtml.append(""); - outputHtml.append("

Please do not refresh this page...

"); - URL transactionURL = new URL("https://securegw-stage.paytm.in/theia/processTransaction"); - outputHtml.append("
"); - for (Map.Entry entry : paytmParams.entrySet()) { - outputHtml.append(""); - } - outputHtml.append(""); - outputHtml.append(""); - outputHtml.append(""); - outputHtml.append(""); - outputHtml.append(""); - } -} diff --git a/src/main/java/com/example/demo/AutoDebit.java b/src/main/java/com/example/demo/AutoDebit.java deleted file mode 100644 index 09cca1b..0000000 --- a/src/main/java/com/example/demo/AutoDebit.java +++ /dev/null @@ -1,88 +0,0 @@ -package com.example.demo; - -import com.paytm.pg.merchant.CheckSumServiceHelper; -import org.json.JSONObject; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.util.TreeMap; - -public class AutoDebit { -// for production -// URL transactionURL = new URL("https://securegw.paytm.in/order/directPay"); - - String merchantKey = "&!vj74@Ri&g6U1TI"; - String number; - String txn; - - public AutoDebit(String number, String txn) { - this.number = number; - this.txn = txn; - } - String responseData; - - public String getResponseData() { - return responseData; - } - - public void setResponseData(String responseData) { - this.responseData = responseData; - } - - - - -public void auto_debit() { - TreeMap paytmParams = new TreeMap(); - paytmParams.put("ReqType", "WITHDRAW"); -// paytmParams.put("PREAUTH_ID", ""); // only in case of capture - paytmParams.put("SSOToken", "31add395-f16b-4dc0-b066-9139b5821700"); - paytmParams.put("MID", "Delvit07224170213556"); - paytmParams.put("TxnAmount", txn); - paytmParams.put("AppIP", "192.168.1.72"); - paytmParams.put("OrderId", "ORDER_123456789"); - paytmParams.put("Currency", "INR"); - paytmParams.put("DeviceId", number); - paytmParams.put("PaymentMode", "PPI"); - paytmParams.put("CustId", "1000039359"); - paytmParams.put("IndustryType", "Retail"); - paytmParams.put("Channel", "WAP"); - paytmParams.put("AuthMode", "USRPWD"); - - - try { - URL transactionURL = new URL("https://securegw-stage.paytm.in/order/directPay"); - - - String paytmChecksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(merchantKey, paytmParams); - paytmParams.put("CheckSum", paytmChecksum); - - JSONObject obj = new JSONObject(paytmParams); - String postData = obj.toString(); - HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); - connection.setRequestMethod("POST"); - connection.setRequestProperty("Content-Type", "application/json"); - connection.setUseCaches(false); - connection.setDoOutput(true); - - DataOutputStream requestWriter = new DataOutputStream(connection.getOutputStream()); - requestWriter.writeBytes(postData); - requestWriter.close(); - InputStream is = connection.getInputStream(); - BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); - if ((responseData = responseReader.readLine()) != null) { - System.out.append("Response Json = " + responseData); - } - System.out.append("Requested Json = " + postData + " "); - responseReader.close(); - // return responseData; - } catch (Exception exception) { - exception.printStackTrace(); - } -} - -} diff --git a/src/main/java/com/example/demo/CheckBalance.java b/src/main/java/com/example/demo/CheckBalance.java deleted file mode 100644 index 263acea..0000000 --- a/src/main/java/com/example/demo/CheckBalance.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.example.demo; -import com.example.demo.Model.DatabaseController; -import com.google.gson.Gson; -import com.paytm.pg.merchant.CheckSumServiceHelper; - -import java.io.BufferedReader; -import java.io.DataOutputStream; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.net.URL; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.util.TreeMap; - -public class CheckBalance { - String responseData; - - String mid = "Delvit07224170213556"; - String orderId = "ORDER_123456789"; - String userToken = ""; - String totalAmount = "0.00"; - String MERCHANT_KEY = "&!vj74@Ri&g6U1TI"; - String phonenumber="0"; - - public CheckBalance() { - } - - public CheckBalance(String phonenumber,String bill) { - this.phonenumber = phonenumber; - this.totalAmount=bill; - } - public String getResponseData() { - return responseData; - } - - public void setResponseData(String responseData) { - this.responseData = responseData; - } - - - public void check_balance(){ - - //Getting access token from table - try { - Connection conn = DatabaseController.getConnection(); - PreparedStatement getstmt = conn.prepareStatement("SELECT * FROM Customer WHERE PhoneNumber LIKE ?"); - getstmt.setString(1, "%" + phonenumber + "%"); - ResultSet rs = getstmt.executeQuery(); - SQLTableEntry sl = new SQLTableEntry(); - sl.SQLRetrieve(rs); - userToken=sl.getAccessToken(); - - }catch (Exception e){e.printStackTrace();} - - //Creating tree map - TreeMap paytmParams = new TreeMap(); - paytmParams.put("mid", mid); - paytmParams.put("userToken", userToken); - paytmParams.put("totalAmount", totalAmount); - - try { - URL url = new URL("https://securegw-stage.paytm.in/paymentservices/pay/consult"); // for staging - String checksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(MERCHANT_KEY, paytmParams); - - String paytmParams_head = "{\"clientId\":\"merchant-perpule-stg\",\"version\":\"V1\",\"requestTimestamp\":\"1569820811000\",\"channelId\":\"WAP\",\"signature\":\""+checksum+"\"}"; - String paytmParams_body = "{\"userToken\":\"" + userToken + "\",\"totalAmount\":\""+totalAmount+"\",\"mid\":\""+mid+"\"}"; - String post_data = "{\"body\":" + paytmParams_body + ",\"head\":" + paytmParams_head + "}"; - - - - HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestMethod("POST"); - connection.setRequestProperty("Content-Type", "application/json"); - connection.setUseCaches(false); - connection.setDoOutput(true); - - DataOutputStream requestWriter = new DataOutputStream(connection.getOutputStream()); - requestWriter.writeBytes(post_data); - requestWriter.close(); - InputStream is = connection.getInputStream(); - BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); - if ((responseData = responseReader.readLine()) != null) { - System.out.append("Response: " + responseData); - } - // System.out.append("Request: " + post_data + " "); - responseReader.close(); - - - //Evaluate response: - //TODO error handling for failure response - Gson g=new Gson(); - CheckBalanceResponse checkBalanceResponse= g.fromJson(responseData,CheckBalanceResponse.class); - - responseData=checkBalanceResponse.getBody().getDeficitAmount(); - - } catch (Exception exception) { - exception.printStackTrace(); - } - - - - - } - - -} \ No newline at end of file diff --git a/src/main/java/com/example/demo/RestServices.java b/src/main/java/com/example/demo/RestServices.java index db8e5a5..464020a 100644 --- a/src/main/java/com/example/demo/RestServices.java +++ b/src/main/java/com/example/demo/RestServices.java @@ -1,32 +1,44 @@ package com.example.demo; -import com.example.demo.Model.DatabaseController; +import com.amazon.pwain.types.PWAINConstants; +import com.example.demo.bo.*; +import com.example.demo.bo.AmazonPay.signAndEncrypt; +import com.example.demo.bo.AmazonPay.signAndEncryptForOperation; +import com.example.demo.bo.AmazonPay.verifySignature; +import com.example.demo.bo.Paytm.*; +import com.example.demo.bo.PhonePe.*; +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.DatabaseController; +import com.example.demo.dao.TransactionsDAO; +import com.example.demo.model.Paytm.SendOtpResponse; +import com.example.demo.model.Paytm.ValidateOtpResponse; + +import com.example.demo.model.PhonePe.CheckPaymentStatusResponse; import com.google.gson.Gson; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.error.ErrorController; import org.springframework.web.bind.annotation.*; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + import java.util.concurrent.atomic.AtomicLong; +import java.util.logging.Logger; @SpringBootApplication @RestController + public class RestServices implements ErrorController { + private static final Logger LOGGER = Logger.getLogger(DatabaseController.class.getName()); + public static void main(String[] args) { SpringApplication.run(RestServices.class, args); } - - - - - private final AtomicLong counter = new AtomicLong(); - Account account; + private final AtomicLong counter = new AtomicLong(); SendOtpResponse otpresponse; //For a NULL Page @@ -46,32 +58,62 @@ public String getErrorPath() { return "/error"; } - //To check existence of a number(customer in database) - @RequestMapping("/checkexistence") - public String checkexistence(@RequestParam(value ="number",defaultValue = "0")String number){ - try { - Connection conn = DatabaseController.getConnection(); - PreparedStatement getstmt = conn.prepareStatement("SELECT * FROM Customer WHERE PhoneNumber LIKE ?"); - getstmt.setString(1, "%" + number + "%"); + //GENERALISED REST_API + @RequestMapping("/checklinking") + public String checkexistence(@RequestParam(value ="mode",defaultValue = "0")String mode, + @RequestParam(value ="number",defaultValue = "0")String number, + @RequestParam(value="totalamount", defaultValue="0.00") String totalamount){ + Flow flow; + switch(mode) { + case "paytm": + flow = new PaytmFlow(); + default: + flow = new PaytmFlow(); + } + return flow.CheckRegistered(number,totalamount,mode); + } - ResultSet rs = getstmt.executeQuery(); - SQLTableEntry sl = new SQLTableEntry(); + @RequestMapping("/initiate") + public String initiate(@RequestParam(value ="mode",defaultValue = "0")String mode, + @RequestParam(value ="number",defaultValue = "0")String number, + @RequestParam(value="totalamount", defaultValue="0.00") String totalamount, + @RequestParam(value="transid",defaultValue="0") String TransactionId){ + Flow flow; + switch(mode) { + case "paytm": + flow = new PaytmFlow(); + default: + flow = new PaytmFlow(); + } + return flow.Inititate(number, totalamount, TransactionId); + } - sl.SQLRetrieve(rs); - if(sl.getPhoneNumber()==null){return "no";} - else {return "yes";} + @RequestMapping("/debit") + public String debit(@RequestParam(value ="mode",defaultValue = "0")String mode, + @RequestParam(value ="number",defaultValue = "0")String number, + @RequestParam(value="totalamount", defaultValue="0.00") String totalamount, + @RequestParam(value="transid",defaultValue="0") String TransactionId){ + Flow flow; + switch(mode) { + case "paytm": + flow = new PaytmFlow(); + default: + flow = new PaytmFlow(); - }catch(Exception e){ - e.printStackTrace(); - return null; } + return flow.Debit( number, totalamount, TransactionId); } + + + //************************************************************************************* + //PAYTM - Exclusive Rest APIs + @RequestMapping("/sendotp") public SendOtpResponse sendingotp(@RequestParam(value="number", defaultValue="0") String number ) { - SendOtp so = new SendOtp("", "+91" + number); + SendOtp so = new SendOtp("", "+91" + number, new CustomerDAO()); so.Send_OTP(); Gson g=new Gson(); otpresponse= g.fromJson(so.getResponseData(),SendOtpResponse.class); @@ -80,33 +122,36 @@ public SendOtpResponse sendingotp(@RequestParam(value="number", defaultValue="0" } @RequestMapping("/validateotp") - public ValidateOtpResponse validatingotp(@RequestParam(value="number", defaultValue="0") String number,@RequestParam(value="otp", defaultValue="111111") String otp) { - ValidateOtp votp =new ValidateOtp(number,otp); + public String validatingotp(@RequestParam(value="number", defaultValue="0") String number, + @RequestParam(value="otp", defaultValue="111111") String otp) { + ValidateOtp votp =new ValidateOtp(number,otp,new CustomerDAO()); votp.validate_OTP(); - Gson g=new Gson(); - validateOtpResponse= g.fromJson(votp.getResponseData(),ValidateOtpResponse.class); - return validateOtpResponse; + return votp.getResponseData(); } - ValidateOtpResponse validateOtpResponse; - ValidateTokenResponse validateTokenResponse; - AutoDebitResponse autoDebitResponse; - @RequestMapping("/validatetoken") - public String validatingtoken(@RequestParam(value="number", defaultValue="0") String number){ - ValidateToken token=new ValidateToken(number); - token.validate_token(); - return token.getResponseData(); - } + @RequestMapping("/addmoney") + public String addmoney(@RequestParam(value="number", defaultValue="0") String number, + @RequestParam(value="topupamt", defaultValue="0.00") String topupamt, + @RequestParam(value="transid",defaultValue="0") String TransactionId){ + AddMoney addMoney = new AddMoney(number,topupamt,TransactionId, new CustomerDAO(), new TransactionsDAO()); + try{ + addMoney.add_money(); + }catch (Exception e){} + + return addMoney.getResponse(); - @RequestMapping("/checkbalance") - public String checkingbalance(@RequestParam(value="number", defaultValue="0") String number,@RequestParam(value="totalamount", defaultValue="0.00") String totalamount){ - CheckBalance check=new CheckBalance(number,totalamount); - check.check_balance(); - return check.getResponseData(); } + @RequestMapping("/callbackurl") + public String callback(){ + return "Please press continue to go ahead !"; + } + + + //TODO work on this + ValidateOtpResponse validateOtpResponse; @RequestMapping("/revokeaccess") public String revokingaccess(){ RevokeAccess revoke=new RevokeAccess(validateOtpResponse.getAccess_token()); @@ -114,19 +159,95 @@ public String revokingaccess(){ return revoke.getResponseData(); } - @RequestMapping("/autodebit") - public AutoDebitResponse debiting(@RequestParam(value="amount", defaultValue="0.00") String amount) { - AutoDebit deb =new AutoDebit(validateTokenResponse.getMobile(),amount); - deb.auto_debit(); + + //******************************************************************************************************************8 + //TODO phonepay exculsive + + @RequestMapping("/requestpayment") + public String RequestPayment(@RequestParam(value ="number",defaultValue = "0")String number, + @RequestParam(value="totalamount", defaultValue="0.00") Integer totalamount) { + RequestPayment requestPayment = new RequestPayment(); + + + String transactionId = new AllocateTransactionId(number,String.valueOf(totalamount/100),new TransactionsDAO()).Get_transactionID("phonpe"); + requestPayment.setTransactionId(transactionId); + requestPayment.requestpayment_main(number,totalamount); + + + Gson g=new Gson(); + RequestPaymentResponse requestPaymentResponse= g.fromJson(requestPayment.getResponseData(),RequestPaymentResponse.class); + if (requestPaymentResponse.getSuccess()==true){ + + return transactionId; + } + else { + //TODO add failure code + return null;} + } + + @RequestMapping("/checkpaymentstatus") + public String CheckPaymentStatus(@RequestParam(value="transid",defaultValue="0") String TransactionId) { + + CheckPaymentStatus checkPaymentStatus = new CheckPaymentStatus(); + checkPaymentStatus.setTransactionId(TransactionId); + checkPaymentStatus.checkpaymentstatus_main(); + Gson g=new Gson(); - autoDebitResponse= g.fromJson(deb.getResponseData(),AutoDebitResponse.class); - return autoDebitResponse; + CheckPaymentStatusResponse checkPaymentStatusResponse= g.fromJson(checkPaymentStatus.getResponseData(), CheckPaymentStatusResponse.class); + + TransactionsDAO transaction = new TransactionsDAO(); + transaction.updateStatus(TransactionId, checkPaymentStatusResponse.getCode()); + + return (checkPaymentStatusResponse.getMessage()); + + } + + + @RequestMapping("/cancelpaymentrequest") + public String CancelPaymentRequest() { + + CancelPaymentRequest can = new CancelPaymentRequest(); + can.cancelpaymentrequest_main(); + return can.getResponseData(); } - @RequestMapping("/transactionstatus") - public String txnstatus(){ - TransactionStatus stat=new TransactionStatus(); - stat.transaction_status(); - return stat.getResponseData(); + + @RequestMapping("/remindpaymentrequest") + public String RemindPaymentRequest() { + + RemindPaymentRequest remind = new RemindPaymentRequest(); + remind.remindpaymentrequest_main(); + return remind.getResponseData(); } +//****************************************************************************************************************** + //TODO AmazonPay exclusive + + // Amazon transaction hits the banckend four time in the following sequence + // 1) signAndEncrypt + // 2) verifySignature + // 3) signAndEncryptForOperation + // 4) verifySignature + // We pass the same http request, parse it in java classes and return the response + + @GetMapping("/signAndEncrypt") + public String signAndEncrypt(HttpServletRequest request, HttpServletResponse response){ + signAndEncrypt S = new signAndEncrypt(); + return S.signNEncrypt(request,response); + } + + + @GetMapping("/verifySignature") + public Boolean verifySignature(HttpServletRequest request, HttpServletResponse response){ + verifySignature V = new verifySignature(); + return V.verifySignature(request,response); + } + + + @GetMapping("/signAndEncryptForOperation") + public String signAndEncryptForOperation(HttpServletRequest request, HttpServletResponse response ){ + signAndEncryptForOperation S = new signAndEncryptForOperation(); + return S.signAndEncrypt(request,response); + } + + } diff --git a/src/main/java/com/example/demo/SQLTableEntry.java b/src/main/java/com/example/demo/SQLTableEntry.java deleted file mode 100644 index 3bc5b00..0000000 --- a/src/main/java/com/example/demo/SQLTableEntry.java +++ /dev/null @@ -1,79 +0,0 @@ -package com.example.demo; - -import com.example.demo.Model.DatabaseController; -import com.mysql.cj.protocol.Resultset; - -import java.sql.Date; -import java.sql.ResultSet; -import java.util.logging.Logger; - -public class SQLTableEntry { - - String PhoneNumber; - String AccessToken; - String State; - String Expires; - private static final Logger LOGGER = Logger.getLogger(DatabaseController.class.getName()); - - - public SQLTableEntry() { - } - - public SQLTableEntry(String phoneNumber, String accessToken, String state, String expires) { - PhoneNumber = phoneNumber; - AccessToken = accessToken; - State = state; - Expires= expires; - } - - - - public void SQLRetrieve(ResultSet rs){ - - try { - // iterate through the java resultset - while (rs.next()) { - PhoneNumber = rs.getString(1); - AccessToken = rs.getString(2); - State = rs.getString(3); - Expires=rs.getString(4); - LOGGER.info("phonenumberrequest"+PhoneNumber); - } - }catch (Exception e){ - - e.printStackTrace(); - } - } - - public String getPhoneNumber() { - return PhoneNumber; - } - - public void setPhoneNumber(String phoneNumber) { - PhoneNumber = phoneNumber; - } - - public String getAccessToken() { - return AccessToken; - } - - public void setAccessToken(String accessToken) { - AccessToken = accessToken; - } - - public String getState() { - return State; - } - - public void setState(String state) { - State = state; - } - - public String getExpires() { - return Expires; - } - - public void setExpires(String expires) { - Expires = expires; - } -} diff --git a/src/main/java/com/example/demo/ValidateToken.java b/src/main/java/com/example/demo/ValidateToken.java deleted file mode 100644 index c4ce8f8..0000000 --- a/src/main/java/com/example/demo/ValidateToken.java +++ /dev/null @@ -1,92 +0,0 @@ -package com.example.demo; - - -import com.example.demo.Model.DatabaseController; -import com.google.gson.Gson; - -import java.io.BufferedReader; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.HttpURLConnection; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; - -public class ValidateToken { - // for production - // URL transactionURL = new URL("https://accounts.paytm.com/user/details"); - - - String phonenumber="0"; - String sessionToken = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; - String responseData; - - public ValidateToken(String phonenumber) { - this.phonenumber = phonenumber; - } - - public String getPhonenumber() { - return phonenumber; - } - - - public String getResponseData() { - return responseData; - } - public void setResponseData(String responseData) { - this.responseData = responseData; - } - - - public void validate_token() { - - - //retrieve state for given phone number - try { - Connection conn = DatabaseController.getConnection(); - PreparedStatement getstmt = conn.prepareStatement("SELECT * FROM Customer WHERE PhoneNumber LIKE ?"); - getstmt.setString(1, "%" + phonenumber + "%"); - ResultSet rs = getstmt.executeQuery(); - SQLTableEntry sl = new SQLTableEntry(); - sl.SQLRetrieve(rs); - sessionToken=sl.getAccessToken(); - - }catch (Exception e){e.printStackTrace();} - - - try { - java.net.URL transactionURL= new java.net.URL("https://accounts-uat.Paytm.com/user/details"); - HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); - connection.setRequestMethod("GET"); - connection.addRequestProperty("session_token", sessionToken); - connection.setUseCaches(false); - connection.setDoOutput(true); - - - InputStream is = connection.getInputStream(); - BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); - if ((responseData = responseReader.readLine()) != null) { - System.out.append("Response Json = " + responseData); - } - responseReader.close(); - - //Evaluate response: - //TODO error handling for failure response - Gson g=new Gson(); - ValidateTokenResponse validateTokenResponse= g.fromJson(responseData,ValidateTokenResponse.class); - - - Connection conn = DatabaseController.getConnection(); - PreparedStatement setstmt = conn.prepareStatement( - "UPDATE Customer SET Expires = ? WHERE PhoneNumber LIKE ?;"); - setstmt.setString(1, validateTokenResponse.getExpires()); - setstmt.setString(2, "%"+phonenumber+"%"); - setstmt.execute(); - responseData="exists"; - - } catch (Exception exception) { - exception.printStackTrace(); - } - } - -} diff --git a/src/main/java/com/example/demo/bo/AllocateTransactionId.java b/src/main/java/com/example/demo/bo/AllocateTransactionId.java new file mode 100644 index 0000000..2d17526 --- /dev/null +++ b/src/main/java/com/example/demo/bo/AllocateTransactionId.java @@ -0,0 +1,51 @@ +package com.example.demo.bo; + +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.TransactionsDAO; +import com.example.demo.dao.DatabaseController; + + +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.TimeZone; +import java.util.UUID; +import java.util.logging.Logger; + +public class AllocateTransactionId { + + String PhoneNumber; + String TransactionId; + String TotalAmount; + private TransactionsDAO transaction; + private static final Logger LOGGER = Logger.getLogger(DatabaseController.class.getName()); + + + public AllocateTransactionId() { + } + + public AllocateTransactionId(String phoneNumber, String totalAmount, TransactionsDAO trans) { + this.PhoneNumber = phoneNumber; + this.TotalAmount = totalAmount; + this.transaction=new TransactionsDAO(trans); + } + + + public String Get_transactionID(String paymentMode){ + try { + + //Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + SimpleDateFormat sd = new SimpleDateFormat("yyyy.MM.dd G 'at' HH:mm:ss z"); + Date date = new Date(); + sd.setTimeZone(TimeZone.getTimeZone("IST")); + TransactionId= UUID.randomUUID().toString(); + transaction.insertData(sd.format(date),TransactionId,PhoneNumber,TotalAmount,"INIT_TXN",paymentMode); + return TransactionId; + + + }catch (Exception e){ + LOGGER.info("failed"); + return null; + } + } +} diff --git a/src/main/java/com/example/demo/bo/AmazonPay/MerchantCredentials.java b/src/main/java/com/example/demo/bo/AmazonPay/MerchantCredentials.java new file mode 100644 index 0000000..2e89ef2 --- /dev/null +++ b/src/main/java/com/example/demo/bo/AmazonPay/MerchantCredentials.java @@ -0,0 +1,22 @@ +package com.example.demo.bo.AmazonPay; + +public class MerchantCredentials { + public MerchantCredentials() { + } + + private String sellerId = "AZ4WQCLDT2DF0"; + private String accessKey = "AKIAJAKG6LME27HVCD3A"; + private String secretKey = "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"; + + public String getSellerId() { + return sellerId; + } + + public String getAccessKey() { + return accessKey; + } + + public String getSecretKey() { + return secretKey; + } +} diff --git a/src/main/java/com/example/demo/bo/AmazonPay/signAndEncrypt.java b/src/main/java/com/example/demo/bo/AmazonPay/signAndEncrypt.java new file mode 100644 index 0000000..ab54210 --- /dev/null +++ b/src/main/java/com/example/demo/bo/AmazonPay/signAndEncrypt.java @@ -0,0 +1,74 @@ +package com.example.demo.bo.AmazonPay; + +import com.amazon.pwain.PWAINBackendSDK; +import com.amazon.pwain.PWAINException; +import com.amazon.pwain.types.MerchantConfiguration; +import com.amazon.pwain.types.PWAINConstants; +import com.example.demo.bo.AllocateTransactionId; +import com.example.demo.dao.TransactionsDAO; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Enumeration; +import java.util.HashMap; + +public class signAndEncrypt { + + public static String signNEncrypt(HttpServletRequest request, HttpServletResponse response){ + + + try { + MerchantCredentials cred = new MerchantCredentials(); + + //Set the merchant credentials + + String sellerId = cred.getSellerId(); + String accessKey = cred.getAccessKey(); + String secretKey = cred.getSecretKey(); + + //create a new hashmap in which we add all the required parameters + + HashMap signAndEncryptParameters = new HashMap(); + + //Retrieve the parameters name from the url + + Enumeration parameterNames = request.getParameterNames(); + + //Add the parameters from the url in the hash map + + while (parameterNames.hasMoreElements()) { + + String paramName = parameterNames.nextElement(); + + String[] paramValue = request.getParameterValues(paramName); + + signAndEncryptParameters.put(paramName, paramValue[0]); + + + } + //TODO add entry to table properly + + //Allocate transactionID for AmazonPay transaction + //We need to pass two parameters to allocate transactionID + // 1) Mobile number ( Which is set to "9999999999" for testing case in production we get this number from our OnePay application) + // 2) Transaction Amount + + AllocateTransactionId allocate=new AllocateTransactionId( "9999999999",request.getParameter(PWAINConstants.ORDER_TOTAL_AMOUNT),new TransactionsDAO()); + + //call allocate.Get_transactionID with "amazonpay" which will set mode to amazonpay + + signAndEncryptParameters.put(PWAINConstants.SELLER_ORDER_ID,allocate.Get_transactionID("amazonpay")); + + //Set the connection with our merchant credentials + + PWAINBackendSDK backendSDK = new PWAINBackendSDK(new MerchantConfiguration.Builder().withAwsAccessKeyId(accessKey).withAwsSecretKeyId(secretKey).withSellerId(sellerId).build()); + + // Return the response recieved from calling signAndEncryptParameters + + return backendSDK.signAndEncryptParameters(signAndEncryptParameters); + + } catch (PWAINException e) { + return e.toString(); + } + } +} diff --git a/src/main/java/com/example/demo/bo/AmazonPay/signAndEncryptForOperation.java b/src/main/java/com/example/demo/bo/AmazonPay/signAndEncryptForOperation.java new file mode 100644 index 0000000..17fa914 --- /dev/null +++ b/src/main/java/com/example/demo/bo/AmazonPay/signAndEncryptForOperation.java @@ -0,0 +1,49 @@ +package com.example.demo.bo.AmazonPay; + +import com.amazon.pwain.PWAINBackendSDK; +import com.amazon.pwain.PWAINException; +import com.amazon.pwain.types.MerchantConfiguration; +import com.amazon.pwain.types.PWAINConstants; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.HashMap; + +public class signAndEncryptForOperation { + + public static String signAndEncrypt(HttpServletRequest request, HttpServletResponse response){ + + try { + MerchantCredentials cred = new MerchantCredentials(); + + //Set the merchant credentials + + String sellerId = cred.getSellerId(); + String accessKey = cred.getAccessKey(); + String secretKey = cred.getSecretKey(); + + String amazonOrderId = request.getParameter(PWAINConstants.TRANSACTION_ID); + String transactionType = request.getParameter(PWAINConstants.TRANSACTION_ID_TYPE); + + // We need three parameters in signAndEncryptForOperation + // 1) TRANSACTION_ID + // 2) TRANSACTION_ID_TYPE + // 3) OPERATION_NAME + // We add elements in getchargeparameters Hash Map + + HashMap getChargeParameters = new HashMap(); + getChargeParameters.put(PWAINConstants.TRANSACTION_ID,amazonOrderId); + getChargeParameters.put(PWAINConstants.TRANSACTION_ID_TYPE,transactionType); + getChargeParameters.put(PWAINConstants.OPERATION_NAME,"SIGN_AND_ENCRYPT_GET_CHARGE_STATUS_REQUEST"); + PWAINBackendSDK backendSDK = new PWAINBackendSDK(new MerchantConfiguration.Builder().withAwsAccessKeyId(accessKey).withAwsSecretKeyId(secretKey).withSellerId(sellerId).build()); + + // Return the response recieved from calling signAndEncryptParameters + return backendSDK.signAndEncryptParameters(getChargeParameters); + } catch (PWAINException e){ + return e.toString(); + } catch (Exception ex){ + ex.printStackTrace(); + return ex.toString(); + } + } +} diff --git a/src/main/java/com/example/demo/bo/AmazonPay/verifySignature.java b/src/main/java/com/example/demo/bo/AmazonPay/verifySignature.java new file mode 100644 index 0000000..c452fb6 --- /dev/null +++ b/src/main/java/com/example/demo/bo/AmazonPay/verifySignature.java @@ -0,0 +1,76 @@ +package com.example.demo.bo.AmazonPay; + +import com.amazon.pwain.PWAINBackendSDK; +import com.amazon.pwain.PWAINException; +import com.amazon.pwain.types.MerchantConfiguration; +import com.amazon.pwain.types.PWAINConstants; +import com.example.demo.dao.TransactionsDAO; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.util.Enumeration; +import java.util.HashMap; + +public class verifySignature { + + public static boolean verifySignature(HttpServletRequest request, HttpServletResponse response){ + + try { + MerchantCredentials cred = new MerchantCredentials(); + + //Set the merchant credentials + + String sellerId = cred.getSellerId(); + String accessKey = cred.getAccessKey(); + String secretKey = cred.getSecretKey(); + + //create a new hashmap in which we add all the required parameters + + HashMap verificationParameters = new HashMap(); + + //Retrieve the parameters name from the url + + Enumeration parameterNames = request.getParameterNames(); + + + //Add the parameters from the url in the hash map + + while (parameterNames.hasMoreElements()) { + + String paramName = parameterNames.nextElement(); + + String[] paramValue = request.getParameterValues(paramName); + + verificationParameters.put(paramName, paramValue[0]); + + } + + //Set the connection with our merchant credentials + + PWAINBackendSDK backendSDK = new PWAINBackendSDK(new MerchantConfiguration.Builder().withAwsAccessKeyId(accessKey).withAwsSecretKeyId(secretKey).withSellerId(sellerId).build()); + + //Call the function verify signature with required parameters + + backendSDK.verifySignature(verificationParameters); + + //Checking if the verify signature contain transaction status, if yes then save the status in transaction table + + if(request.getParameterMap().containsKey(PWAINConstants.TRANSACTION_STATUS_DESCRIPTION)){ + System.out.println(request.getParameter(PWAINConstants.TRANSACTION_STATUS_DESCRIPTION)); + TransactionsDAO transaction = new TransactionsDAO(); + transaction.updateStatus(request.getParameter(PWAINConstants.MERCHANT_TRANSACTION_ID),request.getParameter(PWAINConstants.TRANSACTION_STATUS_DESCRIPTION) ); + } + + + + return true; + } catch (PWAINException e){ + System.out.println("returning verification as false"); + return false; + } catch (Exception ex){ + ex.printStackTrace(); + return false; + } + + } +} diff --git a/src/main/java/com/example/demo/bo/CheckFeasibility.java b/src/main/java/com/example/demo/bo/CheckFeasibility.java new file mode 100644 index 0000000..d014f6c --- /dev/null +++ b/src/main/java/com/example/demo/bo/CheckFeasibility.java @@ -0,0 +1,7 @@ +package com.example.demo.bo; + +public abstract class CheckFeasibility { + + public CheckFeasibility(){} + public abstract String CheckAccountBalance(String phoneNumber, String totalAmount, String transactionId); +} diff --git a/src/main/java/com/example/demo/bo/CustomerValidator.java b/src/main/java/com/example/demo/bo/CustomerValidator.java new file mode 100644 index 0000000..f0db397 --- /dev/null +++ b/src/main/java/com/example/demo/bo/CustomerValidator.java @@ -0,0 +1,8 @@ +package com.example.demo.bo; + + +public abstract class CustomerValidator { + + public CustomerValidator(){} + public abstract Boolean Validate(String phoneNumber, String totalAmount); +} diff --git a/src/main/java/com/example/demo/bo/DebitMoney.java b/src/main/java/com/example/demo/bo/DebitMoney.java new file mode 100644 index 0000000..d211ce6 --- /dev/null +++ b/src/main/java/com/example/demo/bo/DebitMoney.java @@ -0,0 +1,8 @@ +package com.example.demo.bo; + +public abstract class DebitMoney { + + public DebitMoney(){} + public abstract String Debit(String phoneNumber, String totalAmount, String transactionId); + +} diff --git a/src/main/java/com/example/demo/bo/Flow.java b/src/main/java/com/example/demo/bo/Flow.java new file mode 100644 index 0000000..79095db --- /dev/null +++ b/src/main/java/com/example/demo/bo/Flow.java @@ -0,0 +1,45 @@ +package com.example.demo.bo; + +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.TransactionsDAO; + +public abstract class Flow { + + + private String CheckRegisteredResponse=null; + private Boolean InitiateBool=false; + private String DebitResponse=null; + + public CustomerValidator customerValidator; + public DebitMoney debitMoney; + public CheckFeasibility checkFeasibility; + + public Flow(){} + + //GENERAL APIs FLOW SPLITTER + + public String CheckRegistered (String phoneNumber, String totalAmount,String mode){ + + if (customerValidator.Validate(phoneNumber, totalAmount)){ + AllocateTransactionId allocate=new AllocateTransactionId(phoneNumber,totalAmount,new TransactionsDAO()); + return allocate.Get_transactionID(mode); + }else{ + return "false"; + } + + } + + public String Inititate( String phoneNumber, String totalAmount, String transactionId ){ + + return checkFeasibility.CheckAccountBalance(phoneNumber, totalAmount, transactionId); + + } + + public String Debit(String phoneNumber, String totalAmount, String transactionId){ + + return debitMoney.Debit(phoneNumber, totalAmount, transactionId); + + } + +} + diff --git a/src/main/java/com/example/demo/bo/Paytm/AddMoney.java b/src/main/java/com/example/demo/bo/Paytm/AddMoney.java new file mode 100644 index 0000000..8d10f2e --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/AddMoney.java @@ -0,0 +1,90 @@ +package com.example.demo.bo.Paytm; +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.TransactionsDAO; +import com.example.demo.model.Paytm.AddMoneyrequest; +import com.paytm.pg.merchant.CheckSumServiceHelper; +import java.net.URL; +import java.util.Map; +import java.util.TreeMap; + + +public class AddMoney { + + + private AddMoneyrequest addMoneyrequest; + private String htmlResponse; + private CustomerDAO customer; + private TransactionsDAO transaction; + + public AddMoney(){} + + public AddMoney(String mobileNo, String txnAmount, String orderId, CustomerDAO cust, TransactionsDAO trans) { + this.addMoneyrequest=new AddMoneyrequest(mobileNo, txnAmount, orderId); + this.customer=new CustomerDAO(cust); + this.transaction=new TransactionsDAO(trans); + } + + public String getResponse() { + return htmlResponse; + } + + public void add_money() throws Exception { + + try { + + //retrieve Customer Data + customer.retrieveData(addMoneyrequest.getMobileNo()); + addMoneyrequest.setSso_token(customer.getAccessToken()); + addMoneyrequest.setCustId(customer.getCustomerId()); + + //Update tranasactions table: + transaction.updateStatus(addMoneyrequest.getOrderId(),"Adding_Money"); + + }catch (Exception e){e.printStackTrace();} + + create_html_from(); + + + } + + public void create_html_from(){ + try { + TreeMap paytmParams = new TreeMap(); + paytmParams.put("MID", addMoneyrequest.getMerchantMid()); + paytmParams.put("REQUEST_TYPE", "ADD_MONEY"); + paytmParams.put("SSO_TOKEN", addMoneyrequest.getSso_token()); + paytmParams.put("ORDER_ID", addMoneyrequest.getOrderId()); + paytmParams.put("CHANNEL_ID", addMoneyrequest.getChannelId()); + paytmParams.put("CUST_ID", addMoneyrequest.getCustId()); + paytmParams.put("MOBILE_NO", addMoneyrequest.getMobileNo()); + paytmParams.put("EMAIL", addMoneyrequest.getEmail()); + paytmParams.put("TXN_AMOUNT", addMoneyrequest.getTxnAmount()); + paytmParams.put("WEBSITE", addMoneyrequest.getWebsite()); + paytmParams.put("INDUSTRY_TYPE_ID", addMoneyrequest.getIndustryTypeId()); + paytmParams.put("CALLBACK_URL", addMoneyrequest.getCallbackUrl()); + String paytmChecksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(addMoneyrequest.getMerchantKey(), paytmParams); + StringBuilder outputHtml = new StringBuilder(); + outputHtml.append(""); + outputHtml.append(""); + outputHtml.append(""); + outputHtml.append("Merchant Checkout Page"); + outputHtml.append(""); + outputHtml.append(""); + outputHtml.append("

Please do not refresh this page...

"); + URL transactionURL = new URL("https://securegw-stage.paytm.in/theia/processTransaction"); + outputHtml.append("
"); + for (Map.Entry entry : paytmParams.entrySet()) { + outputHtml.append(""); + } + outputHtml.append(""); + outputHtml.append(""); + outputHtml.append(""); + outputHtml.append(""); + outputHtml.append(""); + htmlResponse = outputHtml.toString(); + }catch(Exception e){} + + } +} diff --git a/src/main/java/com/example/demo/bo/Paytm/AutoDebit.java b/src/main/java/com/example/demo/bo/Paytm/AutoDebit.java new file mode 100644 index 0000000..9c49638 --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/AutoDebit.java @@ -0,0 +1,125 @@ +package com.example.demo.bo.Paytm; + +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.DatabaseController; +import com.example.demo.dao.TransactionsDAO; +import com.example.demo.model.Paytm.AutoDebitRequest; +import com.example.demo.model.Paytm.TransactionStatusResponse; +import com.google.gson.Gson; +import com.paytm.pg.merchant.CheckSumServiceHelper; +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.TreeMap; +import java.util.logging.Logger; + +public class AutoDebit { +// for production +// URL transactionURL = new URL("https://securegw.paytm.in/order/directPay"); + + private static final Logger LOGGER = Logger.getLogger(DatabaseController.class.getName()); + + String responseData; + private CustomerDAO customer; + private TransactionsDAO transaction; + + AutoDebitRequest request; + public String getResponseData() { + return responseData; + } + + public AutoDebit(String number,String amount,String orderID,CustomerDAO cust, TransactionsDAO trans) { + this.request=new AutoDebitRequest(number,amount,orderID); + this.customer=new CustomerDAO(cust); + this.transaction=new TransactionsDAO(trans); + } + + public void auto_debit() { + + + try { + //retrieve state for given phone number + customer.retrieveData(request.getNumber()); + request.setAccessToken(customer.getAccessToken()); + request.setCustomerId(customer.getCustomerId()); + + accesdURL(); + + + TransactionStatus transactionStatus = new TransactionStatus(request.getOrderId()); + transactionStatus.transaction_status(); + //TODO handle response + LOGGER.info("T.Status"+responseData); + + + + Gson g=new Gson(); + TransactionStatusResponse transactionStatusResponse= g.fromJson(transactionStatus.getResponseData(),TransactionStatusResponse.class); + responseData=transactionStatusResponse.getSTATUS(); + + transaction.updateStatus(request.getOrderId(),responseData); + + + } catch (Exception exception) { + LOGGER.info("error"); + exception.printStackTrace(); + } + } + + public void accesdURL(){ + + + TreeMap paytmParams = new TreeMap(); + + paytmParams.put("ReqType", request.getReqType()); + // paytmParams.put("PREAUTH_ID", ""); // only in case of capture + paytmParams.put("SSOToken", request.getAccessToken()); + paytmParams.put("MID", request.getMID()); + paytmParams.put("TxnAmount", request.getTxn()); + //TODO device ip address; + paytmParams.put("AppIP", request.getAppIP()); + + paytmParams.put("OrderId", request.getOrderId()); + paytmParams.put("Currency", request.getCurrency()); + paytmParams.put("DeviceId", request.getNumber()); + paytmParams.put("PaymentMode", request.getPaymentMode()); + paytmParams.put("CustId", request.getCustomerId()); + paytmParams.put("IndustryType", request.getIndustryType()); + paytmParams.put("Channel", request.getChannel()); + paytmParams.put("AuthMode", request.getAuthMode()); + + try{ + URL transactionURL = new URL("https://securegw-stage.paytm.in/order/directPay"); + + String paytmChecksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(request.getMerchantKey(), paytmParams); + paytmParams.put("CheckSum", paytmChecksum); + + JSONObject obj = new JSONObject(paytmParams); + String postData = obj.toString(); + HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setUseCaches(false); + connection.setDoOutput(true); + + DataOutputStream requestWriter = new DataOutputStream(connection.getOutputStream()); + requestWriter.writeBytes(postData); + requestWriter.close(); + InputStream is = connection.getInputStream(); + BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); + if ((responseData = responseReader.readLine()) != null) { + System.out.append("Response Json = " + responseData); + } + System.out.append("Requested Json = " + postData + " "); + responseReader.close(); + + }catch (Exception e){} + + } + +} diff --git a/src/main/java/com/example/demo/bo/Paytm/CheckBalance.java b/src/main/java/com/example/demo/bo/Paytm/CheckBalance.java new file mode 100644 index 0000000..ce23058 --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/CheckBalance.java @@ -0,0 +1,119 @@ +package com.example.demo.bo.Paytm; +import com.example.demo.dao.CustomerDAO; +import com.example.demo.model.Paytm.CheckBalanceRequest; +import com.example.demo.model.Paytm.CheckBalanceResponse; +import com.example.demo.dao.DatabaseController; +import com.google.gson.Gson; +import com.paytm.pg.merchant.CheckSumServiceHelper; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.time.temporal.ChronoUnit; +import java.util.logging.Logger; + +public class CheckBalance { + + private String responseData; + private Boolean response=false; + private CustomerDAO customer; + CheckBalanceRequest request; + HttpURLConnection connection = null; + + public Boolean getResponse() { + return response; + } + + private static final Logger LOGGER = Logger.getLogger(DatabaseController.class.getName()); + + public CheckBalance() { + } + + public CheckBalance(String phonenumber, String bill, String orderId, CustomerDAO cust) { + this.request=new CheckBalanceRequest(phonenumber,bill,orderId); + this.customer=new CustomerDAO(cust); + } + + + public void setResponseData(String responseData) { + this.responseData = responseData; + } + + + public void check_balance(){ + + try { + //Getting access token from table + customer.retrieveData(request.getPhonenumber()); + request.setUserToken(customer.getAccessToken()); + + //POST request + accessURL(); + + //Evaluate response: + //TODO error handling for failure response + Gson g=new Gson(); + CheckBalanceResponse checkBalanceResponse= g.fromJson(responseData,CheckBalanceResponse.class); + if(checkBalanceResponse.getBody().getFundsSufficient().trim().equalsIgnoreCase("true")){ + response=true; + } + else{ + response=false; + } + + + } catch (Exception exception) { + + + } + + + + + } + + public void accessURL(){ + + try{ + String bodyTemp = "{\"userToken\": \"" + request.getUserToken() + "\",\"totalAmount\": \"" + request.getTotalAmount() + "\"," + + "\"mid\": \"" + request.getMid() + "\"}"; + + String checksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(request.getMERCHANT_KEY(), bodyTemp); + + String body = "{\"head\":{\"clientId\":\"merchant-perpule-stg\",\"version\":\"v1\",\"requestTimestamp\":\"Time\"," + + "\"channelId\":\"WEB\",\"signature\":\"" + checksum + "\"},\"body\":" + bodyTemp + "}"; + + URL url = new URL("https://securegw-stage.paytm.in/paymentservices/pay/consult"); + connection = (HttpURLConnection) url.openConnection(); + connection.setRequestMethod("POST"); + + connection.setRequestProperty("Content-Type", "application/json"); + connection.setUseCaches(false); + connection.setDoOutput(true); + + DataOutputStream wr = new DataOutputStream(connection.getOutputStream()); + wr.writeBytes(body); + wr.close(); + + InputStream is = connection.getInputStream(); + BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); + if ((responseData = responseReader.readLine()) != null) { + System.out.append("Response: " + responseData); + } + // System.out.append("Request: " + post_data + " "); + responseReader.close(); + LOGGER.info("INFO:"+responseData); + + }catch(Exception e){} + + } + + public String getResponseData() { + return responseData; + } + + +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/bo/Paytm/PaytmCheckFeasibility.java b/src/main/java/com/example/demo/bo/Paytm/PaytmCheckFeasibility.java new file mode 100644 index 0000000..ef020d4 --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/PaytmCheckFeasibility.java @@ -0,0 +1,20 @@ +package com.example.demo.bo.Paytm; + +import com.example.demo.bo.CheckFeasibility; +import com.example.demo.dao.CustomerDAO; + +public class PaytmCheckFeasibility extends CheckFeasibility { + public PaytmCheckFeasibility(){} + + @Override + public String CheckAccountBalance(String phoneNumber, String totalAmount, String transactionId){ + CheckBalance check=new CheckBalance(phoneNumber,totalAmount,transactionId,new CustomerDAO()); + check.check_balance(); + if (!check.getResponse()){ + return "false"; + } + else{ + return "true"; + } + } +} diff --git a/src/main/java/com/example/demo/bo/Paytm/PaytmCustomerValidator.java b/src/main/java/com/example/demo/bo/Paytm/PaytmCustomerValidator.java new file mode 100644 index 0000000..50ef028 --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/PaytmCustomerValidator.java @@ -0,0 +1,34 @@ +package com.example.demo.bo.Paytm; + +import com.example.demo.bo.CustomerValidator; +import com.example.demo.bo.AllocateTransactionId; +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.TransactionsDAO; + +public class PaytmCustomerValidator extends CustomerValidator { + + + public PaytmCustomerValidator(){ + + } + + @Override + public Boolean Validate(String phoneNumber, String totalAmount){ + CustomerDAO customer= new CustomerDAO(); + customer.retrieveData(phoneNumber); + if(customer.getAccessToken()==null){ + return false; + } + else { + ValidateToken token=new ValidateToken(phoneNumber,new CustomerDAO()); + token.validate_token(); + if (token.getResponseData().equalsIgnoreCase("true")){ + return true; + }else{ + return false; + } + + } + + } +} diff --git a/src/main/java/com/example/demo/bo/Paytm/PaytmDebitMoney.java b/src/main/java/com/example/demo/bo/Paytm/PaytmDebitMoney.java new file mode 100644 index 0000000..7b06c79 --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/PaytmDebitMoney.java @@ -0,0 +1,17 @@ +package com.example.demo.bo.Paytm; + +import com.example.demo.bo.DebitMoney; +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.TransactionsDAO; + +public class PaytmDebitMoney extends DebitMoney { + + public PaytmDebitMoney(){} + + @Override + public String Debit(String phoneNumber, String totalAmount, String transactionId){ + AutoDebit deb =new AutoDebit(phoneNumber,totalAmount,transactionId,new CustomerDAO(), new TransactionsDAO()); + deb.auto_debit(); + return deb.getResponseData(); + } +} diff --git a/src/main/java/com/example/demo/bo/Paytm/PaytmFlow.java b/src/main/java/com/example/demo/bo/Paytm/PaytmFlow.java new file mode 100644 index 0000000..0207698 --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/PaytmFlow.java @@ -0,0 +1,14 @@ +package com.example.demo.bo.Paytm; + +import com.example.demo.bo.Flow; + +public class PaytmFlow extends Flow { + + public PaytmFlow() + { + super.customerValidator = new PaytmCustomerValidator(); + super.debitMoney= new PaytmDebitMoney(); + super.checkFeasibility= new PaytmCheckFeasibility(); + } + +} diff --git a/src/main/java/com/example/demo/Refund.java b/src/main/java/com/example/demo/bo/Paytm/Refund.java similarity index 94% rename from src/main/java/com/example/demo/Refund.java rename to src/main/java/com/example/demo/bo/Paytm/Refund.java index 156c4fd..546d97d 100644 --- a/src/main/java/com/example/demo/Refund.java +++ b/src/main/java/com/example/demo/bo/Paytm/Refund.java @@ -1,5 +1,7 @@ -package com.example.demo; +package com.example.demo.bo.Paytm; +import com.example.demo.model.Paytm.TransactionStatusResponse; +import com.example.demo.model.Paytm.ValidateTokenResponse; import com.paytm.pg.merchant.CheckSumServiceHelper; import java.io.BufferedReader; @@ -28,7 +30,7 @@ public void setResponseData(String responseData) { ValidateTokenResponse valt; final String MERCHANT_MID = "Delvit07224170213556"; final String txnType = "REFUND"; - final String orderId = "ORDER_123456789"; + final String orderId = ""; final String txnId = txnstatres.getTXNID(); final String refId = valt.getMobile(); final String refundAmount = "1.00"; diff --git a/src/main/java/com/example/demo/RevokeAccess.java b/src/main/java/com/example/demo/bo/Paytm/RevokeAccess.java similarity index 95% rename from src/main/java/com/example/demo/RevokeAccess.java rename to src/main/java/com/example/demo/bo/Paytm/RevokeAccess.java index 86ffddc..65b327f 100644 --- a/src/main/java/com/example/demo/RevokeAccess.java +++ b/src/main/java/com/example/demo/bo/Paytm/RevokeAccess.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.bo.Paytm; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.InputStream; @@ -12,7 +12,7 @@ public class RevokeAccess { // for production // URL transactionURL = new URL("https://accounts.paytm.com/oauth2/accessToken/"); - String session_token = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; + String session_token = ""; public RevokeAccess(String session_token) { diff --git a/src/main/java/com/example/demo/SendOtp.java b/src/main/java/com/example/demo/bo/Paytm/SendOtp.java similarity index 50% rename from src/main/java/com/example/demo/SendOtp.java rename to src/main/java/com/example/demo/bo/Paytm/SendOtp.java index ae2a7a5..4a4919e 100644 --- a/src/main/java/com/example/demo/SendOtp.java +++ b/src/main/java/com/example/demo/bo/Paytm/SendOtp.java @@ -1,6 +1,9 @@ -package com.example.demo; +package com.example.demo.bo.Paytm; -import com.example.demo.Model.DatabaseController; +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.DatabaseController; +import com.example.demo.model.Paytm.SendOtpRequest; +import com.example.demo.model.Paytm.SendOtpResponse; import com.google.gson.Gson; import org.json.JSONObject; @@ -10,22 +13,16 @@ import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; import java.util.TreeMap; import java.util.logging.Logger; public class SendOtp { - String email = "xxxxxxxx@xxxxxx.xxx"; - String phone = "xxxxxxxxxx"; - String clientId = "merchant-perpule-stg"; - String scope = "wallet"; - String responseType = "token"; - String merchantKey = "&!vj74@Ri&g6U1TI"; - String responseData; + private static final Logger LOGGER = Logger.getLogger(DatabaseController.class.getName()); + private String responseData; + private SendOtpRequest request; + private CustomerDAO customer; public String getResponseData() { @@ -36,32 +33,57 @@ public void setResponseData(String responseData) { this.responseData = responseData; } - public SendOtp(String email, String phone) { - this.email = email; - this.phone = phone; + public SendOtp(String email, String phone, CustomerDAO cust) { + this.request=new SendOtpRequest(email, phone); + this.customer=new CustomerDAO(cust); } public void Send_OTP() { - - - TreeMap paytmParams = new TreeMap(); - paytmParams.put("email", email); - paytmParams.put("phone", phone); - paytmParams.put("clientId", clientId); - paytmParams.put("scope", scope); - paytmParams.put("responseType", responseType); - try { + //POST request to Paytm send OTP + accessURL(); + + //Saving state from response received for particular phone number + customer.retrieveData(request.getPhone()); + Gson g = new Gson(); + String state = g.fromJson(responseData, SendOtpResponse.class).getState(); + + //INSERTING ONLY IF NUMBER EXIST / ACCESS TOKEN ALREADY NOT AVAILABLE + if (customer.getAccessToken()==null) { + if (customer.getPhoneNumber()==null) { + customer.insertData(request.getPhone(),null,state,null,null); + } + else{ + customer.updateData(request.getPhone(),null,state,null,null); + } + } + + } catch (Exception exception) { + exception.printStackTrace(); + } + } + + private void accessURL(){ + + TreeMap paytmParams = new TreeMap(); + paytmParams.put("email", request.getEmail()); + paytmParams.put("phone", request.getPhone()); + paytmParams.put("clientId", request.getClientId()); + paytmParams.put("scope", request.getScope()); + paytmParams.put("responseType", request.getResponseType()); + + try{ URL transactionURL = new URL("https://accounts-uat.paytm.com/signin/otp"); + JSONObject obj = new JSONObject(paytmParams); String postData = obj.toString(); - + HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setUseCaches(false); connection.setDoOutput(true); - + DataOutputStream requestWriter = new DataOutputStream(connection.getOutputStream()); requestWriter.writeBytes(postData); requestWriter.close(); @@ -73,51 +95,8 @@ public void Send_OTP() { } System.out.append("Requested Json = " + postData + " "); responseReader.close(); + }catch (Exception e){} - //Saving state from response received for particular phone number - Connection conn = DatabaseController.getConnection(); - - - PreparedStatement getstmt=conn.prepareStatement("SELECT * FROM Customer WHERE PhoneNumber LIKE ?"); - getstmt.setString(1, "%"+phone+"%"); - ResultSet rs=getstmt.executeQuery(); - SQLTableEntry sl= new SQLTableEntry(); - sl.SQLRetrieve(rs); - - - //INSERTING ONLY IF NUMBER EXIST / ACCESS TOKEN ALREADY NOT AVAILABLE - if (sl.getAccessToken()==null) { - if (sl.getPhoneNumber()==null) { - Gson g = new Gson(); - String state = g.fromJson(responseData, SendOtpResponse.class).getState(); - PreparedStatement setstmt = conn.prepareStatement( - "INSERT INTO Customer (PhoneNumber, AccessToken, State) VALUES (?, ?,?);"); - setstmt.setString(1, phone); - setstmt.setString(2, null); - setstmt.setString(3, state); - setstmt.execute(); - } - else{ - Gson g = new Gson(); - String state = g.fromJson(responseData, SendOtpResponse.class).getState(); - PreparedStatement setstmt = conn.prepareStatement( - "UPDATE Customer SET AccessToken = ?, State = ? WHERE PhoneNumber LIKE ?;"); - setstmt.setString(1, null); - setstmt.setString(2, state); - setstmt.setString(3, "%"+phone+"%"); - setstmt.execute(); - - } - } - - - - - - - } catch (Exception exception) { - exception.printStackTrace(); - } } } diff --git a/src/main/java/com/example/demo/TransactionStatus.java b/src/main/java/com/example/demo/bo/Paytm/TransactionStatus.java similarity index 79% rename from src/main/java/com/example/demo/TransactionStatus.java rename to src/main/java/com/example/demo/bo/Paytm/TransactionStatus.java index 0169622..d87e0f1 100644 --- a/src/main/java/com/example/demo/TransactionStatus.java +++ b/src/main/java/com/example/demo/bo/Paytm/TransactionStatus.java @@ -1,5 +1,6 @@ -package com.example.demo; +package com.example.demo.bo.Paytm; +import com.example.demo.model.Paytm.TransactionStatusRequest; import com.paytm.pg.merchant.CheckSumServiceHelper; import org.json.JSONObject; @@ -12,28 +13,30 @@ import java.util.TreeMap; public class TransactionStatus { + + private TransactionStatusRequest request; + String responseData; + public TransactionStatus() { } - String merchantMid = "Delvit07224170213556"; - String orderId = "order1"; - String merchantKey = "&!vj74@Ri&g6U1TI"; - String responseData; + public TransactionStatus(String orderId) { + this.request = new TransactionStatusRequest(orderId); + } public String getResponseData() { return responseData;} - - public void transaction_status() { + public void transaction_status() { TreeMap paytmParams = new TreeMap(); - paytmParams.put("MID", merchantMid); - paytmParams.put("ORDERID", orderId); + paytmParams.put("MID", request.getMerchantMid()); + paytmParams.put("ORDERID", request.getOrderId()); try { URL transactionURL = new URL("https://securegw-stage.paytm.in/order/status"); - String paytmChecksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(merchantKey, paytmParams); + String paytmChecksum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(request.getMerchantKey(), paytmParams); paytmParams.put("CHECKSUMHASH", paytmChecksum); JSONObject obj = new JSONObject(paytmParams); String postData = "JsonData=" + obj.toString(); diff --git a/src/main/java/com/example/demo/ValidateOtp.java b/src/main/java/com/example/demo/bo/Paytm/ValidateOtp.java similarity index 52% rename from src/main/java/com/example/demo/ValidateOtp.java rename to src/main/java/com/example/demo/bo/Paytm/ValidateOtp.java index 2712bbd..c10389e 100644 --- a/src/main/java/com/example/demo/ValidateOtp.java +++ b/src/main/java/com/example/demo/bo/Paytm/ValidateOtp.java @@ -1,6 +1,9 @@ -package com.example.demo; +package com.example.demo.bo.Paytm; -import com.example.demo.Model.DatabaseController; +import com.example.demo.dao.CustomerDAO; +import com.example.demo.dao.DatabaseController; +import com.example.demo.model.Paytm.ValidateOtpRequest; +import com.example.demo.model.Paytm.ValidateOtpResponse; import com.google.gson.Gson; import org.json.JSONObject; @@ -11,72 +14,60 @@ import java.net.HttpURLConnection; import java.net.URL; import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.util.Base64; import java.util.TreeMap; public class ValidateOtp { - String phonenumber = "0"; - String otp = "xxxxxx"; - String state = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"; - String clientId = "merchant-perpule-stg"; - String clientSecret = "jlgBKygCagp6PKECMEbLBfCviJorleAj"; - + + private ValidateOtpRequest request; + private CustomerDAO customer; String responseData; public String getResponseData() { return responseData; } - public ValidateOtp(String number, String otp) { - this.phonenumber= number; - this.otp = otp; + public ValidateOtp(String number, String otp,CustomerDAO cust) { + this.request=new ValidateOtpRequest(number,otp); + this.customer=new CustomerDAO(cust); } - - public String getOtp() { - return otp; - } - - public void setOtp(String otp) { - this.otp = otp; - } - - public String getState() { - return state; - } - - public void setState(String state) { - this.state = state; - } + public void validate_OTP() { - + try { + + //retrieve state for given phone number + customer.retrieveData(request.getPhonenumber()); + request.setState(customer.getState()); + + //Hit Paytm API + accessURL(); + + //writing accesstoken to Customer Table + //TODO error handling for failure response + Connection conn = DatabaseController.getConnection(); + Gson g=new Gson(); + customer.updateData(request.getPhonenumber(), g.fromJson(responseData,ValidateOtpResponse.class).getAccess_token(), null, null, null); + + + } catch (Exception exception) { + exception.printStackTrace(); + } + } + + public void accessURL(){ + //TODO hard -coded auth with clientID String auth = "Basic " + "bWVyY2hhbnQtcGVycHVsZS1zdGc6amxnQkt5Z0NhZ3A2UEtFQ01FYkxCZkN2aUpvcmxlQWo="; - + TreeMap paytmParams = new TreeMap(); - paytmParams.put("otp", otp); + paytmParams.put("otp", request.getOtp()); + paytmParams.put("state", request.getState()); - //retrieve state for given phone number - try { - Connection conn = DatabaseController.getConnection(); - PreparedStatement getstmt = conn.prepareStatement("SELECT * FROM Customer WHERE PhoneNumber LIKE ?"); - getstmt.setString(1, "%" + phonenumber + "%"); - ResultSet rs = getstmt.executeQuery(); - SQLTableEntry sl = new SQLTableEntry(); - sl.SQLRetrieve(rs); - state=sl.getState(); - - }catch (Exception e){e.printStackTrace();} - paytmParams.put("state", state); - - try { - + try{ URL transactionURL = new URL("https://accounts-uat.paytm.com/signin/validate/otp"); - + JSONObject obj = new JSONObject(paytmParams); String postData = obj.toString(); HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); @@ -85,11 +76,11 @@ public void validate_OTP() { connection.addRequestProperty("Authorization", auth); connection.setUseCaches(false); connection.setDoOutput(true); - + DataOutputStream requestWriter = new DataOutputStream(connection.getOutputStream()); requestWriter.writeBytes(postData); requestWriter.close(); - + InputStream is = connection.getInputStream(); BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); if ((responseData = responseReader.readLine()) != null) { @@ -98,24 +89,7 @@ public void validate_OTP() { System.out.append("Requested Json = " + postData + " "); responseReader.close(); - //writing accesstoken - //TODO error handling for failure response - Connection conn = DatabaseController.getConnection(); - Gson g=new Gson(); - ValidateOtpResponse validateOtpResponse= g.fromJson(responseData,ValidateOtpResponse.class); - - PreparedStatement setstmt = conn.prepareStatement( - "UPDATE Customer SET AccessToken = ?, State = ? WHERE PhoneNumber LIKE ?;"); - setstmt.setString(1, validateOtpResponse.getAccess_token()); - setstmt.setString(2, null); - setstmt.setString(3, "%"+phonenumber+"%"); - setstmt.execute(); - - - - } catch (Exception exception) { - exception.printStackTrace(); - } + }catch(Exception e){} } } diff --git a/src/main/java/com/example/demo/bo/Paytm/ValidateToken.java b/src/main/java/com/example/demo/bo/Paytm/ValidateToken.java new file mode 100644 index 0000000..a460252 --- /dev/null +++ b/src/main/java/com/example/demo/bo/Paytm/ValidateToken.java @@ -0,0 +1,74 @@ +package com.example.demo.bo.Paytm; + + +import com.example.demo.dao.CustomerDAO; +import com.example.demo.model.Paytm.ValidateTokenRequest; +import com.example.demo.model.Paytm.ValidateTokenResponse; +import com.google.gson.Gson; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; + +public class ValidateToken { + + private ValidateTokenRequest request; + private String responseData; + private CustomerDAO customer; + + public ValidateToken(String phonenumber, CustomerDAO cust) { + this.request=new ValidateTokenRequest(phonenumber); + this.customer=new CustomerDAO(cust); + } + + + public void validate_token() { + try { + + customer.retrieveData(request.getPhonenumber()); + request.setSessionToken(customer.getAccessToken()); + + //HIT API + accessURL(); + + //Evaluate response: + //TODO error handling for failure response + Gson g=new Gson(); + ValidateTokenResponse validateTokenResponse= g.fromJson(responseData,ValidateTokenResponse.class); + customer.updateData(request.getPhonenumber(),customer.getAccessToken(),null,validateTokenResponse.getExpires(),validateTokenResponse.getId()); + + + //Affirmative response to data + responseData="true"; + + } catch (Exception exception) { + exception.printStackTrace(); + } + } + + public void accessURL(){ + try { + // TODO production URL transactionURL = new URL("https://accounts.paytm.com/user/details"); + java.net.URL transactionURL = new java.net.URL("https://accounts-uat.Paytm.com/user/details"); + HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); + connection.setRequestMethod("GET"); + connection.addRequestProperty("session_token", request.getSessionToken()); + connection.setUseCaches(false); + connection.setDoOutput(true); + + + InputStream is = connection.getInputStream(); + BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); + if ((responseData = responseReader.readLine()) != null) { + System.out.append("Response Json = " + responseData); + } + responseReader.close(); + }catch(Exception e){} + } + + public String getResponseData() { + return responseData; + } + +} diff --git a/src/main/java/com/example/demo/bo/PhonePe/CancelPaymentRequest.java b/src/main/java/com/example/demo/bo/PhonePe/CancelPaymentRequest.java new file mode 100644 index 0000000..6d7750e --- /dev/null +++ b/src/main/java/com/example/demo/bo/PhonePe/CancelPaymentRequest.java @@ -0,0 +1,56 @@ +package com.example.demo.bo.PhonePe; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +import static com.example.demo.bo.PhonePe.SHA256.SHA256; +public class CancelPaymentRequest { + public String getResponseData() { + return responseData; + } + public void setResponseData(String responseData) { + this.responseData = responseData; + } + public CancelPaymentRequest() { } + String responseData; + String merchantId = "M2306160483220675579140"; + String transactionId = "TX123456967859qwwww"; + String merchantOrderId = "M123456789"; + Integer amount = 1; + String instrumentType = "MOBILE"; + String instrumentReference = "7397430279"; + String message = "collect for XXX order"; + String email = "amitxxx75@gmail.com"; + Integer expiresIn = 180; + String storeId = "store1"; + String terminalId = "terminal1"; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public void cancelpaymentrequest_main(){ + + try { + URL transactionURL = new URL("https://mercury-uat.phonepe.com/v3/charge/"+merchantId+"/"+transactionId+"/cancel"); + + String xverify = SHA256( "/v3/charge/"+merchantId+"/"+transactionId+"/cancel" + salt_key) + "###" + salt_index; + HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("x-verify",xverify); + connection.setUseCaches(false); + connection.setDoOutput(true); + + InputStream is = connection.getInputStream(); + BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); + if ((responseData = responseReader.readLine()) != null) { + System.out.append("Response Json = " + responseData); + } + System.out.append("Requested Json = " + xverify + " "); + responseReader.close(); + } catch (Exception exception) { + exception.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/bo/PhonePe/CheckPaymentStatus.java b/src/main/java/com/example/demo/bo/PhonePe/CheckPaymentStatus.java new file mode 100644 index 0000000..eead3cb --- /dev/null +++ b/src/main/java/com/example/demo/bo/PhonePe/CheckPaymentStatus.java @@ -0,0 +1,63 @@ +package com.example.demo.bo.PhonePe; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; + +import static com.example.demo.bo.PhonePe.SHA256.SHA256; + +public class CheckPaymentStatus { + public String getResponseData() { + return responseData; + } + public void setResponseData(String responseData) { + this.responseData = responseData; + } + public CheckPaymentStatus() { } + String responseData; + String merchantId = "M2306160483220675579140"; + String transactionId ; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public void checkpaymentstatus_main(){ + + try { + URL transactionURL = new URL("https://mercury-uat.phonepe.com/v3/transaction/"+merchantId+"/"+transactionId+"/status"); + + String xverify = SHA256( "/v3/transaction/"+merchantId+"/"+transactionId+"/status" + salt_key) + "###" + salt_index; + HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); + connection.setRequestMethod("GET"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("x-verify",xverify); + connection.setUseCaches(false); + connection.setDoOutput(true); + + InputStream is = connection.getInputStream(); + BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); + + responseData = responseReader.readLine(); + /* + if (() != null) { + System.out.append("Response Json = " + responseData); + } + System.out.append("Requested Json = " + xverify + " ^^^^^^^^^^^^^^^^"); + responseReader.close(); + + */ + + + } catch (Exception exception) { + exception.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/bo/PhonePe/RemindPaymentRequest.java b/src/main/java/com/example/demo/bo/PhonePe/RemindPaymentRequest.java new file mode 100644 index 0000000..efb391e --- /dev/null +++ b/src/main/java/com/example/demo/bo/PhonePe/RemindPaymentRequest.java @@ -0,0 +1,56 @@ +package com.example.demo.bo.PhonePe; +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import static com.example.demo.bo.PhonePe.SHA256.SHA256; + +public class RemindPaymentRequest { + public String getResponseData() { + return responseData; + } + public void setResponseData(String responseData) { + this.responseData = responseData; + } + public RemindPaymentRequest() { } + String responseData; + String merchantId = "M2306160483220675579140"; + String transactionId = "TX123456967859qwwww"; + String merchantOrderId = "M123456789"; + Integer amount = 1; + String instrumentType = "MOBILE"; + String instrumentReference = "7397430279"; + String message = "collect for XXX order"; + String email = "amitxxx75@gmail.com"; + Integer expiresIn = 180; + String storeId = "store1"; + String terminalId = "terminal1"; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public void remindpaymentrequest_main(){ + + try { + URL transactionURL = new URL("https://mercury-uat.phonepe.com/v3/charge/"+merchantId+"/"+transactionId+"/remind"); + + String xverify = SHA256( "/v3/charge/"+merchantId+"/"+transactionId+"/remind" + salt_key) + "###" + salt_index; + HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("x-verify",xverify); + connection.setUseCaches(false); + connection.setDoOutput(true); + + InputStream is = connection.getInputStream(); + BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); + if ((responseData = responseReader.readLine()) != null) { + System.out.append("Response Json = " + responseData); + } + System.out.append("Requested Json = " + xverify + " "); + responseReader.close(); + } catch (Exception exception) { + exception.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/main/java/com/example/demo/bo/PhonePe/RequestPayment.java b/src/main/java/com/example/demo/bo/PhonePe/RequestPayment.java new file mode 100644 index 0000000..1768e29 --- /dev/null +++ b/src/main/java/com/example/demo/bo/PhonePe/RequestPayment.java @@ -0,0 +1,109 @@ +package com.example.demo.bo.PhonePe; + +import org.json.JSONObject; + +import java.io.BufferedReader; +import java.io.DataOutputStream; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.net.HttpURLConnection; +import java.net.URL; +import java.util.Base64; +import java.util.Random; +import java.util.TreeMap; + +import static com.example.demo.bo.PhonePe.SHA256.SHA256; +public class RequestPayment { + + + public String getResponseData() { + return responseData; + } + + public void setResponseData(String responseData) { + this.responseData = responseData; + } + + public RequestPayment() { } + + String responseData; + Random rand= new Random(); + String merchantId = "M2306160483220675579140 "; + //String transactionId = "TX123"+rand.nextInt(4000); + String transactionId; + String merchantOrderId = "M123456789"; + Integer amount = 1; + String instrumentType = "MOBILE"; + String instrumentReference = "7397430279"; + String message = "collect for XXX order"; + String email = "amitxxx75@gmail.com"; + Integer expiresIn = 180; + String storeId = "store1"; + String terminalId = "terminal1"; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public void requestpayment_main(String number, Integer totalamount){ + + TreeMap payload = new TreeMap(); + payload.put("merchantId", merchantId); + payload.put("transactionId", transactionId); + payload.put("merchantOrderId", merchantOrderId); + payload.put("amount", totalamount); + payload.put("instrumentType", instrumentType); + payload.put("instrumentReference", number); + payload.put("message", message); + payload.put("email", email); + payload.put("expiresIn", expiresIn); + payload.put("storeId", storeId); + payload.put("terminalId", terminalId); + + TreeMap body = new TreeMap(); + + try { + URL transactionURL = new URL("https://mercury-uat.phonepe.com/v3/charge"); + JSONObject obj = new JSONObject(payload); + String auth = obj.toString(); + String postData = Base64.getEncoder().encodeToString((auth).getBytes()); + String xverify = SHA256(postData+ "/v3/charge" + salt_key) + "###" + salt_index; + + body.put("request", postData); + JSONObject obj1 = new JSONObject(body); + String auth1 = obj1.toString(); + + HttpURLConnection connection = (HttpURLConnection) transactionURL.openConnection(); + connection.setRequestMethod("POST"); + connection.setRequestProperty("Content-Type", "application/json"); + connection.setRequestProperty("x-verify",xverify); + connection.setUseCaches(false); + connection.setDoOutput(true); + + DataOutputStream requestWriter = new DataOutputStream(connection.getOutputStream()); + requestWriter.writeBytes(auth1); + requestWriter.close(); + + InputStream is = connection.getInputStream(); + BufferedReader responseReader = new BufferedReader(new InputStreamReader(is)); + if ((responseData = responseReader.readLine()) != null) { + System.out.append("Response Json = " + responseData); + } + System.out.append("Requested Json = " + xverify + " "); + System.out.append("\nRequested Json = " + postData + " "); + responseReader.close(); + + } catch (Exception exception) { + exception.printStackTrace(); + } + + + } +} + diff --git a/src/main/java/com/example/demo/bo/PhonePe/RequestPaymentResponse.java b/src/main/java/com/example/demo/bo/PhonePe/RequestPaymentResponse.java new file mode 100644 index 0000000..e203e09 --- /dev/null +++ b/src/main/java/com/example/demo/bo/PhonePe/RequestPaymentResponse.java @@ -0,0 +1,109 @@ +package com.example.demo.bo.PhonePe; + +public class RequestPaymentResponse { + Data data; + + Boolean success; + String code; + String message; + + public RequestPaymentResponse(Data data, Boolean success, String code, String message) { + this.data = data; + this.success = success; + this.code = code; + this.message = message; + } + + public RequestPaymentResponse() { + + } + + public Data getData() { + return data; + } + + public void setData(Data data) { + this.data = data; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public class Data{ + String transactionId; + Integer amount; + String merchantId; + String mobileNumber; + String providerReferenceId; + + public Data(String transactionId, Integer amount, String merchantId, String mobileNumber, String providerReferenceId) { + this.transactionId = transactionId; + this.amount = amount; + this.merchantId = merchantId; + this.mobileNumber = mobileNumber; + this.providerReferenceId = providerReferenceId; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public Integer getAmount() { + return amount; + } + + public void setAmount(Integer amount) { + this.amount = amount; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public String getMobileNumber() { + return mobileNumber; + } + + public void setMobileNumber(String mobileNumber) { + this.mobileNumber = mobileNumber; + } + + public String getProviderReferenceId() { + return providerReferenceId; + } + + public void setProviderReferenceId(String providerReferenceId) { + this.providerReferenceId = providerReferenceId; + } + } + +} diff --git a/src/main/java/com/example/demo/bo/PhonePe/SHA256.java b/src/main/java/com/example/demo/bo/PhonePe/SHA256.java new file mode 100644 index 0000000..d840458 --- /dev/null +++ b/src/main/java/com/example/demo/bo/PhonePe/SHA256.java @@ -0,0 +1,29 @@ +package com.example.demo.bo.PhonePe; + +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +public class SHA256 { + + public static String SHA256(String input) { + try { + // Static getInstance method is called with hashing SHA + MessageDigest md = MessageDigest.getInstance("SHA-256"); + byte[] messageDigest = md.digest(input.getBytes()); + // Convert byte array into signum representation + BigInteger no = new BigInteger(1, messageDigest); + // Convert message digest into hex value + String hashtext = no.toString(16); + while (hashtext.length() < 32) { + hashtext = "0" + hashtext; + } + return hashtext; + } catch (NoSuchAlgorithmException e) { + System.out.println("Exception thrown" + + " for incorrect algorithm: " + e); + return null; + } + } + +} diff --git a/src/main/java/com/example/demo/dao/CustomerDAO.java b/src/main/java/com/example/demo/dao/CustomerDAO.java new file mode 100644 index 0000000..ef6649b --- /dev/null +++ b/src/main/java/com/example/demo/dao/CustomerDAO.java @@ -0,0 +1,133 @@ +package com.example.demo.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; + +public class CustomerDAO { + + private String PhoneNumber; + private String AccessToken; + private String State; + private String Expires; + private String CustomerId; + + + + public CustomerDAO() { + } + + public CustomerDAO(CustomerDAO cust) { + this.PhoneNumber = cust.getPhoneNumber(); + this.AccessToken = cust.getAccessToken(); + this.State = cust.getState(); + this.Expires= cust.getExpires(); + this.CustomerId= cust.getCustomerId(); + } + + public CustomerDAO(String phoneNumber, String accessToken, String state, String expires, String customerId) { + PhoneNumber = phoneNumber; + AccessToken = accessToken; + State = state; + Expires= expires; + CustomerId= customerId; + } + + + public void retrieveData(String phoneNumber){ + try { + + Connection conn = DatabaseController.getConnection(); + PreparedStatement getstmt = conn.prepareStatement("SELECT * FROM Customer WHERE PhoneNumber LIKE ?"); + getstmt.setString(1, "%" + phoneNumber + "%"); + ResultSet rs = getstmt.executeQuery(); + // iterate through the java resultset + while (rs.next()) { + PhoneNumber = rs.getString(1); + AccessToken = rs.getString(2); + State = rs.getString(3); + Expires=rs.getString(4); + CustomerId=rs.getString(5); + } + }catch (Exception e){ + + e.printStackTrace(); + } + } + + public void insertData(String phoneNumber, String accessToken, String state, String expires, String customerId){ + try{ + Connection conn = DatabaseController.getConnection(); + PreparedStatement setstmt = conn.prepareStatement( + "INSERT INTO Customer (PhoneNumber, AccessToken, State, Expires, CustomerId) VALUES (?, ?,?,?,?);"); + setstmt.setString(1, phoneNumber); + setstmt.setString(2, accessToken); + setstmt.setString(3, state); + setstmt.setString(4, expires); + setstmt.setString(5, customerId); + setstmt.execute(); + + }catch (Exception e){ + e.printStackTrace(); + } + } + + public void updateData(String phoneNumber, String accessToken, String state, String expires, String customerId){ + try{ + Connection conn = DatabaseController.getConnection(); + PreparedStatement setstmt = conn.prepareStatement( + "UPDATE Customer SET AccessToken = ?, State = ?,Expires=?, CustomerId=? WHERE PhoneNumber LIKE ?;"); + setstmt.setString(1, accessToken); + setstmt.setString(2, state); + setstmt.setString(3, expires); + setstmt.setString(4, customerId); + setstmt.setString(5, "%"+phoneNumber+"%"); + setstmt.execute(); + + }catch (Exception e){ + e.printStackTrace(); + } + } + + //We need to call retrieve function from getCustomerId method + + public String getCustomerId() { + return CustomerId; + } + + public void setCustomerId(String customerId) { + CustomerId = customerId; + } + + public String getPhoneNumber() { + return PhoneNumber; + } + + public void setPhoneNumber(String phoneNumber) { + PhoneNumber = phoneNumber; + } + + public String getAccessToken() { + return AccessToken; + } + + public void setAccessToken(String accessToken) { + AccessToken = accessToken; + } + + public String getState() { + return State; + } + + public void setState(String state) { + State = state; + } + + public String getExpires() { + return Expires; + } + + public void setExpires(String expires) { + Expires = expires; + } +} diff --git a/src/main/java/com/example/demo/Model/DatabaseController.java b/src/main/java/com/example/demo/dao/DatabaseController.java similarity index 64% rename from src/main/java/com/example/demo/Model/DatabaseController.java rename to src/main/java/com/example/demo/dao/DatabaseController.java index f12be09..f6e83b8 100644 --- a/src/main/java/com/example/demo/Model/DatabaseController.java +++ b/src/main/java/com/example/demo/dao/DatabaseController.java @@ -1,16 +1,7 @@ -package com.example.demo.Model; +package com.example.demo.dao; -import com.zaxxer.hikari.HikariConfig; -import com.zaxxer.hikari.HikariDataSource; - -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebListener; -import javax.sql.DataSource; import java.sql.Connection; import java.sql.DriverManager; -import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.logging.Logger; @@ -24,11 +15,7 @@ public class DatabaseController { private static Connection createConnectionPool() throws ClassNotFoundException,SQLException,IllegalAccessException,InstantiationException{ - String CLOUD_SQL_CONNECTION_NAME = System.getenv( - "CLOUD_SQL_INSTANCE_NAME"); - String DB_USER = System.getenv("DB_USER"); - String DB_PASS = System.getenv("DB_PASS"); - String DB_NAME = System.getenv("DB_NAME"); + String CLOUD_SQL_CONNECTION_NAME = System.getenv("CLOUD_SQL_INSTANCE_NAME"); LOGGER.info("Database Name:" + DB_NAME + "Database User:" + DB_USER + "Cloud Instance:" + CLOUD_SQL_CONNECTION_NAME); @@ -38,10 +25,7 @@ private static Connection createConnectionPool() throws ClassNotFoundException,S return conn; } - - - private DatabaseController(){} - + public static Connection getConnection() throws SQLException { if(url == null){ diff --git a/src/main/java/com/example/demo/dao/TransactionsDAO.java b/src/main/java/com/example/demo/dao/TransactionsDAO.java new file mode 100644 index 0000000..eed0d7a --- /dev/null +++ b/src/main/java/com/example/demo/dao/TransactionsDAO.java @@ -0,0 +1,149 @@ +package com.example.demo.dao; + +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.util.logging.Logger; + +public class TransactionsDAO { + + String TransactionId; + String PhoneNumber; + String Amount; + String Status; + String PaymentMode; + + private static final Logger LOGGER = Logger.getLogger(DatabaseController.class.getName()); + public TransactionsDAO() { + } + + public TransactionsDAO(String transactionId, String phoneNumber, String amount, String status,String paymentMode) { + TransactionId = transactionId; + PhoneNumber = phoneNumber; + Amount = amount; + Status = status; + PaymentMode= paymentMode; + } + + public TransactionsDAO(TransactionsDAO trans) { + this.TransactionId = trans.getTransactionId(); + this.PhoneNumber = trans.getPhoneNumber(); + this.Amount = trans.getAmount(); + this.Status = trans.getStatus(); + this.PaymentMode=trans.getPaymentMode(); + } + + public void retrieveData(String orderId){ + try { + + Connection conn = DatabaseController.getConnection(); + PreparedStatement getstmt = conn.prepareStatement("SELECT * FROM Transactions WHERE TransactionId LIKE ?"); + getstmt.setString(1, "%" + orderId + "%"); + ResultSet rs = getstmt.executeQuery(); + // iterate through the java resultset + while (rs.next()) { + PhoneNumber = rs.getString(2); + Amount = rs.getString(3); + Status=rs.getString(4); + PaymentMode=rs.getString(5); + } + }catch (Exception e){ + + e.printStackTrace(); + } + } + + public void insertData(String timestamp, String transactionId, String phoneNumber, String amount, String status, String paymentMode){ + try{ + Connection conn = DatabaseController.getConnection(); + PreparedStatement setstmt = conn.prepareStatement( + "INSERT INTO Transactions (TimeStamp, TransactionId, PhoneNumber, Amount, Status,PaymentMode) VALUES (?,?, ?,?,?,?);"); + setstmt.setString(1, timestamp); + setstmt.setString(2, transactionId); + setstmt.setString(3, phoneNumber); + setstmt.setString(4, amount); + setstmt.setString(5, status); + setstmt.setString(6,paymentMode); + setstmt.execute(); + + }catch (Exception e){ + e.printStackTrace(); + } + } + + /* + public void updateData(String transactionId, String phoneNumber, String amount, String status, String paymentMode){ + try{ + Connection conn = DatabaseController.getConnection(); + + PreparedStatement setstmt = conn.prepareStatement( + "UPDATE Transactions SET PhoneNumber=?, Amount=?, Status=?, PaymentMode=? WHERE TransactionId LIKE ?;"); + setstmt.setString(1, phoneNumber); + setstmt.setString(2, amount); + setstmt.setString(3, status); + setstmt.setString(4,paymentMode); + setstmt.setString(5, "%"+transactionId+"%"); + setstmt.execute(); + + }catch (Exception e){ + e.printStackTrace(); + } + } + + + */ + + /* + public String getlastID(){ + try{ + Connection conn = DatabaseController.getConnection(); + PreparedStatement getstmt = conn.prepareStatement("SELECT * FROM Transactions ORDER BY TransactionId DESC LIMIT 1"); + ResultSet rs = getstmt.executeQuery(); + String lastId=null; + while (rs.next()) { + lastId = rs.getString(1); + } + return lastId; + }catch (Exception e){return null;} + } + */ + + + public void updateStatus(String transactionId,String status){ + try{ + Connection conn = DatabaseController.getConnection(); + + PreparedStatement setstmt = conn.prepareStatement( + "UPDATE Transactions SET Status=? WHERE TransactionId LIKE ?;"); + setstmt.setString(1, status); + setstmt.setString(2, "%"+transactionId+"%"); + setstmt.execute(); + + }catch (Exception e){ + e.printStackTrace(); + } + + } + + + + public String getTransactionId() { + return TransactionId; + } + + public String getPhoneNumber() { + return PhoneNumber; + } + + public String getAmount() { + return Amount; + } + + public String getStatus() { + return Status; + } + + public String getPaymentMode() { + return PaymentMode; + } +} diff --git a/src/main/java/com/example/demo/model/Paytm/AddMoneyrequest.java b/src/main/java/com/example/demo/model/Paytm/AddMoneyrequest.java new file mode 100644 index 0000000..d6b0038 --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/AddMoneyrequest.java @@ -0,0 +1,83 @@ +package com.example.demo.model.Paytm; + +public class AddMoneyrequest { + + String merchantMid = "Delvit07224170213556"; + // Key in your staging and production MID available in your dashboard + String merchantKey = "&!vj74@Ri&g6U1TI"; + // Key in your staging and production merchant key available in your dashboard + String orderId = "0"; + String sso_token = "0"; + String channelId = "WAP"; + String custId = "0"; + String mobileNo = "0"; + String email = "amba.rohit8@gmail.com"; + String txnAmount = "0"; + String website = "WEBSTAGING"; + // This is the staging value. Production value is available in your dashboard + String industryTypeId = "Retail"; + // This is the staging value. Production value is available in your dashboard + String callbackUrl = "https://micro-s-perpule.appspot.com/callbackurl"; + + public AddMoneyrequest(String mobileNo, String txnAmount, String orderId) { + this.mobileNo = mobileNo; + this.txnAmount = txnAmount; + this.orderId=orderId; + } + + public void setSso_token(String sso_token) { + this.sso_token = sso_token; + } + + public void setCustId(String custId) { + this.custId = custId; + } + + public String getMerchantMid() { + return merchantMid; + } + + public String getMerchantKey() { + return merchantKey; + } + + public String getOrderId() { + return orderId; + } + + public String getSso_token() { + return sso_token; + } + + public String getChannelId() { + return channelId; + } + + public String getCustId() { + return custId; + } + + public String getMobileNo() { + return mobileNo; + } + + public String getEmail() { + return email; + } + + public String getTxnAmount() { + return txnAmount; + } + + public String getWebsite() { + return website; + } + + public String getIndustryTypeId() { + return industryTypeId; + } + + public String getCallbackUrl() { + return callbackUrl; + } +} diff --git a/src/main/java/com/example/demo/model/Paytm/AutoDebitRequest.java b/src/main/java/com/example/demo/model/Paytm/AutoDebitRequest.java new file mode 100644 index 0000000..f9cf3aa --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/AutoDebitRequest.java @@ -0,0 +1,105 @@ +package com.example.demo.model.Paytm; + +public class AutoDebitRequest { + + private String merchantKey = "&!vj74@Ri&g6U1TI"; + private String number; + private String txn; + private String accessToken; + private String orderId; + private String CustomerId; + private String ReqType="WITHDRAW"; + private String MID="Delvit07224170213556"; + private String AppIP="100.108.170.13"; + private String Currency="INR"; + private String PaymentMode="PPI"; + private String IndustryType="Retail"; + private String Channel="WAP"; + private String AuthMode="USRPWD"; + + public AutoDebitRequest() { + } + + public AutoDebitRequest(String number, String txn, String orderId) { + this.number = number; + this.txn = txn; + this.orderId = orderId; + } + + public String getNumber() { + return number; + } + + public void setNumber(String number) { + this.number = number; + } + + public String getTxn() { + return txn; + } + + public void setTxn(String txn) { + this.txn = txn; + } + + public String getAccessToken() { + return accessToken; + } + + public void setAccessToken(String accessToken) { + this.accessToken = accessToken; + } + + public String getOrderId() { + return orderId; + } + + public void setOrderId(String orderId) { + this.orderId = orderId; + } + + public String getCustomerId() { + return CustomerId; + } + + public void setCustomerId(String customerId) { + CustomerId = customerId; + } + + public String getMerchantKey() { + return merchantKey; + } + + public String getReqType() { + return ReqType; + } + + public String getMID() { + return MID; + } + + public String getAppIP() { + return AppIP; + } + + public String getCurrency() { + return Currency; + } + + public String getPaymentMode() { + return PaymentMode; + } + + public String getIndustryType() { + return IndustryType; + } + + public String getChannel() { + return Channel; + } + + public String getAuthMode() { + return AuthMode; + } +} + diff --git a/src/main/java/com/example/demo/AutoDebitResponse.java b/src/main/java/com/example/demo/model/Paytm/AutoDebitResponse.java similarity index 98% rename from src/main/java/com/example/demo/AutoDebitResponse.java rename to src/main/java/com/example/demo/model/Paytm/AutoDebitResponse.java index 715258d..94314dc 100644 --- a/src/main/java/com/example/demo/AutoDebitResponse.java +++ b/src/main/java/com/example/demo/model/Paytm/AutoDebitResponse.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.model.Paytm; public class AutoDebitResponse { String TxnId; diff --git a/src/main/java/com/example/demo/model/Paytm/CheckBalanceRequest.java b/src/main/java/com/example/demo/model/Paytm/CheckBalanceRequest.java new file mode 100644 index 0000000..89765fd --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/CheckBalanceRequest.java @@ -0,0 +1,46 @@ +package com.example.demo.model.Paytm; + +public class CheckBalanceRequest { + + + private String mid = "Delvit07224170213556"; + private String orderId = "0"; + private String userToken = "0"; + private String totalAmount = "0.00"; + private String MERCHANT_KEY = "&!vj74@Ri&g6U1TI"; + private String phonenumber="0"; + + public CheckBalanceRequest(String phonenumber, String totalAmount, String orderId) { + this.orderId = orderId; + this.phonenumber = phonenumber; + this.totalAmount = totalAmount; + } + + public void setUserToken(String userToken) { + this.userToken = userToken; + } + + public String getMid() { + return mid; + } + + public String getOrderId() { + return orderId; + } + + public String getUserToken() { + return userToken; + } + + public String getTotalAmount() { + return totalAmount; + } + + public String getMERCHANT_KEY() { + return MERCHANT_KEY; + } + + public String getPhonenumber() { + return phonenumber; + } +} diff --git a/src/main/java/com/example/demo/CheckBalanceResponse.java b/src/main/java/com/example/demo/model/Paytm/CheckBalanceResponse.java similarity index 99% rename from src/main/java/com/example/demo/CheckBalanceResponse.java rename to src/main/java/com/example/demo/model/Paytm/CheckBalanceResponse.java index 849da7c..1afe150 100644 --- a/src/main/java/com/example/demo/CheckBalanceResponse.java +++ b/src/main/java/com/example/demo/model/Paytm/CheckBalanceResponse.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.model.Paytm; public class CheckBalanceResponse { Head head; diff --git a/src/main/java/com/example/demo/model/Paytm/RefundRequest.java b/src/main/java/com/example/demo/model/Paytm/RefundRequest.java new file mode 100644 index 0000000..6535275 --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/RefundRequest.java @@ -0,0 +1,6 @@ +package com.example.demo.model.Paytm; + +public class RefundRequest { + + +} diff --git a/src/main/java/com/example/demo/RefundResponse.java b/src/main/java/com/example/demo/model/Paytm/RefundResponse.java similarity index 50% rename from src/main/java/com/example/demo/RefundResponse.java rename to src/main/java/com/example/demo/model/Paytm/RefundResponse.java index c0d40d2..96a1d13 100644 --- a/src/main/java/com/example/demo/RefundResponse.java +++ b/src/main/java/com/example/demo/model/Paytm/RefundResponse.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.model.Paytm; public class RefundResponse { diff --git a/src/main/java/com/example/demo/model/Paytm/SendOtpRequest.java b/src/main/java/com/example/demo/model/Paytm/SendOtpRequest.java new file mode 100644 index 0000000..f66e082 --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/SendOtpRequest.java @@ -0,0 +1,39 @@ +package com.example.demo.model.Paytm; + +public class SendOtpRequest { + private String email = ""; + private String phone = ""; + private String clientId = "merchant-perpule-stg"; + private String scope = "wallet"; + private String responseType = "token"; + private String merchantKey = "&!vj74@Ri&g6U1TI"; + + public SendOtpRequest(String email, String phone) { + this.email = email; + this.phone = phone; + } + + public String getEmail() { + return email; + } + + public String getPhone() { + return phone; + } + + public String getClientId() { + return clientId; + } + + public String getScope() { + return scope; + } + + public String getResponseType() { + return responseType; + } + + public String getMerchantKey() { + return merchantKey; + } +} diff --git a/src/main/java/com/example/demo/SendOtpResponse.java b/src/main/java/com/example/demo/model/Paytm/SendOtpResponse.java similarity index 96% rename from src/main/java/com/example/demo/SendOtpResponse.java rename to src/main/java/com/example/demo/model/Paytm/SendOtpResponse.java index 0a4a226..53cb000 100644 --- a/src/main/java/com/example/demo/SendOtpResponse.java +++ b/src/main/java/com/example/demo/model/Paytm/SendOtpResponse.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.model.Paytm; public class SendOtpResponse { private String status; diff --git a/src/main/java/com/example/demo/model/Paytm/TransactionStatusRequest.java b/src/main/java/com/example/demo/model/Paytm/TransactionStatusRequest.java new file mode 100644 index 0000000..e79fef8 --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/TransactionStatusRequest.java @@ -0,0 +1,24 @@ +package com.example.demo.model.Paytm; + +public class TransactionStatusRequest { + + String merchantMid = "Delvit07224170213556"; + String orderId = "0"; + String merchantKey = "&!vj74@Ri&g6U1TI"; + + public TransactionStatusRequest(String orderId) { + this.orderId = orderId; + } + + public String getMerchantMid() { + return merchantMid; + } + + public String getOrderId() { + return orderId; + } + + public String getMerchantKey() { + return merchantKey; + } +} diff --git a/src/main/java/com/example/demo/TransactionStatusResponse.java b/src/main/java/com/example/demo/model/Paytm/TransactionStatusResponse.java similarity index 98% rename from src/main/java/com/example/demo/TransactionStatusResponse.java rename to src/main/java/com/example/demo/model/Paytm/TransactionStatusResponse.java index 26f72e4..0b8e800 100644 --- a/src/main/java/com/example/demo/TransactionStatusResponse.java +++ b/src/main/java/com/example/demo/model/Paytm/TransactionStatusResponse.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.model.Paytm; public class TransactionStatusResponse { String TXNID; diff --git a/src/main/java/com/example/demo/model/Paytm/ValidateOtpRequest.java b/src/main/java/com/example/demo/model/Paytm/ValidateOtpRequest.java new file mode 100644 index 0000000..c7e52d6 --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/ValidateOtpRequest.java @@ -0,0 +1,32 @@ +package com.example.demo.model.Paytm; + +public class ValidateOtpRequest { + + private String phonenumber = "0"; + private String otp = ""; + private String state = ""; + //private String clientId = "merchant-perpule-stg"; + //private String clientSecret = "jlgBKygCagp6PKECMEbLBfCviJorleAj"; + + public ValidateOtpRequest(String phonenumber, String otp) { + this.phonenumber = phonenumber; + this.otp = otp; + } + + public void setState(String state) { + this.state = state; + } + + public String getPhonenumber() { + return phonenumber; + } + + public String getOtp() { + return otp; + } + + public String getState() { + return state; + } + +} diff --git a/src/main/java/com/example/demo/ValidateOtpResponse.java b/src/main/java/com/example/demo/model/Paytm/ValidateOtpResponse.java similarity index 96% rename from src/main/java/com/example/demo/ValidateOtpResponse.java rename to src/main/java/com/example/demo/model/Paytm/ValidateOtpResponse.java index bf727bb..f186faa 100644 --- a/src/main/java/com/example/demo/ValidateOtpResponse.java +++ b/src/main/java/com/example/demo/model/Paytm/ValidateOtpResponse.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.model.Paytm; public class ValidateOtpResponse { private String access_token; diff --git a/src/main/java/com/example/demo/model/Paytm/ValidateTokenRequest.java b/src/main/java/com/example/demo/model/Paytm/ValidateTokenRequest.java new file mode 100644 index 0000000..74971a7 --- /dev/null +++ b/src/main/java/com/example/demo/model/Paytm/ValidateTokenRequest.java @@ -0,0 +1,22 @@ +package com.example.demo.model.Paytm; + +public class ValidateTokenRequest { + private String phonenumber=""; + private String sessionToken = ""; + + public ValidateTokenRequest(String phonenumber) { + this.phonenumber = phonenumber; + } + + public void setSessionToken(String sessionToken) { + this.sessionToken = sessionToken; + } + + public String getPhonenumber() { + return phonenumber; + } + + public String getSessionToken() { + return sessionToken; + } +} diff --git a/src/main/java/com/example/demo/ValidateTokenResponse.java b/src/main/java/com/example/demo/model/Paytm/ValidateTokenResponse.java similarity index 95% rename from src/main/java/com/example/demo/ValidateTokenResponse.java rename to src/main/java/com/example/demo/model/Paytm/ValidateTokenResponse.java index 4a61942..f11e217 100644 --- a/src/main/java/com/example/demo/ValidateTokenResponse.java +++ b/src/main/java/com/example/demo/model/Paytm/ValidateTokenResponse.java @@ -1,4 +1,4 @@ -package com.example.demo; +package com.example.demo.model.Paytm; public class ValidateTokenResponse { diff --git a/src/main/java/com/example/demo/model/PhonePe/CancelPaymentRequest.java b/src/main/java/com/example/demo/model/PhonePe/CancelPaymentRequest.java new file mode 100644 index 0000000..32d670f --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/CancelPaymentRequest.java @@ -0,0 +1,47 @@ +package com.example.demo.model.PhonePe; + +public class CancelPaymentRequest { + String merchantId = "M2306160483220675579140"; + String transactionId = "0"; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public CancelPaymentRequest(String merchantId, String transactionId, String salt_key, String salt_index) { + this.merchantId = merchantId; + this.transactionId = transactionId; + this.salt_key = salt_key; + this.salt_index = salt_index; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public String getSalt_key() { + return salt_key; + } + + public void setSalt_key(String salt_key) { + this.salt_key = salt_key; + } + + public String getSalt_index() { + return salt_index; + } + + public void setSalt_index(String salt_index) { + this.salt_index = salt_index; + } +} diff --git a/src/main/java/com/example/demo/model/PhonePe/CancelPaymentResponse.java b/src/main/java/com/example/demo/model/PhonePe/CancelPaymentResponse.java new file mode 100644 index 0000000..584924a --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/CancelPaymentResponse.java @@ -0,0 +1,49 @@ +package com.example.demo.model.PhonePe; + +public class CancelPaymentResponse { + Data data; + + Boolean success; + String code; + String message; + + public CancelPaymentResponse(Data data, Boolean success, String code, String message) { + this.data = data; + this.success = success; + this.code = code; + this.message = message; + } + + + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public class Data{} + +} + + + + diff --git a/src/main/java/com/example/demo/model/PhonePe/CheckPaymentSatusRequest.java b/src/main/java/com/example/demo/model/PhonePe/CheckPaymentSatusRequest.java new file mode 100644 index 0000000..11c262d --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/CheckPaymentSatusRequest.java @@ -0,0 +1,51 @@ +package com.example.demo.model.PhonePe; + +public class CheckPaymentSatusRequest { + String merchantId = "M2306160483220675579140"; + String transactionId = "0"; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public CheckPaymentSatusRequest(String merchantId, String transactionId, String salt_key, String salt_index) { + this.merchantId = merchantId; + this.transactionId = transactionId; + this.salt_key = salt_key; + this.salt_index = salt_index; + } + + public CheckPaymentSatusRequest() { + + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public String getSalt_key() { + return salt_key; + } + + public void setSalt_key(String salt_key) { + this.salt_key = salt_key; + } + + public String getSalt_index() { + return salt_index; + } + + public void setSalt_index(String salt_index) { + this.salt_index = salt_index; + } +} diff --git a/src/main/java/com/example/demo/model/PhonePe/CheckPaymentStatusResponse.java b/src/main/java/com/example/demo/model/PhonePe/CheckPaymentStatusResponse.java new file mode 100644 index 0000000..99e6c4d --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/CheckPaymentStatusResponse.java @@ -0,0 +1,122 @@ +package com.example.demo.model.PhonePe; + +public class CheckPaymentStatusResponse { + Data data; + + Boolean success; + String code; + String message; + + public CheckPaymentStatusResponse(Data data, Boolean success, String code, String message) { + this.data = data; + this.success = success; + this.code = code; + this.message = message; + } + + public CheckPaymentStatusResponse() { + + } + + public Data getData() { + return data; + } + + public void setData(Data data) { + this.data = data; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public class Data{ + String transactionId; + Integer amount; + String merchantId; + String providerReferenceId; + String paymentState; + String payResponseCode; + + public Data(String transactionId, Integer amount, String merchantId, String providerReferenceId, String paymentState, String payResponseCode) { + this.transactionId = transactionId; + this.amount = amount; + this.merchantId = merchantId; + this.providerReferenceId = providerReferenceId; + this.paymentState = paymentState; + this.payResponseCode = payResponseCode; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public Integer getAmount() { + return amount; + } + + public void setAmount(Integer amount) { + this.amount = amount; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + + public String getProviderReferenceId() { + return providerReferenceId; + } + + public void setProviderReferenceId(String providerReferenceId) { + this.providerReferenceId = providerReferenceId; + } + + public String getPaymentState() { + return paymentState; + } + + public void setPaymentState(String paymentState) { + this.paymentState = paymentState; + } + + public String getPayResponseCode() { + return payResponseCode; + } + + public void setPayResponseCode(String payResponseCode) { + this.payResponseCode = payResponseCode; + } + } + +} + + diff --git a/src/main/java/com/example/demo/model/PhonePe/RemindPaymentRequest.java b/src/main/java/com/example/demo/model/PhonePe/RemindPaymentRequest.java new file mode 100644 index 0000000..46eba4a --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/RemindPaymentRequest.java @@ -0,0 +1,47 @@ +package com.example.demo.model.PhonePe; + +public class RemindPaymentRequest { + String merchantId = "M2306160483220675579140"; + String transactionId = "0"; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public RemindPaymentRequest(String merchantId, String transactionId, String salt_key, String salt_index) { + this.merchantId = merchantId; + this.transactionId = transactionId; + this.salt_key = salt_key; + this.salt_index = salt_index; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public String getSalt_key() { + return salt_key; + } + + public void setSalt_key(String salt_key) { + this.salt_key = salt_key; + } + + public String getSalt_index() { + return salt_index; + } + + public void setSalt_index(String salt_index) { + this.salt_index = salt_index; + } +} diff --git a/src/main/java/com/example/demo/model/PhonePe/RemindPaymentResponse.java b/src/main/java/com/example/demo/model/PhonePe/RemindPaymentResponse.java new file mode 100644 index 0000000..462ef0d --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/RemindPaymentResponse.java @@ -0,0 +1,27 @@ +package com.example.demo.model.PhonePe; + +public class RemindPaymentResponse { + Boolean success; + String code; + + public RemindPaymentResponse(Boolean success, String code) { + this.success = success; + this.code = code; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } +} diff --git a/src/main/java/com/example/demo/model/PhonePe/RequestPaymentRequest.java b/src/main/java/com/example/demo/model/PhonePe/RequestPaymentRequest.java new file mode 100644 index 0000000..3a62eff --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/RequestPaymentRequest.java @@ -0,0 +1,76 @@ +package com.example.demo.model.PhonePe; + +public class RequestPaymentRequest { + String merchantId = "M2306160483220675579140"; + String transactionId = "0"; + String merchantOrderId = "0"; + Integer amount = 100; + String instrumentType = "MOBILE"; + String instrumentReference = "7397430279"; + String message = "collect for XXX order"; + String email = "amitxxx75@gmail.com"; + Integer expiresIn = 180; + String storeId = "store1"; + String terminalId = "terminal1"; + String salt_key="8289e078-be0b-484d-ae60-052f117f8deb"; + String salt_index="1"; + + public RequestPaymentRequest(String instrumentReference) { + this.instrumentReference = instrumentReference; + } + + public String getMerchantId() { + return merchantId; + } + + public String getTransactionId() { + return transactionId; + } + + public String getMerchantOrderId() { + return merchantOrderId; + } + + public Integer getAmount() { + return amount; + } + + public String getInstrumentType() { + return instrumentType; + } + + public String getInstrumentReference() { + return instrumentReference; + } + + public String getMessage() { + return message; + } + + public String getEmail() { + return email; + } + + public Integer getExpiresIn() { + return expiresIn; + } + + public String getStoreId() { + return storeId; + } + + public String getTerminalId() { + return terminalId; + } + + public String getSalt_key() { + return salt_key; + } + + public String getSalt_index() { + return salt_index; + } + + + +} diff --git a/src/main/java/com/example/demo/model/PhonePe/RequestPaymentResponse.java b/src/main/java/com/example/demo/model/PhonePe/RequestPaymentResponse.java new file mode 100644 index 0000000..7d82214 --- /dev/null +++ b/src/main/java/com/example/demo/model/PhonePe/RequestPaymentResponse.java @@ -0,0 +1,105 @@ +package com.example.demo.model.PhonePe; + +public class RequestPaymentResponse { + Data data; + + Boolean success; + String code; + String message; + + public RequestPaymentResponse(Data data, Boolean success, String code, String message) { + this.data = data; + this.success = success; + this.code = code; + this.message = message; + } + + public Data getData() { + return data; + } + + public void setData(Data data) { + this.data = data; + } + + public Boolean getSuccess() { + return success; + } + + public void setSuccess(Boolean success) { + this.success = success; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public class Data{ + String transactionId; + Integer amount; + String merchantId; + String mobileNumber; + String providerReferenceId; + + public Data(String transactionId, Integer amount, String merchantId, String mobileNumber, String providerReferenceId) { + this.transactionId = transactionId; + this.amount = amount; + this.merchantId = merchantId; + this.mobileNumber = mobileNumber; + this.providerReferenceId = providerReferenceId; + } + + public String getTransactionId() { + return transactionId; + } + + public void setTransactionId(String transactionId) { + this.transactionId = transactionId; + } + + public Integer getAmount() { + return amount; + } + + public void setAmount(Integer amount) { + this.amount = amount; + } + + public String getMerchantId() { + return merchantId; + } + + public void setMerchantId(String merchantId) { + this.merchantId = merchantId; + } + + public String getMobileNumber() { + return mobileNumber; + } + + public void setMobileNumber(String mobileNumber) { + this.mobileNumber = mobileNumber; + } + + public String getProviderReferenceId() { + return providerReferenceId; + } + + public void setProviderReferenceId(String providerReferenceId) { + this.providerReferenceId = providerReferenceId; + } + } + +}