从 PayPal 获得反馈以确认您的客户已付款的最佳方式是什么?看起来答案是 IPN - 如果是这样,我的后续问题是,我可以仅为特定按钮启用 IPN 吗?对于不需要任何类型的 IPN 集成的购买,我不希望 PayPal 对我的 IPN 侦听器进行 ping 操作。
我对敏捷和 YAGNI 很感兴趣,因此我不想做任何不必要的事情。
从 PayPal 获得反馈以确认您的客户已付款的最佳方式是什么?看起来答案是 IPN - 如果是这样,我的后续问题是,我可以仅为特定按钮启用 IPN 吗?对于不需要任何类型的 IPN 集成的购买,我不希望 PayPal 对我的 IPN 侦听器进行 ping 操作。
我对敏捷和 YAGNI 很感兴趣,因此我不想做任何不必要的事情。
您可以轻松地在按钮的参数中包含要用于哪个 IPN 侦听器。
如果您在 PayPal 的网站上没有设置默认位置,那么您的 IPN 侦听器只会针对那些设置了一组的按钮进行 ping 操作。
有问题的 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>
如果您需要在您的帐户上设置默认通知 url,那么您只能通过在不需要它的按钮中包含不同的处理程序来阻止您的处理程序被 ping。如果 PayPal 没有从处理程序获得 HTTP200,尽管它会继续尝试,所以我不建议将任何内容设置为不存在的 URI。