Paytm 支付网关 java web 集成 - servlet 调用中的 jsp 示例有时由于提交中的 javascript 而无法正常工作

Posted

技术标签:

【中文标题】Paytm 支付网关 java web 集成 - servlet 调用中的 jsp 示例有时由于提交中的 javascript 而无法正常工作【英文标题】:Paytm payment gateway java web integration - jsp sample inside servlet call not working sometimes because of javascript from submission 【发布时间】:2016-11-16 20:39:29 【问题描述】:

我正在使用 Paytm 进行支付网关集成,并且我正在使用作为 JSP implementation 示例的示例套件。

我正在做的是将此代码放入我的 servlet 方法中,如下所示:

int appointmentId = rst_appnt.getInt(1);//unique id 
TreeMap< String, String> parameters = new TreeMap<String, String>();
parameters.put("ORDER_ID", String.valueOf(appointmentId));
parameters.put("CUST_ID", "CUST001");
parameters.put("INDUSTRY_TYPE_ID", "Retail");
parameters.put("CHANNEL_ID", "WEB");
//parameters.put("TXN_AMOUNT", String.valueOf(rst_appnt.getDouble(3)));
parameters.put("TXN_AMOUNT", "10");
parameters.put("MID", "WorldP64425807474247");
parameters.put("CHANNEL_ID", "WEB");
parameters.put("INDUSTRY_TYPE_ID", "Retail");
parameters.put("WEBSITE", "worldpressplg");
parameters.put("MOBILE_NO", "9876543210");
parameters.put("EMAIL", "test@gmail.com");
parameters.put("CALLBACK_URL", "http://localhost:8080/Test/pgResponse.jsp");
String checkSum = CheckSumServiceHelper.getCheckSumServiceHelper().genrateCheckSum(PaytmConstants.MERCHANT_KEY, parameters);

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 Check Out Page</title>");
outputHtml.append("</head>");
outputHtml.append("<body>");
outputHtml.append("<center><h1>Please do not refresh this page...</h1></center>");
outputHtml.append("<form method='post' action='https://pguat.paytm.com/oltp-web/processTransaction' name='f1'>");
outputHtml.append("<table border='1'>");
outputHtml.append("<tbody>");

for (Map.Entry<String, String> entry : parameters.entrySet()) 
    String key = entry.getKey();
    String value = entry.getValue();
    outputHtml.append("<input type='hidden' name='" + key + "' value='" + value + "'>");


outputHtml.append("<input type='hidden' name='CHECKSUMHASH' value='" + checkSum + "'>");

outputHtml.append("</tbody>");
outputHtml.append("</table>");
outputHtml.append("<script type='text/javascript'>");
outputHtml.append("document.f1.submit();");
outputHtml.append("</script>");
outputHtml.append("</form>");

out.print(outputHtml);

这里是使用 JavaScript 中的表单提交来提交,如下面的代码所示:

outputHtml.append("<script type='text/javascript'>");
outputHtml.append("document.f1.submit();");
outputHtml.append("</script>");

但它有时似乎没有在 servlet 内执行脚本。

所以我提到了Paytm Java example。

但是,不幸的是,它没有任何代码可以调用 Paytm 的服务。

在 servlet 中使用 JavaScript 是否正确,还是应该使用 Java API 而不是示例 JSP 工具包?

【问题讨论】:

【参考方案1】:

您只需添加此语法而不是触发器。 所以在加载文件时触发它。

outputHtml.append("<script type='text/javascript'>");
                          outputHtml.append("document.onload=document.f1.submit();");
                      outputHtml.append("</script>");

或者你可以提交身体负荷。

 <body onload="document.form.submit()">

【讨论】:

就我而言,它有时并不总是有效。这能永远解决问题吗? 是的,如果它行为不端而不是你在我更新它时将它添加到身体负载上

以上是关于Paytm 支付网关 java web 集成 - servlet 调用中的 jsp 示例有时由于提交中的 javascript 而无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

(Flutter) Paytm 支付网关集成

什么是 android 中 paytm 支付网关集成中的客户端证书?

如何在 Swift 中集成 Paytm 支付网关

校验和不匹配错误 paytm 支付集成

将 Paytm 与 swift 3.0 集成

在 iOS 中集成 PayTm 支付