我有一段可怕的时间在Paypal上实施Payments Pro网关,我想知道是否有人有类似的问题可能会为我提供一些见解?
我们正在使用PHP并尝试通过他们自己的integrationwizard.x.com网站生成的paypalfunctions.php代码进行交互。原版有一个(报告确认)错误,其中有飞行员和现场网站连接逆转,所以我对此的信心很低。然而,我实施了代码,网关现在正在接受实时付款 - 部分时间。在大量情况下,付款将被“无效的国家/地区代码”报告拒绝。
在Paypals自己的代码内调用之前立即记录请求字符串,并在返回时立即返回结果我可以证明传递给Paypal的字符串确实是正确的。 Paypal自己也承认这一点,但我看到截断值,我引用
“好吧这确实有点奇怪。你的NVP字符串似乎是正确的,但是我们正在接收国家代码的间歇性截断,所以例如使用GB我们有时什么也得不到,G,B或GB成功付款。这不会给问题所在的空间留下太多空间 - 您可以在服务器日志中搜索我们提出的请求吗?“
现在这也很奇怪,因为传递的字符串包含嵌入在其中心的国家/地区代码 - 例如(个人详细信息已更改)
USER=ZUTRB8C4OQ&VENDOR=OSO47W6EJP&PARTNER=PayPalUK&PWD=JITCMJA8VAN6YBMP&TENDER=C&TRXTYPE=S&ACCT=XXXXXXXXXXXXXXXX&CVV2=646&EXPDATE=0512&ACCTTYPE=Visa&AMT=55.60&CURRENCY=GBP&FIRSTNAME=John&LASTNAME=Smith&STREET=9/2 Oaklands Hill&CITY=Edinburgh&STATE=&ZIP=EH11AAA&COUNTRY=GB&CLIENTIP=82.19.219.153&ORDERDESC=The Order&VERBOSITY=MEDIUM&BUTTONSOURCE=PF-CCWizard
这强烈告诉我,问题在于如何解析或处理此字符串。我们有示例NVP字符串被接受和拒绝,布局相同,甚至一种情况是同一张卡在不同的IP被拒绝。
其他人有类似的经历吗?
更新:在检查服务器(它是共享主机)时,我发现一个大错误日志,几乎包含整个行,如
[08-Jul-2009 10:14:27] PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/local/lib/php/extensions/no-debug-non-zts-20060613/sqlite.so' - /usr/local/lib/php/extensions/no-debug-non-zts-20060613/sqlite.so: undefined symbol: php_pdo_unregister_driver in Unknown on line 0
根据我的知识,sqlite库与curl之间没有明显的联系,但是这意味着PHP没有被核心配置,这会导致看到随机错误的类型吗?
答案 0 :(得分:3)
我下载了paypalfunctions.php的副本,但它没有发送字符串。相反,它使用curl和CURLOPT_POSTFIELDS参数将所有变量作为HTTP POST(POST主体中的单独字段)而不是长GET字符串发送。
我建议使用tcpdump和Wikeshark这样的内容来捕获和查看实际发送给PayPal的内容。如果再次遇到同样的问题,可以向他们展示tcpdump,告诉他们你实际上发送了正确的字符串。
PS:请注意,如果您根据TCP日志发送它,那仍然不意味着PayPal实际收到了这一点。我生动地记得在我的前雇主处用HTTP POST搜索一个奇怪的问题。我的TCP转储说我发了它。他们的TCP转储表示他们没有得到它。几周之后,事实证明我们和他们之间有一个错误配置的透明代理。它意外地打开了深度数据包检查以删除HTTP POST表单的某些部分。 “哎呀”说网络提供商。