【问题标题】:ASP.NET MVC: Triggering an action before posting to Paypal payment gatewayASP.NET MVC:在发布到 Paypal 支付网关之前触发操作
【发布时间】:2010-05-11 03:10:46
【问题描述】:

我正在开发一个使用 Paypal 作为支付网关的电子商务网站。我想做的就是在用户前往 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 似乎有同样的问题 - (并且可能解释得更好)。

【问题讨论】:

    标签: asp.net-mvc paypal


    【解决方案1】:

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


    据我了解,您有一个表单,其中包含一些发布到 PayPal 的字段。在将表单发布到 Paypal 之前,您希望捕获表单上的字段,对其进行一些处理,然后让它们发布到 paypal。

    一种方法是使用 jQuery。你连接提交事件

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

    单击提交时,在您在上面创建的提交的事件处理程序中,使用您的 MVC 操作所需的表单字段进行 ajax 调用。 http://api.jquery.com/jQuery.post/

    进行处理并发回响应。

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

    终于用jQuery提交表单了。

    ==

    【讨论】:

    • 所以没有启用javascript就没有办法吗?我使用过其他使用 GET 请求的在线支付系统——这不是 PayPal 使用它的 ExpressCheckout 和 DirectPayment 产品所做的吗?为什么不在这种情况下?
    • 我不知道 Paypal .. 如果他们确实接受 get 请求,那么您可以向您的操作发出 GET 请求并将用户重定向到 Paypal - 完全避免使用 JavaScript
    • 只是不太热衷于实施直接付款。哦,好吧,为你的帮助干杯!
    【解决方案2】:

    你的意思是在你做完你想做的事情之后重定向到贝宝?

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

    【讨论】:

    • 嗯,是的,带着所需数据进入贝宝支付页面;总金额、客户名称等。通常情况下,您会在 HTML 表单本身中包含此信息。我可以在 RedirectResult 上添加这些信息吗?
    • 我不知道贝宝是如何工作的。我在developer.paypal.com/en_US/pdf/PP_APIReference.pdf 下载了开发者指南,但这有点研究。如果你告诉我你需要传递什么样的信息,我可以告诉你怎么做。
    • 我只需要传递一个用户名(作为自定义数据)和订单的总成本。但是,就在他们去 PayPal 之前,我需要更改订单状态 - 即“//做我想做的事情”部分。
    • 订单状态是您自己存储的,还是 PayPal 链接的一部分?
    • 订单状态自己存储。我的应用程序需要对此进行更改。
    猜你喜欢
    • 2016-09-05
    • 2017-08-16
    • 2013-03-27
    • 2011-05-17
    • 2015-06-10
    • 2014-04-28
    • 2012-06-03
    • 1970-01-01
    • 2014-06-03
    相关资源
    最近更新 更多