如何自定义客户信用卡被拒绝时弹出的网关错误。
示例为“付款交易失败。原因网关错误:处理过程中出错。请重试。”
我们正在使用Authorize.net,如果这有所作为。为了澄清,我们不打算摆脱它们,只需修改它们中的语言。
将文件app / code / core / Mage / Paygate / Model / Authorizenet.php复制到本地。然后找到这个(第1334行):
protected function _wrapGatewayError($text)
{
return Mage::helper('paygate')->__('Gateway error: %s', $text);
}
并替换为:
protected function _wrapGatewayError($text)
{
if($text == 'This transaction has been declined.') {
$text = 'Custom message here.';
}
return Mage::helper('paygate')->__('Gateway error: %s', $text);
}
我知道这是一个古老的问题,但如果有人碰到这个问题,我会留在这里以备将来使用。
_wrapGatewayError()
方法已经使用帮助器输出消息,那么为什么不直接翻译消息呢?
app/design/frontend/{package_name}/{theme_name}/locale/en_US/translate.csv
中创建(或编辑)您的本地化/翻译文件。您可以在系统/配置/设计中查看活动的package_name
和theme_name
(在“常规”下)。在您的情况下,它将是这样的:“付款交易失败。原因网关错误:处理过程中出错。请再试一次。”,“您的自定义消息”
工作原理:每当使用助手输出“付款转换失败......”时,系统将找到翻译文件(translate.csv),并将消息更改为自定义消息。
请不要修改核心文件。它会造成混乱,干扰补丁,并使调试更加困难。如果需要,您可以扩展它们。见Overriding Magento blocks, models, helpers and controllers