我有一个asp.net MVC4动作,它有一个订阅paypal按钮:
<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>
在返回网址中,它会点击一个操作,我希望能够看到表单详细信息以及付款是否完成,以及所有好处。这就是我所拥有的:
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");
}
我如何获得这些数据!
答案 0 :(得分:2)
正如评论所述,解决方案是IPN。基本上,IPN是您在销售工具下在商家帐户上设置的网址。
您需要创建指向您的操作的网址。 (要在本地执行此操作,您需要执行端口转发以使您的站点公开可用)
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
答案 1 :(得分: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);