diff --git a/pom.xml b/pom.xml
index 411b635..a234b40 100644
--- a/pom.xml
+++ b/pom.xml
@@ -16,7 +16,7 @@
payment integration with paytm
- 1.8
+ 11
diff --git a/src/main/java/com/javatechie/spring/paytm/api/PaymentController.java b/src/main/java/com/javatechie/spring/paytm/api/PaymentController.java
index 473844a..3bfd5f5 100644
--- a/src/main/java/com/javatechie/spring/paytm/api/PaymentController.java
+++ b/src/main/java/com/javatechie/spring/paytm/api/PaymentController.java
@@ -5,6 +5,7 @@
import javax.servlet.http.HttpServletRequest;
+import com.paytm.pg.merchant.PaytmChecksum;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Controller;
@@ -14,85 +15,81 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
-import com.paytm.pg.merchant.CheckSumServiceHelper;
-
@Controller
public class PaymentController {
-
- @Autowired
- private PaytmDetails paytmDetails;
- @Autowired
- private Environment env;
-
- @GetMapping("/")
- public String home() {
- return "home";
- }
-
- @PostMapping(value = "/pgredirect")
- public ModelAndView getRedirect(@RequestParam(name = "CUST_ID") String customerId,
- @RequestParam(name = "TXN_AMOUNT") String transactionAmount,
- @RequestParam(name = "ORDER_ID") String orderId) throws Exception {
-
- ModelAndView modelAndView = new ModelAndView("redirect:" + paytmDetails.getPaytmUrl());
- TreeMap parameters = new TreeMap<>();
- paytmDetails.getDetails().forEach((k, v) -> parameters.put(k, v));
- parameters.put("MOBILE_NO", env.getProperty("paytm.mobile"));
- parameters.put("EMAIL", env.getProperty("paytm.email"));
- parameters.put("ORDER_ID", orderId);
- parameters.put("TXN_AMOUNT", transactionAmount);
- parameters.put("CUST_ID", customerId);
- String checkSum = getCheckSum(parameters);
- parameters.put("CHECKSUMHASH", checkSum);
- modelAndView.addAllObjects(parameters);
- return modelAndView;
- }
-
-
- @PostMapping(value = "/pgresponse")
- public String getResponseRedirect(HttpServletRequest request, Model model) {
-
- Map mapData = request.getParameterMap();
- TreeMap parameters = new TreeMap();
- mapData.forEach((key, val) -> parameters.put(key, val[0]));
- String paytmChecksum = "";
- if (mapData.containsKey("CHECKSUMHASH")) {
- paytmChecksum = mapData.get("CHECKSUMHASH")[0];
- }
- String result;
-
- boolean isValideChecksum = false;
- System.out.println("RESULT : "+parameters.toString());
- try {
- isValideChecksum = validateCheckSum(parameters, paytmChecksum);
- if (isValideChecksum && parameters.containsKey("RESPCODE")) {
- if (parameters.get("RESPCODE").equals("01")) {
- result = "Payment Successful";
- } else {
- result = "Payment Failed";
- }
- } else {
- result = "Checksum mismatched";
- }
- } catch (Exception e) {
- result = e.toString();
- }
- model.addAttribute("result",result);
- parameters.remove("CHECKSUMHASH");
- model.addAttribute("parameters",parameters);
- return "report";
- }
-
- private boolean validateCheckSum(TreeMap parameters, String paytmChecksum) throws Exception {
- return CheckSumServiceHelper.getCheckSumServiceHelper().verifycheckSum(paytmDetails.getMerchantKey(),
- parameters, paytmChecksum);
- }
-
-
- private String getCheckSum(TreeMap parameters) throws Exception {
- return CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(paytmDetails.getMerchantKey(), parameters);
- }
-
-
-
+
+ @Autowired
+ private PaytmDetails paytmDetails;
+ @Autowired
+ private Environment env;
+
+ @GetMapping("/")
+ public String home() {
+ return "home";
+ }
+
+ @PostMapping(value = "/pgredirect")
+ public ModelAndView getRedirect(@RequestParam(name = "CUST_ID") String customerId,
+ @RequestParam(name = "TXN_AMOUNT") String transactionAmount,
+ @RequestParam(name = "ORDER_ID") String orderId) throws Exception {
+
+ ModelAndView modelAndView = new ModelAndView("redirect:" + paytmDetails.getPaytmUrl());
+ TreeMap parameters = new TreeMap<>();
+ paytmDetails.getDetails().forEach((k, v) -> parameters.put(k, v));
+ parameters.put("MOBILE_NO", env.getProperty("paytm.mobile"));
+ parameters.put("EMAIL", env.getProperty("paytm.email"));
+ parameters.put("ORDER_ID", orderId);
+ parameters.put("TXN_AMOUNT", transactionAmount);
+ parameters.put("CUST_ID", customerId);
+ String checkSum = getCheckSum(parameters);
+ parameters.put("CHECKSUMHASH", checkSum);
+ modelAndView.addAllObjects(parameters);
+ return modelAndView;
+ }
+
+
+ @PostMapping(value = "/pgresponse")
+ public String getResponseRedirect(HttpServletRequest request, Model model) {
+
+ Map mapData = request.getParameterMap();
+ TreeMap parameters = new TreeMap();
+ mapData.forEach((key, val) -> parameters.put(key, val[0]));
+ String paytmChecksum = "";
+ if (mapData.containsKey("CHECKSUMHASH")) {
+ paytmChecksum = mapData.get("CHECKSUMHASH")[0];
+ }
+ String result;
+
+ boolean isValideChecksum = false;
+ System.out.println("RESULT : " + parameters.toString());
+ try {
+ isValideChecksum = validateCheckSum(parameters, paytmChecksum);
+ if (isValideChecksum && parameters.containsKey("RESPCODE")) {
+ if (parameters.get("RESPCODE").equals("01")) {
+ result = "Payment Successful";
+ } else {
+ result = "Payment Failed";
+ }
+ } else {
+ result = "Checksum mismatched";
+ }
+ } catch (Exception e) {
+ result = e.toString();
+ }
+ model.addAttribute("result", result);
+ parameters.remove("CHECKSUMHASH");
+ model.addAttribute("parameters", parameters);
+ return "report";
+ }
+
+ private boolean validateCheckSum(TreeMap parameters, String paytmChecksum) throws Exception {
+ return PaytmChecksum.verifySignature(parameters, paytmDetails.getMerchantKey(), paytmChecksum);
+ }
+
+
+ private String getCheckSum(TreeMap parameters) throws Exception {
+ return PaytmChecksum.generateSignature(parameters, paytmDetails.getMerchantKey());
+ }
+
+
}
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 319f9d9..65febd6 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -1,3 +1,3 @@
server.port=9090
-paytm.email=Enter your Email id
-paytm.mobile=Enter your mobile number
+paytm.email=kambalavijay@gmail.com
+paytm.mobile=9676964105
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 5e4c61e..f79b696 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,11 +1,11 @@
paytm.payment:
sandbox:
- merchantId: {generate your own merchantId}
- merchantKey: {generate your merchantKey}
+ merchantId:
+ merchantKey:
channelId: WEB
- website: WEBSTAGING
+ website: DEFAULT
industryTypeId: Retail
- paytmUrl: https://securegw-stage.paytm.in/order/process
+ paytmUrl: https://securegw.paytm.in/order/process
callbackUrl: http://localhost:9090/pgresponse
details:
MID: ${paytm.payment.sandbox.merchantid}