2011-10-15 50 views
0

所以我會描述一點點問題 -
1)我得到的PayPal IPN腳本,如果功能驗證,它會在數據庫中插入數據,否則它會發送電子郵件到我。
2)我用PayPal沙箱測試工具測試腳本,我只需要插入鏈接,它會自動檢查它是否工作,並且它插入數據,所以它工作。 但現在問題開始 -
3)之後,我試圖用PayPal Sandbox Test帳戶進行測試。我創建了兩個測試PayPal賬戶 - 賣方和買方。
4)爲賣家配置了一切,並創建了一個按鈕(貝寶技術支持配置一切正常,按鈕和IPN鏈接)。
5)所以我在homeapge中插入了按鈕,並嘗試用測試帳戶付款。
6)登錄,支付並返回主頁,但沒有數據插入數據庫eather沒有郵件發送到我的郵件。
7)我沒有給賣家賬戶PayPal歷史記錄,它顯示我從IPN腳本獲得了一個歷史記錄,這個歷史記錄已成功發送,並有200個HTTP(這意味着一切正常!)。
8)我的買家帳戶中的錢已發送到賣家帳戶。
看來,一切都很好,除了,貝寶沒有做任何內部IPN腳本,所以也許你可以幫助我的想法?我嘗試聯繫PayPal技術支持,他們確認一切都應該沒問題!

希望你能幫助我解決這個問題!
最好的問候,
ValtersPayPal IPN腳本,不會在數據庫中插入數據

回答

0

這裏沒有簡單的答案,所以我會幫你關於如何具體調試這種情況下一些指令。

首先,注意不同的付款狀態。 PayPal有一個「待定」狀態,以及我相信一些「已驗證」或「已確認」狀態(現在不記得確切的術語)。 IPN模擬器和買方測試賬戶可能會產生兩種不同類型的付款,從而產生兩種不同的狀態,因此請先檢查。如果它們不相同,請查找代碼中處理非工作支付狀態的錯誤。

做不到這一點,...

聽起來像它不一定有任何與貝寶和它的IPN的問題,但在執行某些時候你的PHP腳本。換句話說,聽起來好像你的PHP腳本在某些時候遇到了一個PHP錯誤,它會導致腳本崩潰或者遇到一些行爲錯誤。

因爲一切工作正常與IPN模擬器,它可能只是一個特定類型的測試用例導致錯誤; IPN模擬器如何工作以及如何設置買家帳戶可能會觸發您的代碼的不同部分執行...

請仔細看看您的服務器上是否有error_log文件與您的IPN腳本相同的目錄。如果是這樣,打開它並向下滾動到最近的錯誤。這只是當腳本遇到錯誤時輸出到屏幕的錯誤日誌;顯然,你在這裏使用IPN,所以PayPal是一個能夠「看到」輸出到屏幕上的錯誤的客戶端(但是他們的IPN系統無論如何都不關注它),所以你唯一的方法就是看到輸出是通過這個error_log或者寫一些調試代碼。

如果error_log不夠用,而且您確實需要編寫一些調試代碼,則應該在IPN回調腳本中添加一些代碼,以便在腳本中以一定間隔將一些輸出寫入文本文件。這樣,您就可以準確地確定腳本崩潰的位置(如果崩潰)。如果事實證明該腳本根本不會崩潰,那麼編寫一些代碼來輸出您的SQL查詢。

實際上,最底層的最快方法可能就是這麼做:編寫一些調試代碼將SQL查詢輸出到文件。結果會給你一個很大的線索:錯誤是你的腳本崩潰了還是你的代碼從查詢發生的地方分支出去(沒有文件輸出),查詢本身是否有問題(很可能是案例),或者......好吧,幾乎是這兩種情況之一。

祝你好運!

+0

你好,請你給我一個提示如何使腳本寫入一個SQL查詢文件?並且error_log中沒有php錯誤。 最好的問候, 瓦爾特 – Y2ok

+0

當然。只需編寫一個函數(將一個字符串作爲參數)打開一個txt文件(在append模式下使用fopen()),然後用fwrite()將該字符串寫入該文件。不要忘記在最後調用fclose(),否則無論如何該文件都將爲空。 一旦你有了這個函數,在你真實的代碼中調用它,把你的MySQL查詢作爲字符串傳入。 – Josh1billion

+0

你好,好吧,會做,然後回來告訴你發生了什麼;)!感謝您的幫助! – Y2ok