代码之家  ›  专栏  ›  技术社区  ›  Cruachan

贝宝支付亲随机失败

  •  0
  • Cruachan  · 技术社区  · 15 年前

    我有一个可怕的时间实现支付Pro网关到PayPal,我想知道是否有人有类似的问题,可以给我提供一些见解?

    我们使用的是PHP,并试图通过在他们自己的integrationwizard.x.com网站上生成的paypalfunctions.php代码进行接口。原来有一个(承认报告)的错误,其中有试点和现场网站连接颠倒,所以我对这是低信心开始。然而,我实现了代码,现在网关正在接受实时支付——这是部分时间。在很多情况下,付款被拒绝,并带有“无效国家代码”报告。

    在调用PayPal自身代码之前立即调用请求字符串,并在返回时立即返回结果,我可以证明传递到PayPal的字符串确实是正确的。贝宝自己承认这一点,但看到截断值,我引用

    “好吧,这确实有点奇怪。您的NVP字符串似乎是正确的,但我们正在接收国家代码的间歇性截断,因此,例如,对于GB,我们有时会在成功付款时一无所获,即A G、A B或A 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没有被正确配置,这会导致随机错误吗?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Sander Marechal    15 年前

    我下载了paypalfunctions.php的副本,但它不发送字符串。相反,它使用curl和curlopt_post fields参数将所有变量作为http post(post body中的单独字段)发送,而不是长get字符串。

    我建议使用像tcpdump和 Wikeshark 捕捉和回顾 事实上 发送到贝宝。如果您再次遇到相同的问题,可以向他们显示tcpdump,以向他们显示您实际上发送了正确的字符串。

    注意:如果你根据你的TCP日志发送它,那仍然不意味着PayPal实际上接收了。我清楚地记得在我以前的雇主那里,我通过HTTP邮件找到了一个奇怪的问题。我的TCP转储文件说是我发送的。他们的TCP转储文件说他们没有收到。几周后,我们和他们中间出现了一个配置错误的透明代理。它意外地打开了深度数据包检查以删除HTTP Post表单的某些部分。”“哎呀,”网络供应商说。