2010-05-11 71 views
1

我正在开发一个使用Paypal作为支付网关的电子商务网站。我想要做的就是在用户前往PayPal支付订单费用之前运行一些代码,但我不知道如何去做。ASP.NET MVC:在发布到Paypal支付网关之前触发一个动作

用户应点击一个提交按钮,进行更改(在这种情况下,订单的状态),然后用户被重定向到支付网关。例如:

[AcceptVerbs(HttpVerbs.Post)] 
public ActionResult GoToPaypal(FormCollection collection) 
{ 
    //change order status 

    //send user to paypal where they pay for their order 
} 

所以我的问题是你如何做应用程序的东西,然后重定向到贝宝的支付网关? HTML和C#示例很可爱:)

注意:This guy似乎有同样的问题 - (并可能解释它更好)。

回答

3

您可以从您的操作方法POST到PayPal,但它很难向用户显示响应。另外,您希望不使用GET请求将用户带到PayPal网站(GET公开参数在url字符串中,Paypal可能不接受GET请求)。


从我的理解,你有一个表单,其中有一些字段发布到PayPal。在表单发布到PayPal之前,您需要捕获表单上的字段,对其进行处理,然后将其发送到PayPal。

这样做的一种方法是使用jQuery。您wireup提交事件

http://api.jquery.com/submit/

当提交被点击时,在事件处理程序上面创建的提交,使你需要你的MVC行动的表单字段Ajax调用。 http://api.jquery.com/jQuery.post/

完成处理并发送回应。

当页面接收到ajax响应时,如果需要从ajax响应接收到更改表单域。

最后使用jQuery提交表单。

==

+0

因此,没有启用javascript的情况下无法做到这一点?我已经使用了其他使用GET请求的在线支付系统 - 这不是PayPal用ExpressCheckout和DirectPayment产品做的事情吗?为什么不在这种情况下? – ajbeaven 2010-05-13 20:32:10

+0

我不知道Paypal ..如果他们确实接受了获取请求,那么您可以向您的操作发出GET请求并将用户重定向到PayPal - 完全避免使用JavaScript – 2010-05-13 21:49:59

+0

只是不太热衷于实施直接支付。哦,欢呼你的帮助! – ajbeaven 2010-05-13 22:11:15

1

你的意思是重定向到贝宝,完成后你想做什么?

// run some code 
// 
// go to paypal 
return RedirectResult("http://paypal.com/blah"); 
+0

嗯,是的,去所有数据的贝宝付款页面;总金额,客户名称等。通常情况下,您可以在HTML表单本身中使用。我可以在RedirectResult上添加这些信息吗? – ajbeaven 2010-05-11 04:26:25

+0

我不知道贝宝如何工作。我在https://developer.paypal.com/en_US/pdf/PP_APIReference.pdf下载了开发者指南,但这是一个研究。如果你告诉我你需要通过什么样的信息,我可以告诉你如何去做。 – 2010-05-11 05:08:48

+0

我需要传递的是用户名(作为自定义数据)和订单的总成本。然而,就在他们去PayPal之前,我需要改变订单状态 - 那就是'//做我想做的事情'部分。 – ajbeaven 2010-05-11 20:27:12