如何在 magento 中复制 authorize.net 模块?
Posted
技术标签:
【中文标题】如何在 magento 中复制 authorize.net 模块?【英文标题】:How can I make duplicates of authorize.net module in magento? 【发布时间】:2012-12-17 10:31:00 【问题描述】:我已经坚持了几天了。出于某种原因,复制 Magento Authorize.net (Mage_Paygate) 模块在前端不起作用。我设法复制了该模块,并让它在后端显示了它自己的配置选项,但我无法在结账时让付款方式显示在前端。
到目前为止,我已经尝试复制模块并更改模型名称的每个实例以避免冲突,我已经从头开始多次这样做,所以我确信这不是无效类调用的问题。 ..
我缺少某种神奇的按钮。我真的很希望听到有人成功复制了核心支付模块,特别是 Authorize.net
出于会计目的,我需要创建副本。除了复制 authorize.net 模块之外,没有其他解决方案。
谢谢
编辑:关于为什么我需要多个 authorize.net 模块副本的一些见解:我的公司处理大量销售,比大多数商家服务所允许的要多。我们的想法是,我们将有几个 authorize.net 模块预加载多个 authorize.net API 凭证,每个凭证对应一个不同的商家,这样当一个商家上限时,我们可以禁用该支付方式并启用下一个.
我不能只在单个 authorize.net 模块中切换信息的原因是我们需要将每张信用卡的资金存入单独的银行账户 - ECC,我们用来将数据从 magento 传输到quickbooks,接受基于 Title 字段的付款方式。为了区分我们为哪个信用卡处理器转账,我们在标题字段中附加了一个 (ACRONYM)。当这个标题字段发生变化时,ECC 会自行处理,因为它突然不知道它正在下载的交易的资金来自哪里。
我们尝试了各种方法,并认为复制 authorize.net 模块将是最佳解决方案。谢谢。
【问题讨论】:
从描述您的会计问题/需求开始,您就会知道为什么做错了。并阅读本网站的常见问题解答,然后您将不会在此处发布离题问题 更新了会计问题 添加更多店面,达到上限时适当切换购物车 问题是当我将交易导入ECC时,如果Magento中当前不存在付款方式,则交易以空白付款方式通过。如果我在同一天与 CC 处理器 A 进行了 20 笔交易,与 CC 处理器 B 进行了 20 笔交易,则 20 笔交易将导入到支付方式为空白的快速簿中。切换商店视图是一个好主意,但给我带来了与在达到上限时更改 API 登录信息相同的问题。 【参考方案1】:我设法弄清楚了,这就是我所做的以防其他人遇到这种情况,能够复制遵循不同规则的支付和运输模块非常方便,而不必依赖商店视图的更改:
创建新模块 Namespace_Modulename ,我使用 Mage_Paygate1 直到我的概念被证明。 从您要复制的模块中复制 etc 文件夹 复制主模型文件,在我的例子中是 Mage/Paygate/Model/Authorizenet.php
编辑system.xml: 更改组名,以便在管理面板配置中出现新的配置选项块,保留 module="" 单独。我们将参考原始模块文件而不是复制它们。我使用了authorizenet1。
为了清楚起见,如果您愿意,可以更改标签节点。就我而言,我将副本命名为 Authorize.net(处理器名称)
编辑 config.xml: 模块名,改成Namespace_Modulename,我用的是Mage_Paygate1。
如果原始 config.xml 没有块声明,请确保存在块声明。我们要引用原模块中的blocks文件夹,即:
<blocks>
<directpost><class>Mage_Paygate_Block</class></directpost>
</blocks>
更改下底部的节点
<default><section> (<default><payment>) to the group name used in system.xml
(authorizenet1)
确保模型节点正确指向新模块,而不是旧模块。 (paygate1/authorizenet)
现在编辑新模型,(Authorizenet.php):
重命名类以匹配新的 Namespace_Modulename (Mage_Paygate1)
确保 $_code 等于 config.xml 文件中的组名 (authorize1)
这对我有用。这个想法是只复制更改模块配置的部分并回收所有原始代码。
可能有一种更清洁的方法可以做到这一点,但无论如何我都不是 magento 大师,所以我非常欢迎任何关于如何应对这种黑客攻击的建议。
【讨论】:
【参考方案2】:除了下面的代码,我们还需要在 config.xml 中更改模型。如果您不进行以下更改,结帐时将不会显示新的付款方式
<models>
<authorizenet1>
<class>Mage_Paygate1_Model</class>
</authorizenet1>
</models>
【讨论】:
以上是关于如何在 magento 中复制 authorize.net 模块?的主要内容,如果未能解决你的问题,请参考以下文章
Magento:使用 Authorize.net 网关检索付款信息
Magento中的Authorize.net付款在选择时不显示信用卡表格