Платежный шлюз Paytm неверный тип запроса и код кода 302 для кода сайта - PullRequest
0 голосов
/ 19 июня 2019
@RequestMapping(value="/pgredirect")
public String getRedirect(@RequestParam(name="CUST_ID") String customerId,
@RequestParam(name="TXN_AMOUNT") String transactionAmount
{
String merchantMid = "madale************";
// Key in your staging and production MID available in your dashboard
String merchantKey = "*************";
// Key in your staging and production merchant key available in your dashboard
String orderId = "order12323";
String channelId = "WEB";
String custId = "cust1232323";
String mobileNo = "7777777777";
String email = "soumya@gmail.com";
String txnAmount = "100.12";
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 = " http://localhost:8089/pgresponse/ ";
TreeMap<String, String> paytmParams = new TreeMap<String, String>();
paytmParams.put("MID",merchantMid);
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 checkSum =  getCheckSum(paytmParams);

StringBuilder outputHtml = new StringBuilder();
outputHtml.append("<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>");
outputHtml.append("<html>");
outputHtml.append("<head>");
outputHtml.append("<title>Merchant Checkout Page</title>");
outputHtml.append("</head>");
outputHtml.append("<body>");
outputHtml.append("<center><h1>Please do not refresh this page...</h1></center>");
String transactionURL="https://securegw-stage.paytm.in/theia/processTransaction";  
outputHtml.append("<form method='post' action='"+transactionURL+"' name='f1'>");
for(Map.Entry<String,String> entry : paytmParams.entrySet()) {
   outputHtml.append("<input type='hidden' name='"+entry.getKey()+"' value='"+entry.getValue()+"'>");
}
outputHtml.append("<input type='hidden' name='CHECKSUMHASH' value='"+checkSum+"'>");
outputHtml.append("</form>");
outputHtml.append("<script type='text/javascript'>");
outputHtml.append("document.f1.submit();");
outputHtml.append("</script>");
outputHtml.append("</body>");
outputHtml.append("</html>");
return outputHtml.toString();
}

private String getCheckSum(TreeMap<String, String> parameters) throws Exception {
return CheckSumServiceHelper.
getCheckSumServiceHelper().
genrateCheckSum(paytmDetails.getMerchantKey(), parameters);
}

@ResponseBody
@RequestMapping(value="/pgresponse")
public String getResponseRedirect(HttpServletRequest request) {
System.out.println(request.getParameterMap().toString());
System.out.println(request.getParameterMap());
Map<String, String[]> mapData = request.getParameterMap();
TreeMap<String,String> parameters = new TreeMap<String,String>();
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;
try{
isValideChecksum = validateCheckSum(parameters, paytmChecksum);
if(isValideChecksum && parameters.containsKey("RESPCODE")){
System.out.println(parameters.get("RESPCODE"));
System.out.println(parameters.get("RESPMSG"));
if(parameters.get("RESPCODE").equals("01")){
result = parameters.toString();
}else{
result="<b>Payment Failed.</b>";
}
}else{
result="<b>Checksum mismatched.</b>";
}
}catch(Exception e){
result=e.toString();
}
return result;
}

private boolean validateCheckSum(TreeMap<String, String> parameters, String paytmChecksum) throws Exception {
return CheckSumServiceHelper.
getCheckSumServiceHelper().
verifycheckSum(paytmDetails.getMerchantKey(),parameters,paytmChecksum);
}

Я пытаюсь интегрировать платежный шлюз paytm в мой веб-сервер springboot. У меня есть API документации для большинства кодов выше.

При отправке запроса туда готовятся учетные данные песочницы https://securegw -stage.paytm.in / Тейя / processTransaction

Я получаю ошибку как RESPCODE = 302 RESPMSG = неверный тип запроса

В ответном сообщении не так много деталей. ниже приведено полное ответное сообщение от Paytm

Key:BANKTXNID, Value:
Key:CHECKSUMHASH, Value:m5CRnoqQ9h1x0kMijAYUIDCaT9sziufB46667WrNM8fEqeNPdfMc4vCkFDHWEzjPqYdCQh1LJZDpObBCSzlzTSgD7buiaBgdmgjLFp/hn+c=
Key:CURRENCY, Value:INR
Key:MID, Value:madale56877547765238
Key:ORDERID, Value:order1232323
Key:RESPCODE, Value:302
Key:RESPMSG, Value:Invalid Request Type
Key:STATUS, Value:TXN_FAILURE
Key:TXNAMOUNT, Value:100.12

Я ожидаю, что вы перейдете на страницу оплаты и произведете платеж, а затем перенаправите на мой callback_url.

Может ли кто-нибудь подсказать мне, где я делаю неправильно и как действовать дальше?

...