【发布时间】:2013-04-19 18:51:11
【问题描述】:
当客户的信用卡被拒绝时,您如何自定义弹出的网关错误。
例如“付款交易失败。原因网关错误:处理过程中发生错误。请重试。”
如果这有所作为,我们将使用 Authorize.net。澄清一下,我们并不是要摆脱它们,只是修改它们中的语言。
【问题讨论】:
当客户的信用卡被拒绝时,您如何自定义弹出的网关错误。
例如“付款交易失败。原因网关错误:处理过程中发生错误。请重试。”
如果这有所作为,我们将使用 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
【讨论】: