付款完成后,会话价值未获得

时间:2015-08-24 08:00:49

标签: asp.net-mvc asp.net-mvc-4 session asp.net-web-api session-variables

我在我的mvc项目中使用paytabs(支付网关,如paypal) 当我打电话给create-paypage-api-call时,它会转到paytab网站并完成 付款部分,将返回我的页面。 return back url是同一个控制器中的一个动作方法,当调用create-paypage-api-call时,我必须将其作为参数传递。

在调用之前我在会话中保存customerID。但我无法参加会议 返回页面中的值。

这是我的代码

这是我的支付网关,名为actionresult

public ActionResult paymentcall()
    {
         //my logic part here let it be int customerid = 123

          session[id] = customerid;

         //create-paypage-api-call starts here
         request = (HttpWebRequest)WebRequest.Create("https://www.paytabs.com/apiv2/create_pay_page");
         request.Method = "POST";
         formContent = "merchant_email=bb@gmail.com&amount=333"//      formcontent will contain some more parameters that i wont mention here


     formContent += "&return_url=" + "http://example.com/mycontroller/TheReturnPage"; // this is the returnpage after payment

         byteArray = Encoding.UTF8.GetBytes(formContent);
                request.ContentType = "application/x-www-form-urlencoded";
                request.ContentLength = byteArray.Length;
                dataStream = request.GetRequestStream();
                dataStream.Write(byteArray, 0, byteArray.Length);
                dataStream.Close();
                response = request.GetResponse();
                dataStream = response.GetResponseStream();
                reader = new StreamReader(dataStream);
                responseFromServer = HttpUtility.UrlDecode(reader.ReadToEnd());
                PTResp = new PromoPayTabsMakePaymentResponse();
                PTResp = JsonConvert.DeserializeObject<PromoPayTabsMakePaymentResponse>(responseFromServer);
                System.Web.HttpContext.Current.Response.Redirect(PTResp.payment_url);
     }
当打电话给它时,它将转到paytabs网站,并在那里完成付款,如输入 卡详细信息cvv。付款后,它成功返回TheReturnPage actionmethod

public ActionResult TheReturnPage()
{
    int aa = Convert.ToInt32(Session["id"]);
}

但是在返回页面我得到会话值为零。 我在创建会话后立即从支付调用操作重定向。那时它正在获得。当它转到paytabs页面并从那里返回时,它没有获得。 (paytabs页面是https,我的网站是http。我不知道是否需要这些信息。只需提及)

1 个答案:

答案 0 :(得分:2)

我猜是因为你重定向到paytabs并且当它返回给你时,它与你与客户的那个会话不同(因为它现在是从paytabs到你)

我唯一能想到的是在交易网址上添加一个交易ID或其他东西,以便:

formContent += "&return_url=" + "http://example.com/mycontroller/TheReturnPage?id=" + someId

然后使用someId从数据库或某个外部存储中检索客户信息。