从PayPal获取反馈以确认您的客户付款的最佳方式是什么?看起来好像答案是IPN - 如果是这样,我的后续问题是,我是否可以仅针对特定按钮启用IPN?我不希望PayPal为我的IPN监听器ping不需要任何IPN集成的购买。
我是关于敏捷和YAGNI的,所以我不想做任何不必要的事情。
答案 0 :(得分:2)
您应该阅读PayPal提供的IPN Documentation。要使用IPN,最简单的方法是为要跟踪的事务设置invoice
id。在IPN侦听器页面中,您将获得ipn_data
,其中一个字段为invoice
。使用此ID,您应该从您自己的交易数据库中获取数据,然后更改状态以反映PayPal中的付款状态。
在我的代码中,通常我将状态设置为unpaid
,将用户指向paypal进行付款,而在IPN监听器中,我会将状态设置为paid
。
PayPal提供sample code,因此您可以立即开始。您还可以在this page中查看其他PayPal文档。
答案 1 :(得分:1)
您可以轻松地在按钮的参数中包含要使用的IPN侦听器。
如果您没有在PayPal的网站上设置默认位置,那么您的IPN监听器只会针对那些有一套的按钮进行操作。
有问题的PayPal表单变量是“notify_url”。
这是一个示例订阅按钮,但是其他任何东西都是相同的变量。
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input type="image" src="https://www.paypal.com/en_GB/i/btn/x-click-butcc-subscribe.gif"
border="0" name="submit" alt="PayPal - The safer, easier way to pay online."
onclick="_gaq.push(['_trackEvent', 'Click', 'PayPalMonthSub', 'SubscribePage']);" />
<img alt="" border="0" src="https://www.paypal.com/en_GB/i/scr/pixel.gif" width="1"
height="1" />
<input type="hidden" name="cmd" value="_xclick-subscriptions" />
<input type="hidden" name="business" value="paypal@yourdomain.com" />
<input type="hidden" name="item_name" value=" Monthly Subscription" />
<input type="hidden" name="item_number" value="1" />
<input type="hidden" name="no_shipping" value="1" />
<input type="hidden" name="no_note" value="1" />
<input type="hidden" name="currency_code" value="GBP" />
<input type="hidden" name="lc" value="GB" />
<input type="hidden" name="bn" value="PP-SubscriptionsBF" />
<input type="hidden" name="a3" value="4.99" />
<input type="hidden" name="p3" value="1" />
<input type="hidden" name="t3" value="M" />
<input type="hidden" name="src" value="1" />
<input type="hidden" name="sra" value="1" />
<input type="hidden" name="return" value="http://yourdomain.com/subscribe/thanks.aspx" />
<input type="hidden" name="rm" value="2" />
<input type="hidden" name="cancel_return" value="http://yourdomain.com/subscribe" />
<input type="hidden" name="notify_url" value="/http://yourdomain.com/IPN.aspx" />
</form>
如果您需要在帐户中设置默认通知网址,那么您将只能通过在不需要它的按钮中包含不同的处理程序来停止处理程序。如果PayPal没有从处理程序获得HTTP200,虽然它会继续尝试,所以我不建议设置任何不存在的URI。