【发布时间】:2016-11-28 13:28:21
【问题描述】:
我在我的一个应用程序中使用 Paypal 进行付款处理。作为其中的一部分,我正在使用 PayPal IPN。因此,当贝宝付款完成时,贝宝将 IPN 消息发送到 IPN URL(在贝宝网站中配置)。 IPN消息如下,
mc_gross=1.00&protection_eligibility=Eligible&address_status=confirmed&payer_id=GXZTE5K9VURMU&tax=0.00&address_street=Department+Of+State+2050+Bamako+Place+Washington%2C+DC+20521-2050&payment_date=01%3A18%3A47+Jul+23% + 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 = residence_country = US&的test_ipn = 1&handling_amount = 0.00&transaction_subject = payment_gross = &shipping=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 未验证。这是无效响应的原因吗(不确定)。如果是这样,为什么付款人状态为未验证以及如何验证此状态?
【问题讨论】:
-
一次编码整个参数集是不正确的。您必须对每个名称和值进行编码,由未编码的
=分隔,对由未编码的&分隔。 -
是的,好的,会检查这个,但同时如何验证某些付款?
标签: paypal coldfusion paypal-ipn paypal-sandbox coldfusion-10