如何调试magento支付网关

num*_*l25 4 php zend-framework magento e-commerce

我有点好奇.我可以做些什么来使支持网关的调试体验更容易一些.退房时,它总是进行ajax调用.所以我无法通过print_r()或echo来查看进展情况.有没有更简单的方法来做到这一点而不会破坏任何东西.是否可以禁用ajax调用并定期发布.

Ala*_*orm 6

简短的回答是:这样做是为了进行非破坏性调试.

Mage::log("Logging a message");
Run Code Online (Sandbox Code Playgroud)

答案如下.

我没有完成大量的payement网关调试,但许多支付网关都有一个"调试"设置

System -> Configuration -> Sales -> Payment Methods
Run Code Online (Sandbox Code Playgroud)

检查authorize.net选项组以获取此示例.如果将其翻转到"是"位置,调试信息将开始喷射到日志文件.这假设您已开启登录

System -> Configuration -> Advanced -> Developer -> Log Settings
Run Code Online (Sandbox Code Playgroud)

您可能需要自己创建日志文件

var/log/system.log
var/log/exception.log
Run Code Online (Sandbox Code Playgroud)

确保Web服务器可以写入这些文件.

您也可以使用静态自行登录这些文件

Mage::log("Logging a message");
Run Code Online (Sandbox Code Playgroud)

方法调用.

最后,如果您的支付网关没有调试设置,您可以随时伪造它.所有支付模型(应该)都继承自以下类

class Mage_Payment_Model_Method_Abstract
app/code/core/Mage/Payment/Model/Method/Abstract.php
Run Code Online (Sandbox Code Playgroud)

此类有一个方法,用于确定调试是打开还是关闭

/**
 * Define if debugging is enabled
 *
 * @return bool
 */
public function getDebugFlag()
{
    return $this->getConfigData('debug');
}
Run Code Online (Sandbox Code Playgroud)

如果没有可用的调试配置标志,您可以暂时将此方法更改为始终返回true

public function getDebugFlag()
{
    return 1;
    //return $this->getConfigData('debug');
}
Run Code Online (Sandbox Code Playgroud)

但是,我不确定基类的调试程度(意味着如果配置中没有调试标志,可能是因为支付网关模型本身没有调试).值得一探的是.

祝好运!