如何调试magento支付网关

时间:2010-12-09 19:37:49

标签: php zend-framework magento e-commerce

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

2 个答案:

答案 0 :(得分:6)

简短回答是:为非破坏性调试执行此操作。

Mage::log("Logging a message");

接下来是答案。

我还没有完成大量的payement网关调试,但许多支付网关都有“调试”设置

System -> Configuration -> Sales -> Payment Methods

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

中开启登录
System -> Configuration -> Advanced -> Developer -> Log Settings

您可能需要自己在

中创建日志文件
var/log/system.log
var/log/exception.log

确保您的Web服务器可以写入这些文件。

您也可以使用静态

自行登录这些文件
Mage::log("Logging a message");

方法调用。

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

class Mage_Payment_Model_Method_Abstract
app/code/core/Mage/Payment/Model/Method/Abstract.php

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

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

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

public function getDebugFlag()
{
    return 1;
    //return $this->getConfigData('debug');
}

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

祝你好运!

答案 1 :(得分:0)

对于AJAX,您可能会发现FirePHP for Magento有帮助。

对于所有情况,只要您记得在系统>中首先打开它,就可以使用Mage::log()。配置>显影剂。它的工作方式与print_r类似,只是输出到/var/log/system.log

我经常tailf该文件并且在很多地方都有这样的代码:

Mage::log(__METHOD__); // prints My_Module_Model_Class::method
Mage::log($object->debug()); // $object is any model or block descending from Varien_Object