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

时间:2014-08-26 23:28:09

标签: c# asp.net-mvc paypal

让我解释一下我的情景。我的网站上有一些不同的产品,用户可以使用PayPal购买。我已经将PayPal配置为使用我的网站,我的Web.config文件中有类似的内容用于从PayPal重定向:

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

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

关键在于,当用户按下订单按钮时​​,无论从哪种产品类型,他/她都会被重定向到PayPal以完成订单,一旦用户完成订单,就会被重定向回PayPal/RedirectFromPaypal视图。但是,正如我之前所说,对于不同的产品类型,我有不同的要求,因此,我需要知道哪个订单操作启动了订单,然后当我到达RedirectToPaypal方法时,我可以采取相应的行动。有可能以某种方式记住它吗?另请注意,我使用此tutorial将我的应用与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();
    }

任何能帮助我的想法和代码示例?

1 个答案:

答案 0 :(得分:3)

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

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


从评论中更新:

步骤:

  1. 用户在您的系统中创建订单。
  2. 您将它们重定向到PayPal进行付款,并使用具有“订单操作类型”的新参数向PayPal提供回调网址。
    • 注意:您可以根据需要添加任意数量的参数来识别回调订单。 请记住这是一个粗略的例子。

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

  4. 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();
        }
    }