2016-07-25 125 views
0

我在其中一個應用程序中使用Paypal進行支付處理。作爲其中的一部分,我使用PayPal IPN。所以,當貝寶付款完成後,貝寶將IPN消息發送到IPN URL(在Paypal網站中配置)。該IPN信息如下,PAYPAL IPN回發無效

mc_gross = 1.00 & protection_eligibility =合格& address_status =證實& payer_id = GXZTE5K9VURMU &稅= 0.00 & address_street =部門+中+國家+ 2050 +巴馬科+地點+華盛頓%2C + DC + 20521-2050 & PAYMENT_DATE = 01%3A18%3A47 +月+ 23%2C + 2016 + PDT & PAYMENT_STATUS =完成&的charset =窗口1252 & address_zip = 20521 &如first_name =測試& mc_fee = 0.38 & address_country_code = US & address_name = Tes T +測試& notify_version = 3.8 &定製= 3 & payer_status =未經證實的&業務= test.test15%40gmail.com & = ADDRESS_COUNTRY美國+美國& ADDRESS_CITY =華盛頓&量= 1 & verify_sign = ABiBx6LFP1A2IuUu8wF.arqoHdTJA5F1TwzPqOjEd01798Nh2NTTbdU0 & PAYER_EMAIL = testpayer% 40gmail.com & txn_id = 7AP55204BB503245S & payment_type =即時&姓氏=測試& ADDRESS_STATE = DC & RECEIVER_EMAIL = test.test15%40gmail.com & payment_fee = & receiver_id = T3SDTD8X2SFZW & txn_type = web_accept & ITEM_NAME =捐贈+爲test.com & mc_currency = EUR & = ITEM_NUMBER & residence_country = US &的test_ipn = 1個& handling_amount = 0.00 & transaction_subject = & payment_gross = &運費= 0.00 & ipn_track_id = 9f24d51b9d45c

所以同時用Paypal使用以下代碼驗證上述消息

<cfset requestData = getHTTPRequestData() /> <!--- getting IPN message ---> 

<cfhttp url="https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&#URLEncodedFormat(requestData.content)#" resolveurl="false"> 
    <cfhttpparam type="header" name="Host" value="www.sandbox.paypal.com"> 
</cfhttp> 

我得到在90%的時間內作爲響應無效,並在剩餘10%的時間內作爲響應進行驗證。不知道爲什麼它變得無效。希望代碼中沒有任何缺陷,因爲有時它會以響應的形式給出VERIFIED。我錯過了什麼嗎?

另外您可以看到,在IPN消息中,payer_status未驗證。這是INVALID響應的原因(不確定)。如果是這樣,爲什麼付款人狀態未驗證,以及驗證該狀態的內容?

+0

一次編碼整個參數集是不正確的。你必須編碼每一個的名字和值,用一個未編碼的'='分隔,而這些對由未編碼的'&'分開。 – EJP

+0

是的,請檢查這個,但同時它是如何驗證一些付款? –

回答

1

實際上,您不應該編碼請求,因爲內容已經被URL編碼(您正在重複IPN以通過迴應請求進行驗證)。要解決您的問題,請使用:

https://www.sandbox.paypal.com/cgi-bin/webscr?cmd=_notify-validate&#requestData.content#