1

我已经坚持了几天了。出于某种原因,复制 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 模块的副本将是最好的解决方案。谢谢。

4

2 回答 2

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 大师,所以我非常欢迎任何关于如何在未来证明这种黑客攻击的建议。

于 2013-01-06T08:07:55.067 回答
1

除了下面的代码,我们还需要在 config.xml 中更改模型。如果您不进行以下更改,结帐时将不会显示新的付款方式

<models>
  <authorizenet1>
    <class>Mage_Paygate1_Model</class>        
  </authorizenet1>       
</models>   
于 2015-05-19T12:12:35.597 回答