Paytm Интеграция платежей в веб-сайты с использованием ASP.Net MVC 5 - PullRequest
2 голосов
/ 10 июня 2019

Я пытаюсь реализовать метод интеграции платежей PAYTM в моем проекте ASP.NET MVC.Я применяю интеграцию платежей 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);
        }
}

Представление индекса выглядит так:

<code>@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" />
        
}

и PaymentPage представление выглядит так:

@{
    Layout = null;
}

@Html.Raw(ViewBag.htmlData)

и Iтакже создал 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>

Почему мой код не работает?

...