付款完成后未获取会话值

Session value is not getting after payment completion

我在我的 mvc project.In 中使用 paytabs(像 paypal 这样的支付网关) 当我调用 create-paypage-api-call 时,它将转到 paytab 网站并完成 付款部分,并将 return 返回到我的页面。 return back url 是同一控制器中的一个操作方法,并且 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 .付款后,它会成功 return 返回 TheReturnPage 操作方法

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

但在 return 页面中我得到的会话值为零。 我尝试在创建会话后从 paymentcall 操作重定向。那时它是 getting.Session 当它进入 paytabs 页面并从那里返回 return 时没有得到价值。 (paytabs页面是https,我的网站是http,不知道是否需要这个信息,随便提一下)

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

我唯一能想到的就是在 return url 上放置一个交易 ID 或您可以识别的东西,例如:

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

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