gpt4 book ai didi

php - Magento Paypal 付款高级 : Not tested code slipped in release?

转载 作者:可可西里 更新时间:2023-11-01 01:05:53 26 4
gpt4 key购买 nike

我正在设置 Magento 安装(使用 bitnami magento image 1.7.0),但无法使用 PayPal 付款。我已经设置了所有内容,如 this video 所示。 ,但在尝试完成订单后,在 payment_payflow_advanced.log 中我看到以下内容:

[result] => Array
(
[response_code] => -1
[response_reason_code] => 0
[response_reason_text] => Unable to read response, or response is empty
)

我浏览了论坛并尝试了这个:
1) DNS 问题 - 我试过 wget https://payflowlink.paypal.com/ - 它有效。
2) Curl 启用了 SSL

我还能检查什么?

更新:我已将 url 添加到 zend 异常,它会抛出日志中记录的消息,因此它会尝试访问 https://payflowpro.paypal.com:443/transaction。如果我试图在浏览器中打开此链接,我会收到 324net::ERR_EMPTY_RESPONSE。

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

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

\magento\htdocs\app\code\core\Mage\Paypal\Model\Payflowlink.php

有一行:

const TRANSACTION_PAYFLOW_URL = 'https://payflowlink.paypal.com/';

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

更新 4:

在版本 1.7.0.1 中看起来与更新 3 中提到的问题相同

我想知道是否有人在 Magento 中成功设置了 PayPal Payments Advanced,如果是的话,Magento 是哪个版本?

magento settings magento settings paypal settings paypal settings

paypal status

更新 6:我做了这样的 curl 测试:

<?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:

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

只要没有建议,那行得通,也许有人可以建议最简单的方法来确保使用 Paypal 付款高级帐户一切正常?

最佳答案

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

通过查看 app/code/core/Mage/Paypal/Model/Payflowpro.php 寻找 _postRequest() 方法,我会添加一些调试围绕 $client$result 对象。

此外,在 catch (Exception $e) 下方,您会注意到原始错误消息的来源,因为这种情况是您的异常发生在 Varien_Http_Client :

    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 或服务器端的配置错误。我会完全通过 Magento 之外的方法验证 Curl 是否已安装并正常工作,例如:

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

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

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

希望这对您有所帮助!

关于php - Magento Paypal 付款高级 : Not tested code slipped in release?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11208966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com