2011-12-28 65 views
8

我有一個類似的問題發回這個帖子貝寶自動返回不任何POST數據

Setting PayPal return URL and making it auto return?

然而,該解決方案也不能正常工作。我們已經IPN建立和POST變量會馬上回傳(訪問者點擊後面,並能下載購買的PDF文件),但後來我試圖擺脫貝寶訂單確認頁面,上面寫着

你剛剛完成付款。此付款 的交易ID是:XXXXXXXXXXXXX。

並啓用「自動返回」,在網站付款習慣設定,指定URL http://www.educted.ca/payment_complete.php時,POST變量現在沒有得到傳遞迴payment_complete.php - 它顯示爲空白。只要我禁用「自動返回」,POST變量顯示正常,購買的產品可以下載。當然,我正在使用Paypal Sandbox帳戶。

<input type="hidden" name="return" value="<?php echo LIVE_SITE;>payment_complete.php"> 
<input type="hidden" name="cancel_return" value="<?php echo LIVE_SITE; ?>catalog.php"> 
<input type="hidden" name="notify_url" value="<?php echo LIVE_SITE; ?>ipn.php"> 
<input type="hidden" name="rm" value="2"> 

任何想法?

+0

也許你可以使用自動返回或IPN,但不是兩個? – Natalia 2011-12-28 21:57:57

回答

13

如果啓用自動返回,則無論rm設置爲什麼,都將通過GET返回值。

如果您想在買家完成交易後立即進行文件交付,請查看PayPal付款數據傳輸。啓用後,PDT會將tx GET var添加到您的返回URL;通過調用PayPal https://www.paypal.com/cgi-bin/webscr?cmd=_notify-synch&tx=value-for-tx-here&at=value-for-your-paypal-account-authentication-token,您將能夠提取有關交易的額外數據,並立即檢查其是否有效。
另請參閱https://www.paypal.com/pdt/

IPN應該保留給後端處理,因爲它可能會帶來很大的延遲。另一方面,PDT需要您從PayPal中提取信息,並且是即時的。

+0

謝謝!這是什麼意思「IPN應該保留用於後端處理」?那麼IPN的適當用途是什麼?我們需要在我們的案例中使用它嗎? – Natalia 2011-12-28 23:28:10

+0

是的,通過使用IPN,您將自動保持更新,以防交易完成後發生某些事情(例如,如果PayPal決定審覈交易,或者買方突然向您提交PayPal案件)。 – Robert 2011-12-29 18:23:09

+0

我正在這樣做,但我們沒有得到一個tx =變量回來的網址?還有沒有在後變量?有什麼改變? – leen3o 2013-08-15 13:55:05

4

您仍然可以將Auto Return設置爲On,但請確保您DISABLE PDT,並且您將通過POST將所有事務變量發送到您的返回URL(如果您在請求中將rm參數設置爲2當然,就像你說的那樣)。

由於某些原因,啓用PDT將忽略rm參數並強制使用GET方法。

1

你的具體情況,它顯示空白,因爲在你的代碼中的錯誤的:

<?php echo LIVE_SITE;> 

這並不解析爲有效的PHP - 它會導致致命的錯誤。如果尚未輸出任何信息並且錯誤報告已關閉,則它將成爲空白頁。

1

您仍然可以將Auto Return設置爲On,但要確保您DISABLE PDT,並且您將通過POST將所有事務變量發送到您的返回URL(如果您的rm參數設置爲2就像你說的那樣)。

這是正確答案!如果您想獲得POST-Data,則不能啓用通過自動回覆發送付款數據。

但是,在這種情況下,您必須使用https站點,否則客戶在重定向之前會收到警告!