2

从 PayPal 获得反馈以确认您的客户已付款的最佳方式是什么?看起来答案是 IPN - 如果是这样,我的后续问题是,我可以仅为特定按钮启用 IPN 吗?对于不需要任何类型的 IPN 集成的购买,我不希望 PayPal 对我的 IPN 侦听器进行 ping 操作。

我对敏捷和 YAGNI 很感兴趣,因此我不想做任何不必要的事情。

4

2 回答 2

2

您应该阅读PayPal 提供的IPN 文档。要使用 IPN,简单的方法是为invoice您要跟踪的交易设置 id。在 IPN 侦听器页面中,您将获得ipn_data其中一个字段是invoice. 使用此 ID,您应该从自己的交易数据库中获取数据,然后更改状态以反映 PayPal 中的付款状态。

在我的代码中,通常我将状态设置为unpaid,引导用户到贝宝进行付款,在 IPN 监听器中我将状态设置为paid

PayPal 提供示例代码,因此您可以立即开始。您还可以在此页面中查看其他 PayPal 文档。

于 2010-03-13T09:57:21.933 回答
1

您可以轻松地在按钮的参数中包含要用于哪个 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。

于 2013-01-15T17:16:54.187 回答