是否可以记住MVC 5中以前的重定向操作

本文关键字:重定向 操作 MVC 是否 | 更新日期: 2023-09-27 18:19:35

让我解释一下我的场景。我的网站上有一些不同的产品,用户可以使用PayPal购买。我已经将PayPal配置为与我的网站协同工作,并且在我的Web.config文件中有这样的内容,用于从PayPal:重定向

<add key="return" value="http://www.mywebsite.com/PayPal/RedirectFromPaypal" />

所以,重点是,对于每种不同的产品,一旦付款完成,我需要做一些不同的事情。首先,我需要写入数据库,另一方面,我需要进行一些计算并将其显示给用户,最后一个需要发送电子邮件。

重点是,当用户按下订单按钮时,无论是哪种产品类型,他/她都会被重定向到PayPal以完成订单,一旦用户完成订单,就会被重定向回PayPal/RedirectFromPaypal视图。但是,正如我之前所说,对于不同的产品类型,我有不同的要求,因此,我需要以某种方式知道是哪个订单操作启动了订单,然后当我达到RedirectToPaypal方法时,我可以采取相应的行动。有可能以某种方式记住它吗?还请注意,我使用此教程将我的应用程序与PayPal连接。还要注意,对于三种不同的订单类型,我有三个不同的操作方法。

类似这样的东西:

public ActionResult ValidateCommand(string product, string totalPrice)
public ActionResult ValidateCommandAd(Ad ad)
public ActionResult ValidateCommandSearch(Search search)

每个特定的操作都是为每个特定的产品订单调用的。在内部,我只是为PayPal设置了一些值,然后将用户重定向到PayPal。然后,当涉及到下面的操作时,我想知道之前调用了哪个操作,我的意思是在重定向到PayPal并从PayPal返回到NotifyFromPaypal之前,这样我就可以在下面的操作中进行相关编码:

    public ActionResult NotifyFromPaypal()
    {
        return View();
    }

有什么想法和代码示例可以帮助我吗?

是否可以记住MVC 5中以前的重定向操作

当您给PayPal返回URL时,添加一个参数,告诉接收操作它来自哪个订单操作。

IE:http://www.mywebsite.com/PayPal/RedirectFromPaypal?type=orderAction


评论更新:

步骤:

  1. 用户在您的系统中创建订单
  2. 您将它们重定向到PayPal进行支付,并为PayPal提供带有"订单操作类型"的新参数的回调URL。
    • 注意:您可以添加任意数量的参数,以便在回调时识别订单<记住这是一个粗略的例子>

  3. 编写一个使用该请求的控制器操作。

public class PayPal : Controller
{
    [HttpGet]
    public ActionResult RedirectFromPaypal(string type)
    {
        // PayPal calls this action on order completion.
        // I made "type" a string for this example but it can be anything.
        // Add other parameters as needed.
        // Processing, etc.
        return View();
    }
}