2016-03-29 66 views
0

我是Paypal的新手,我試圖用IPN知道交易何時完成。我讀過Paypal documentation for IPN,它提供了一些IPN listener code samples。我將PHP示例版本(沒有任何更改)上載到我的服務器,並使用IPN模擬器向IPN偵聽器生成假IPN消息。我期待IPN偵聽器能夠成功處理IPN消息,並且IPN模擬器確實返回了以下消息:「發送了IPN並且握手得到了驗證」。PHP Paypal「官方」IPN監聽器無法正常工作

但是,由IPN監聽器生成的日誌文件表明監聽器無法正確處理IPN消息。以下是日誌文件所說的內容:

[2016-03-29 17:48 UTC] HTTP request of validation request:POST /cgi- 

bin/webscr HTTP/1.1 
Host: www.sandbox.paypal.com 
Accept: */* 
Connection: Close 
Content-Length: 941 
Content-Type: application/x-www-form-urlencoded 

for IPN payload: cmd=_notify-validate&payment_type=instant&payment_date=Tue+Mar+29+2016+18%3A16%3A38+GMT%2B0100+%28Hora+de+Ver%C3%83%C2%A3o+de+GMT%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&payer_email=buyer%40paypalsandbox.com&payer_id=TESTBUYERID01&address_name=John+Smith&address_country=United+States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San+Jose&address_street=123+any+street&business=seller%40paypalsandbox.com&receiver_email=seller%40paypalsandbox.com&receiver_id=seller%40paypalsandbox.com&residence_country=US&item_name1=something&item_number1=AK-1234&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&mc_handling=2.06&mc_handling1=1.67&mc_shipping=3.02&mc_shipping1=1.02&txn_type=cart&txn_id=302758056&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AHYNfmsVFESKyDLknmS3M5A8PkNI 
[2016-03-29 17:48 UTC] HTTP response of validation request: HTTP/1.1 200 OK 
Date: Tue, 29 Mar 2016 17:48:00 GMT 
Server: Apache 
X-Frame-Options: SAMEORIGIN 
Set-Cookie: c9MWDuvPtT9GIMyPc3jwol1VSlO=2I3qnyCkBB3XdWjX_k6qUfsHuBc1GAbvT7Mvx82vTNttPkSuPqzY2-m8MQq8SaoGHm7SWL4gG3vnyU48YFmYwci1hBFCrewHMEzxJHb6vwOdE3JHuDBlWlPpPKljHvs0XDhyhrpxKRdBKHJbfB8S2r6dpS12MhsnjD20c3TuoB50fahlPAwe-DB_fzV4doj7pFdqyGkujspMt-GVcu4Oag-DHwSpiyUPPDwUFlDP0Mel2BZtpkS9RMOp67FTwauchCGQ43Q1eGBCB5mCsokggySU-xhqk1BVQVT_0_vzmiZuGtQD17fQpVRE396JsQynQO3OKfAsq5hhcKHmRMYbmgY-XLZcGqqRKFsYPFCPMb4oTm79-BbDtOzhMw0VrG70wmInHRwhUEaGWTHoE3Cr1bHJGHuH3T6fJPXme6ygPzugAlmMZIFNsiKNYjy; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: cookie_check=yes; expires=Fri, 27-Mar-2026 17:48:00 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: navcmd=_notify-validate; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: navlns=0.0; expires=Thu, 29-Mar-2018 17:48:00 GMT; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: Apache=10.72.108.11.1459273680419868; path=/; expires=Thu, 22-Mar-46 17:48:00 GMT 
Vary: Accept-Encoding,User-Agent 
Connection: close 
HTTP_X_PP_AZ_LOCATOR: sandbox.slc 
Paypal-Debug-Id: 513d36fd62f6b 
Set-Cookie: X-PP-SILOVER=name%3DSANDBOX3.WEB.1%26silo_version%3D1880%26app%3Dappdispatcher%26TIME%3D3502242390; domain=.paypal.com; path=/; Secure; HttpOnly 
Set-Cookie: X-PP-SILOVER=; Expires=Thu, 01 Jan 1970 00:00:01 GMT 
Strict-Transport-Security: max-age=14400 
Transfer-Encoding: chunked 
Content-Type: text/html; charset=UTF-8 

INVALID 
[2016-03-29 17:48 UTC] Invalid IPN: cmd=_notify-validate&payment_type=instant&payment_date=Tue+Mar+29+2016+18%3A16%3A38+GMT%2B0100+%28Hora+de+Ver%C3%83%C2%A3o+de+GMT%29&payment_status=Completed&address_status=confirmed&payer_status=verified&first_name=John&last_name=Smith&payer_email=buyer%40paypalsandbox.com&payer_id=TESTBUYERID01&address_name=John+Smith&address_country=United+States&address_country_code=US&address_zip=95131&address_state=CA&address_city=San+Jose&address_street=123+any+street&business=seller%40paypalsandbox.com&receiver_email=seller%40paypalsandbox.com&receiver_id=seller%40paypalsandbox.com&residence_country=US&item_name1=something&item_number1=AK-1234&tax=2.02&mc_currency=USD&mc_fee=0.44&mc_gross=12.34&mc_gross_1=12.34&mc_handling=2.06&mc_handling1=1.67&mc_shipping=3.02&mc_shipping1=1.02&txn_type=cart&txn_id=302758056&notify_version=2.1&custom=xyz123&invoice=abc1234&test_ipn=1&verify_sign=AFcWxV21C7fd0v3bYYYRCpSSRl31AHYNfmsVFESKyDLknmS3M5A8PkNI 

爲什麼IPN偵聽器無法正常工作?有關信息,由於我仍處於開發模式,我的網站上仍然沒有SSL證書,但apparently SSL certificates are not needed to test the IPN listener

回答

0

的IPN代碼https://github.com/paypal/ipn-code-samples/blob/master/paypal_ipn.php包含:

if (strcmp ($res, "VERIFIED") == 0) { 

,並在網址收到它是小寫。也許這是問題所在。

+0

你所談論的 「驗證」 字符串,對不對?在POST答案中,我只在「payer_status」字段中有一個「已驗證」。但是這個字段是[支付信息變量](https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNandPDTVariables/),可以採用「已驗證」和「未驗證」的值。這似乎不同於[單個單詞「VERIFIED」或「INVALID」](https://developer.paypal。com/docs/classic/ipn/integration-guide/IPNImplementation /),我應該在我發回POST數據後從PayPal獲得。 – Daniel

1

您發送給PayPal驗證的下面的字符串似乎是一些虛擬數據。你能否做一個真正的沙盒支付測試,並將真實的IPN數據發回PayPal再次檢查驗證結果?

CMD = _notify-驗證& payment_type =即時& PAYMENT_DATE =星期二+月+ 29 + 2016 + 18%3A16%3A38 + GMT%2B0100 +%28Hora +的+版%C3%83%C2%A 3 O +的+北京時間29個%& PAYMENT_STATUS =完成& address_status =證實& payer_status =驗證& FIRST_NAME =約翰&姓氏=史密斯& PAYER_EMAIL =買家%40paypalsandbox.com & payer_id = TESTBUYERID01 & ADDRESS_NAME =約翰·史密斯+ & = ADDRESS_COUNTRY美國+美國& address_country_code =美國& address_zip = 95131 & address_state = CA & ADDRESS_CITY =聖若澤+ & address_street = 123 +任何+街道&業務=賣家%40paypalsandbox.com & RECEIVER_EMAIL =賣家%40paypalsandbox.com & receiver_id =賣家%40paypalsandbox.com & residence_country = US & item_name1 =東西& item_number1 = AK -1234 &稅= 2.02 & mc_currency = USD & mc_fee = 0.44 & mc_gross = 12.34 & mc_gross_1 = 12.34 & mc_handling = 2.06 & mc_handling1 = 1.67 & mc_shipping = 3.02 & mc_shipping1 = 1.02 & txn_type =車& txn_id = 302758056 & notify_version = 2.1 &定製= XYZ123 &發票= ABC1234 &的test_ipn = 1 & verify_sign = AFcWxV21C7fd0v3bYYYRCpSSRl31AHYNfmsVFESKyDLknmS3M5A8PkNI

+0

奇怪(我不明白爲什麼)你的建議奏效!但是我創建了2個賣家沙箱帳戶,並且我試圖在兩個帳戶上使用相同的IPN偵聽器,這兩個帳戶都有一個類型爲「http://www.example.com/paypal-ipn.php」的URL。在一種情況下,我成功了,但在另一種情況下,PayPal不允許我使用與IPN監聽器一樣的參數,即URL應以「https://」開頭!正如我所說,我是Paypal新手。但是這種不一致的行爲和有時過時的文檔並不能讓我覺得使用Paypal獲得金錢方面非常有信心...... – Daniel