1

我正在将paytm集成到我的网站。我有看法,即Index。目前它只是一个包含一个打开弹出窗口的按钮的视图。

这是我的看法。

@{
    ViewBag.Title = "paytm";
}

<style>
    .btn2 {
        background-color: #00b9f5;
        padding-bottom: 10px;
        padding-top: 10px;
    }
</style>
<h2>paytm</h2>
<button class="btn2" style="font-weight: 600;" onclick="popitup('http://localhost:49569/home/paytmcheckout');">Pay With Paytm</button>
<script>
    function popitup(url) {
        window.open(url, "_blank", "width=700,height=700,scrollbars=yes");
    }
</script>

这里是paytmcheckout动作

public ActionResult paytmcheckout()
{            
    Dictionary<string, string> parameters = new Dictionary<string, string>();
    parameters.Add("MID", "Some value");
    parameters.Add("CHANNEL_ID", "some value");
    parameters.Add("INDUSTRY_TYPE_ID", "some value");
    parameters.Add("WEBSITE", "some value");
    //parameters.Add("EMAIL", "email value");
    //parameters.Add("MOBILE_NO", "mobile value");
    parameters.Add("CUST_ID", "some value");
    parameters.Add("ORDER_ID", "some value");
    parameters.Add("TXN_AMOUNT", "some value");
    parameters.Add("CALLBACK_URL", "http://localhost:49569/home/thankyou/"); 
    //This parameter is not mandatory. Use this to pass the callback url dynamically.

    string checksum = paytm.CheckSum.generateCheckSum(merchantKey, parameters);

    string paytmURL = "https://pguat.paytm.com/oltp-web/processTransaction";

    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>";
    Response.Write(outputHTML);
    return new EmptyResult();
}

它简单地将一些数据发布到paytm。你可以在这里找到代码https://github.com/Paytm-Payments/Paytm_Web_Sample_Kit_dotNet

当请求发送到 paytm 时,它会处理它并在回调 url 上发送一些响应。在我的例子中,我创建了一个动作,即thankyou. 但我想关闭弹出窗口(从Index视图调用)并在视图中显示响应Index而不是显示thankyou视图。目前弹出窗口没有关闭并thankyou在其中显示视图。如何关闭弹出窗口并在视图中显示结果Index?我不知道如何实现这一点。

我想实现这样的东西 - http://paywithpaytm.com/demo/

4

1 回答 1

1

在主窗口中

  <script language="Javascript">
    function popitup(url) {
     newwindow=window.open(url, "_blank", "width=700,height=700,scrollbars=yes");
      if (window.focus) {newwindow.focus()}
    }
</script>

在孩子弹出

    <script language="Javascript">
    function redirectToFB(){
        window.opener.location.href="http://bla.bla.bla";
        self.close();
    }
   </script>

而不是使用

    return new EmptyResult();

利用

 return View();

在那个视图文件中你可以这样编码

    <script language="Javascript">
    (function(){
        window.opener.location.href="http://bla.bla.bla";
        self.close();
    })();
   </script>

有关更多详细信息,请参见此处

于 2016-04-27T06:31:34.400 回答