2010-03-08 211 views
2

簡單地從PayPal獲取反饋以確認您的客戶已付款的最佳方式是什麼?它看起來好像答案是IPN--如果是的話,我的後續問題是,我可以只爲特定的按鈕啓用IPN嗎?我不希望PayPal對我的IPN監聽器進行ping操作,以便購買不需要任何IPN集成的產品。通過PayPal確認付款的最簡單方法是什麼?

我是關於敏捷和YAGNI的,所以我不想做任何不必要的事情。

回答

2

您應該閱讀由PayPal提供的IPN Documentation。要使用IPN,最簡單的方法是對要跟蹤的交易記錄invoice。在IPN監聽器頁面中,您將獲得ipn_data,其中一個字段爲invoice。使用此ID,您應該從您自己的交易數據庫中獲取數據,然後更改狀態以反映PayPal中的付款狀態。

在我的代碼,我通常將狀態設置爲unpaid,將用戶引導到PayPal做支付,並在IPN監聽器,我將狀態設置爲paid

貝寶提供sample code所以你可以馬上開始。您還可以在this page中查看其他PayPal文檔。

+0

創建發票編號是您的應用的工作嗎,還是貝寶創建它?是否可以創建自己的ID並使PayPal通過該特定ID來通知您? – CMCDragonkai 2014-11-08 07:37:42

+0

你的應用應該創建它並將其傳遞給PayPal。此外,請確保它是唯一的,因爲貝寶將檢查您的應用的特定發票編號是否已經支付。 – 2014-11-08 22:36:38

+0

感謝您的信息,是否有該ID的限制,如在長度,字符..等?我想知道是否可以通過HMAC散列,這樣我就不需要存儲這些臨時ID。 – CMCDragonkai 2014-11-10 07:14:10

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="[email protected]" /> 
    <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。