首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Magento PayPal支付高级版:未经测试的代码在发布版中滑落?

Magento PayPal支付高级版:未经测试的代码在发布版中滑落?
EN

Stack Overflow用户
提问于 2012-06-26 13:56:57
回答 2查看 3.8K关注 0票数 3

我正在设置Magento安装(使用bitnami图像1.7.0),无法让PayPal支付工作。我已经设置了这段视频中所示的所有内容,但是在尝试完成订单之后,在payment_payflow_advanced.log中我看到了以下内容:

结果=>阵列 ( response_code => -1 response_reason_code => 0 response_reason_text =>无法读取响应,或响应为空 )

我浏览过论坛并尝试过这样的方法:

1) DNS问题--我尝试过wget https://payflowlink.paypal.com/ --它可以工作。

2) Curl启用了SSL

我还能查到什么?

Update:我向zend添加了url,这会抛出登录日志的消息,因此它尝试访问https://payflowpro.paypal.com:443/transaction。如果我试图在浏览器中打开这个链接,就会得到324net::ERR_EMPTY_RESPONSE。

更新2:我也尝试过PayFlowLink方法,同样的问题。

更新3:我注意到了一些奇怪的事情。

在……里面

代码语言:javascript
复制
\magento\htdocs\app\code\core\Mage\Paypal\Model\Payflowlink.php

有一条线:

代码语言:javascript
复制
const TRANSACTION_PAYFLOW_URL = 'https://payflowlink.paypal.com/';

我认为这应该告诉magento在哪里发送数据,以便安全地生成id。问题是,这个常量在magento代码中没有使用,这个链接也没有在其他地方使用,这就是为什么我认为它将请求记录到payflowpro,而不是payflowpro链接,我想知道这段代码是否有人测试过。

更新4

在1.7.0.1版中,与更新3中提到的问题相同

我想知道是否有人成功地在马根托建立了PayPal支付高级,如果是,哪个版本的Magento在那里?

更新6:我做了如下的卷曲测试:

代码语言:javascript
复制
<?php

   $ch = curl_init("https://www.google.com/");
   $fp = fopen("example_homepage.txt", "w");

   curl_setopt($ch, CURLOPT_FILE, $fp);
   curl_setopt($ch, CURLOPT_HEADER, 0);

   curl_exec($ch);
   curl_close($ch);
   fclose($fp);
 ?>

它按预期编写文件,在https上没有问题。

更新7

代码语言:javascript
复制
Request log:

 [request] => Array
        (
            [user] => ****
            [vendor] => me****
            [partner] => PayPal
            [pwd] => ****
            [verbosity] => HIGH
            [tender] => C
            [cancelurl] => http://mydomain.com/index.php/paypal/payflow/cancelPayment
            [errorurl] => http://mydomain.com/index.php/paypal/payflow/returnUrl
            [silentpost] => TRUE
            [silentposturl] => http://mydomain.com/index.php/paypal/payflow/silentPost
            [returnurl] => http://mydomain.com/index.php/paypal/payflow/returnUrl
            [template] => minLayout
            [disablereceipt] => TRUE
            [cscrequired] => TRUE
            [cscedit] => TRUE
            [emailcustomer] => FALSE
            [urlmethod] => GET
            [createsecuretoken] => Y
            [securetokenid] => 7ebabf98872aee2ff84be75d1483e453
            [trxtype] => S
            [amt] => 150.00
            [currency] => USD
            [invnum] => 100000006
            [custref] => 100000006
            [ponum] => 39
            [firstname] => Gxxx
            [lastname] => Bxxx
            [street] => Vxxx
            [city] => Kxxx
            [state] => Lxxx
            [zip] => 4xxx
            [country] => LT
            [email] => gxxx@xxx.com
            [shiptofirstname] => Gxxx
            [shiptolastname] => Bxxx
            [shiptostreet] => Vxxx
            [shiptocity] => Kxxx
            [shiptostate] => Lxxx
            [shiptozip] => 4xxx
            [shiptocountry] => LT
            [user1] => 1
            [user2] => 48a9896a17493d6b97de838c4b40026d
        )

    [result] => Array
        (
            [response_code] => -1
            [response_reason_code] => 0
            [response_reason_text] => Unable to read response, or response is empty. Uri:https://payflowpro.paypal.com:443/transaction
        )

    [__pid] => 31628

只要没有任何建议,那工作,可能有人可以建议最简单的方式来确保,与贝宝支付预付款帐户是一切都好吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-29 15:33:13

Magento以设置变量/常量而不使用它们而闻名。

这就是说,查看app/code/core/Mage/Paypal/Model/Payflowpro.php查找_postRequest()方法,我将在$client$result对象周围添加一些调试。

同样在下面的catch (Exception $e)中,您将注意到原始错误消息的来源,因为这是您的异常在Varien_Http_Client中发生的情况:

代码语言:javascript
复制
    try {
       /**
        * we are sending request to payflow pro without url encoding
        * so we set up _urlEncodeBody flag to false
        */
        $response = $client->setUrlEncodeBody(false)->request();
    }
    catch (Exception $e) {
        $result->setResponseCode(-1) 
            ->setResponseReasonCode($e->getCode())
            ->setResponseReasonText($e->getMessage());

        $debugData['result'] = $result->getData();
        $this->_debug($debugData);
        throw $e;
    }

使用上面的代码,您的问题很可能来自Curl本身,或者是magento或服务器端的错误配置。我将验证Curl是否已安装并通过Magento以外的方法正常工作,例如:

  • http://php.net/manual/en/curl.examples-basic.php

在try块中的$response之前,我将在$client对象上添加一个日志(mage::log)或转储(zend_debug::dump),以获得关于请求是如何形成和发送的更多详细信息。

您应该能够通过转储或日志记录在/lib/Varien/Http/Client.phpAdapter/Curl.php中找到更多的信息。

请随意发布上述调试的结果。

希望这能有所帮助!

票数 3
EN

Stack Overflow用户

发布于 2012-07-02 09:06:19

所以,我从这里取了https://www.x.com/node/2749的Payflow样本,放在magento目录中。

我运行了它,并注意到,虽然它在获得安全令牌时没有失败,但执行请求需要整整1分钟,这带来了想法,也带来了超时,所以我在我的pc上尝试过,这只花了不到1秒钟就生成了安全id。所以问题是,curl.exec超时,问题是为什么?

我已经启动了putty,并在上面的链接中尝试了相同的请求,它给了我

curl:(35)与payflowpro.paypal.com:443相关的未知SSL协议错误

现在是什么东西了!很多年前,我也有过类似的问题,但这太痛苦了,以至于我仍然记得解决方案的帮助--所以我尝试过通过另一个版本的SSL,第3版通过了!

我所要做的就是将SSL版本选项添加到Varien客户端和bum -一切都正常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11208966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档