2

我有一个带有订阅 paypal 按钮的 asp.net MVC4 操作:

<form action="https://www.sandbox.paypal.com/cgi-bin/webscr" method="post" id="payPalForm">
                <input type="hidden" name="item_number" value="@item.Id">
                <input type="hidden" name="item_name" value="@item.Name">
                <input type="hidden" name="src" value="1">@*Recurring until user cancels*@
                <input type="hidden" name="cmd" value="_xclick">
                <input type="hidden" name="p3" value="1"> @*Billing cycle amount*@
                <input type="hidden" name="t3" value="M"> @*billing cycle period - Month*@
                <input type="hidden" name="no_note" value="1">
                <input type="hidden" name="business" value="dude@dude.com">@*Hiva's paypal account*@
                <input type="hidden" name="currency_code" value="USD">
                <input type="hidden" name="return" value="@returnUrl">
                <input type="hidden" name="amount" id="amount" value="@item.Price">
                <input type="submit" name="Submit" value="Subscribe">
            </form>

在返回 URL 中,它触发了一个操作,我希望能够在其中查看表单详细信息以及付款是否通过,以及所有这些好东西。这就是我所拥有的:

        public ActionResult PaymentConfirm(FormCollection form)
    {
        //if successful, blah blah
        var user = User.Identity.Name;
        //Merchant merch = ctx.Merchants.Single(x => x.User.UserName == user);
        //merch.Plan = plan;

        return RedirectToAction("Index", "Merchant");
    }

我怎样才能得到这些数据!

4

2 回答 2

2

正如评论所提到的,解决方案是 IPN。基本上,IPN 是您在商家帐户中设置的 URL,位于销售工具下。

  1. 您会想要创建指向您的操作的 url。(要在本地进行,您需要进行端口转发以使您的站点公开可用)

  2. IPN 包含您需要的所有信息。每当付款时都会调用它,并且它还带有付款状态,无论是成功还是失败。

这是您可以参考的代码示例的链接。

https://www.x.com/developers/PayPal/documentation-tools/code-sample/216623

更新:有关 IPN 如何在幕后工作的详细信息,请参考以下链接

https://www.paypal.com/cgi-bin/webscr?cmd=p/acc/ipn-info-outside

于 2012-12-05T00:02:07.080 回答
0

如果您使用PayPal REST API,那么您可以这样做:

        // You create the ProcessPayment() method
        string jsonResponse = ProcessPayment(model);

        var jss = new JavaScriptSerializer();
        Payment payment = jss.Deserialize<Payment>(jsonResponse); 

        APIContext apiContext = Configuration.GetAPIContext();
        Payment originalPayment = Payment.Get(apiContext, payment.id);
于 2013-12-23T04:54:50.293 回答