我有一个Asp MVc网络项目。为了销售产品,用户应该注册或登录我的网站。选择产品后,用户将通过PaymentAction方法重定向到银行网关:
1
付款后,用户通过以下网址重定向到我的网站:
public String PaymentAction( TransAction Model )
{
try
{
Payment ob = new Payment();
Model.amount = 100000.ToString();
string result = ob.pay(Model.amount);
//, User.Identity.GetUserId()
/*
the result var is a string that contains the response from pay.ir/send
which contains: status, transId, errorCode, errorMessage and all things that
exist in JsonParameter
*/
JsonParameters Parmeters = JsonConvert.DeserializeObject<JsonParameters>(result);
// in this point the payment was successful and you can add info to your database
if ( Parmeters.status == 1 )
{
Response.Redirect("https://pay.ir/payment/gateway/" + Parmeters.transId);
}
else
{
return "error code : " + Parmeters.errorCode + "<br />" + "message " + Parmeters.errorMessage;
}
return "";
}
catch ( Exception exp )
{
return "error" + exp.Message;
}
}
这是VerifyPayment方法:
http://www.mymvcapp.com/HelpMeToBuildMyExtraordinaryYear/VerifyPayment
我们可以看到用户必须登录才能完成销售流程。但是在从银行重定向到上面的url(VerifyPayment)之后,用户没有登录,代码将返回null异常。 问题是如何在从银行重定向到我的网站后让用户登录? 或者如何从cookie中获取用户并在该用户中签名?
答案 0 :(得分:0)
在获取用户的过程中会出现问题。我们应该使用这段代码来获取用户:
var user = System.
Web.
HttpContext.
Current.
GetOwinContext().
GetUserManager<ApplicationUserManager>().
FindById(userId);
请注意正确的方法如上所述。以下代码产生问题。 doNOT用它来获取当前用户:
var user = db.Users.Where(u => u.Id == userId).FirstOrDefault();