付款完成后未获取会话值
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 从数据库或某些外部存储中检索客户信息。
我在我的 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 从数据库或某些外部存储中检索客户信息。