【发布时间】:2020-08-21 00:08:44
【问题描述】:
我正在开发一个带有 PayPal 集成的 asp.net 核心 MVC 项目。完成付款后,PayPal 正确重定向到成功 URL (.../PayPal/PaymentSuccess)。请看下面给出的方法:
贝宝控制器
public class PayPalController
{
public IActionResult PaymentSuccess()
{
//code for business logic here
TempData["Amount"] = amount;
return RedirectToAction("PaymentCompleted", "Home");
}
}
HomeController
public class HomeController
{
public IActionResult PaymentCompleted()
{
var amount = Convert.ToDecimal(TempData["Amount"]);
//code for business logic here
return View();
}
}
我曾尝试在托管环境中使用 PayPal 付款。
完成付款后,PayPal 成功调用了PaymentSuccess() 方法。在这个方法中,我们添加了数据库更新的业务逻辑。之后我们需要重定向到另一个页面"PaymentCompleted"来显示支付成功的信息。
问题是成功执行 PaymentSuccess 方法中的代码后,重定向到另一个控制器 (HomeController) 中的视图页面“PaymentCompleted”不起作用。
但是,我尝试直接在浏览器中调用PaymentSuccess() 方法,现在重定向工作正常。
编辑:我在'PaymentSuccess()' 上使用了'TempData' 方法来传递支付金额以显示在'PaymentCompleted' 视图页面上。
为什么会这样?谁能说明这个问题背后的原因?
任何帮助都将不胜感激。谢谢!
【问题讨论】:
-
你没有得到任何异常?您能否将 [HttpGet] 显式添加到 PaymentCompleted 控制器操作,也许会有所帮助。
-
它没有显示任何异常。好的,我会试试的。谢谢:)
-
@Wouter 我试过了。但仍然显示相同。
-
您是如何触发 PaymentSuccess 方法的? (这可能是关键点)。建议您在 PaymentSuccess 中调试代码,确认断点是否可以到 RedirectToAction 代码。
-
@YongqingYu 。我们使用 Paypal 中的按钮生成器功能创建了支付按钮。在按钮生成期间,我们可以指定必要的 URL,例如支付成功、取消和其他可选 URL。因此,当我们付款时,Paypal 本身会调用相应的方法。
标签: c# asp.net-core redirect paypal tempdata