我在我的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。我不知道是否需要这些信息。只需提及)
答案 0 :(得分:2)
我猜是因为你重定向到paytabs并且当它返回给你时,它与你与客户的那个会话不同(因为它现在是从paytabs到你)
我唯一能想到的是在交易网址上添加一个交易ID或其他东西,以便:
formContent += "&return_url=" + "http://example.com/mycontroller/TheReturnPage?id=" + someId
然后使用someId从数据库或某个外部存储中检索客户信息。