【发布时间】:2010-12-09 19:37:49
【问题描述】:
我只是有点好奇。我可以做些什么来让我的支付网关调试体验更轻松一些。结帐时,它总是进行 ajax 调用。所以我无法通过 print_r() 或 echo 来查看进度。有没有更简单的方法来做到这一点而不会破坏任何东西。是否可以禁用 ajax 调用并定期发布。
【问题讨论】:
标签: php zend-framework magento e-commerce
我只是有点好奇。我可以做些什么来让我的支付网关调试体验更轻松一些。结帐时,它总是进行 ajax 调用。所以我无法通过 print_r() 或 echo 来查看进度。有没有更简单的方法来做到这一点而不会破坏任何东西。是否可以禁用 ajax 调用并定期发布。
【问题讨论】:
标签: php zend-framework magento e-commerce
简短的回答是:这样做是为了进行非破坏性调试。
Mage::log("Logging a message");
下面是长答案。
我还没有做过大量的支付网关调试,但是很多支付网关都有“调试”设置
System -> Configuration -> Sales -> Payment Methods
查看 authorize.net 选项组以获取此示例。如果将其翻转到“是”位置,调试信息将开始涌入日志文件。这假设您已在
中打开登录System -> Configuration -> Advanced -> Developer -> Log Settings
您可能需要自己创建日志文件
var/log/system.log
var/log/exception.log
确保这些文件可由您的网络服务器写入。
您也可以使用静态文件自己登录到这些文件
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');
}
但是,我不确定基类做了多少调试(这意味着如果配置中没有调试标志,那可能是因为支付网关模型本身没有调试)。不过值得探索。
祝你好运!
【讨论】:
对于 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
【讨论】: