asp.net-mvc - 使用 ASP.Net MVC 5 在网站中集成 Paytm 支付
问题描述
我正在尝试在我的 ASP.NET MVC 项目中实现 PAYTM 支付集成方法。我正在我的网站中应用 paytm 支付集成,但我得到了类似的结果
我有一个控制器:
public class PaytmController : Controller
{
// GET: Paytm
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult CreatePayment(RequestData requestData)
{
String merchantKey = Key.merchantKey;
Dictionary<string, string> parameters = new Dictionary<string, string>();
parameters.Add("MID", Key.merchantId);
parameters.Add("CHANNEL_ID", "WEB");
parameters.Add("INDUSTRY_TYPE_ID", "Retail");
parameters.Add("WEBSITE", "WEBSTAGING");
parameters.Add("EMAIL", requestData.email);
parameters.Add("MOBILE_NO", requestData.mobileNumber);
parameters.Add("CUST_ID", "1");
parameters.Add("ORDER_ID", "ORDER8");
parameters.Add("TXN_AMOUNT", requestData.amount);
parameters.Add("CALLBACK_URL", "http://localhost:60308/Paytm/paytmResponse"); //This parameter is not mandatory. Use this to pass the callback url dynamically.
string checksum = paytm.CheckSum.generateCheckSum(merchantKey, parameters);
string paytmURL = "https://securegw-stage.paytm.in/theia/processTransaction?orderid=" + parameters.FirstOrDefault(x => x.Key == "ORDER_ID").Value;
string outputHTML = "<html>";
outputHTML += "<head>";
outputHTML += "<title>Merchant Check Out Page</title>";
outputHTML += "</head>";
outputHTML += "<body>";
outputHTML += "<center><h1>Please do not refresh this page...</h1></center>";
outputHTML += "<form method='post' action='" + paytmURL + "' name='f1'>";
outputHTML += "<table border='1'>";
outputHTML += "<tbody>";
foreach (string key in parameters.Keys)
{
outputHTML += "<input type='hidden' name='" + key + "' value='" + parameters[key] + "'>";
}
outputHTML += "<input type='hidden' name='CHECKSUMHASH' value='" + checksum + "'>";
outputHTML += "</tbody>";
outputHTML += "</table>";
outputHTML += "<script type='text/javascript'>";
outputHTML += "document.f1.submit();";
outputHTML += "</script>";
outputHTML += "</form>";
outputHTML += "</body>";
outputHTML += "</html>";
ViewBag.htmlData = outputHTML;
return View("PaymentPage");
}
[HttpPost]
public ActionResult paytmResponse(PaytmResponse response)
{
return View("paytmResponse" , response);
}
}
索引视图如下所示:
@model MyHoroscope.ViewModels.RequestData
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<div align="center">
@using (Html.BeginForm("CreatePayment", "Paytm", FormMethod.Post))
{
<table>
<tr>
<td>
Mobile Number :
</td>
<td>
<input type="text" name="mobileNumber" value="" />
</td>
</tr>
<tr>
<td>
Email :
</td>
<td>
<input type="text" name="email" value="" />
</td>
</tr>
<tr>
<td>
Amount :
</td>
<td>
<input type="text" name="amount" value="" />
</td>
</tr>
</table>
<pre>
<input type="submit" value="Save" />
</pre>
}
</div>
和PaymentPage
视图是这样的:
@{
Layout = null;
}
@Html.Raw(ViewBag.htmlData)
我还创建了一个paymentResponse
视图:
@model MyHoroscope.ViewModels.PaytmResponse
@{
ViewBag.Title = "paytmResponse";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>paytmResponse</h2>
<div align="center">
<table border="1" width="50%">
<tr>
<td>@Html.DisplayNameFor(m => m.MID)</td>
<td>@Html.DisplayFor(m => m.MID)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.ORDER_ID)</td>
<td>@Html.DisplayFor(m => m.ORDER_ID)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.TXN_AMOUNT)</td>
<td>@Html.DisplayFor(m => m.TXN_AMOUNT)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.CURRENCY)</td>
<td>@Html.DisplayFor(m => m.CURRENCY)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.TXNID)</td>
<td>@Html.DisplayFor(m => m.TXNID)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.BANKTXNID)</td>
<td>@Html.DisplayFor(m => m.BANKTXNID)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.STATUS)</td>
<td>@Html.DisplayFor(m => m.STATUS)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.RESPCODE)</td>
<td>@Html.DisplayFor(m => m.RESPCODE)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.RESPMSG)</td>
<td>@Html.DisplayFor(m => m.RESPMSG)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.TXNDATE)</td>
<td>@Html.DisplayFor(m => m.TXNDATE)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.GATEWAYNAME)</td>
<td>@Html.DisplayFor(m => m.GATEWAYNAME)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.BANKNAME)</td>
<td>@Html.DisplayFor(m => m.BANKNAME)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.PAYMENTMODE)</td>
<td>@Html.DisplayFor(m => m.PAYMENTMODE)</td>
</tr>
<tr>
<td>@Html.DisplayNameFor(m => m.CHECKSUMHASH)</td>
<td>@Html.DisplayFor(m => m.CHECKSUMHASH)</td>
</tr>
</table>
</div>
为什么我的代码不起作用?
解决方案
推荐阅读
- android - ViewModel 实例很多,如何解决?
- javascript - Get Latitude and Longitude in Ruby On Rails
- python-3.x - 将位于父文件夹中的模块中的函数导入脚本
- windbg - 如何遍历字节字符串的搜索结果并偏移结果指针(在 WinDbg 中)?
- javascript - 无限滚动不适用于 Firefox,但适用于 Safari/Chrome
- java - Jmeter TCP采样器不循环
- css - css bug - 带有图片库的 div 仅适用于 iphone 6/7/8 - flex 和 grid
- sql - 包含 LEFT JOIN 的实体框架 Linq to SQL 表达式
- javascript - 使用 Javascript 级联下拉菜单
- ionic-framework - WebdriverIO 无法点击(离子)选项卡