PAYPAL IPN回发返回INVALID

时间:2016-07-25 09:12:02

标签: paypal coldfusion paypal-ipn paypal-sandbox coldfusion-10

我在我的某个应用程序中使用Paypal进行付款处理。作为其中的一部分,我正在使用PayPal IPN。因此,当paypal支付完成后,paypal会将IPN消息发送到IPN URL(在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 =完成&安培;字符集=窗口1252&安培; address_zip = 20521&安培;如first_name =测试&安培; mc_fee = 0.38&安培; address_country_code = US&安培; ADDRESS_NAME =测试+测试和安培; 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&安培; RES idence_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%的时间内获得INVALID作为回复,并且在剩余10%的时间内获得VERIFIED作为回复。不知道为什么它会变得无效。希望代码中没有缺陷,因为有时它会将VERIFIED作为响应。我错过了什么吗?

此外,您可以在IPN消息中看到,payer_status是未验证的。这是INVALID响应的原因(不确定)。如果是,为什么付款人状态为未验证状态以及如何验证此状态?

1 个答案:

答案 0 :(得分:1)

实际上,您根本不应该对请求进行编码,因为内容已经过URL编码(您通过回显请求重复验证IPN)。要解决您的问题,请使用:

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