【问题标题】:Payment fields missing from Authorize.net checkout methodAuthorize.net 结帐方法中缺少付款字段
【发布时间】:2013-05-26 17:53:34
【问题描述】:

这是一个很奇怪的问题。如果我启用 Authorize.net 付款方式,则 HTML 中缺少用于输入 CC 详细信息的输入字段。这是一个开箱即用的安装,只完成了一些主题工作,我没有接触 opc 模板。

如果我启用 Saved CC 付款方式,这些字段会正确显示。

我没有对 Magneto 中的 OOTB Authorize.net 文件进行任何更改,甚至尝试禁用我的整个主题,但没有任何影响。


代码截图: http://cl.ly/image/3g1n2x021N2s


在进一步研究之后,templates/checkout/payments/method.phtml 中的这一行似乎没有返回任何 HTML: $this->getPaymentMethodFormHtml($_method)

我找到了这个方法,它又试图加载一个孩子。

public function getPaymentMethodFormHtml(Mage_Payment_Model_Method_Abstract $method)
{
     return $this->getChildHtml('payment.method.' . $method->getCode());
}

这是关于我已经走了多远。

【问题讨论】:

  • 您要查找的特定文件的代码?
  • John,知道您要查看什么文件吗?即将为这个问题扯掉我的头发。
  • 开启登录,看看是否有任何关于丢失 phtml 文件的错误
  • 日志中没有出现任何内容。似乎 $this->getPaymentMethodFormHtml($_method) 返回一个空字符串
  • 您使用的是哪个 Magento 版本,您的 Authorize.net 配置是什么样的?

标签: magento authorize.net


【解决方案1】:

如果您找不到任何问题的解决方案,这是一种解决方法。

您可以为 authorize.net 创建自己的付款表单

Authorize.net 表单使用 cc.phtml 文件显示 Authorize.net 字段,因此您可以复制此文件并从 xml 设置此表单。

转到您的 checkout.xml 并在 <checkout_onepage_index translate="label"> 标记中找到 checkout.payment.methods ,其中显示所有方法放置操作方法类似这样

 <action method="setMethodFormTemplate"><method>authorizenet</method><template>payment/form/authorizenet.phtml(which is copy of your cc.phtml)</template></action>

我没有测试过。

Authorize.net 将此块用于显示表单字段,以便您可以进一步查看此文件 app\code\core\Mage\Paygate\Block\Authorizenet\Form\Cc.php

【讨论】:

  • 我试过了,但仍然没有任何显示。之后还检查了日志,它们很干净。 setMethodFormTemplate xml 中没有 authorizenet 的记录 - 应该有吗?我这里只有一个用于采购订单的 XML 节点。
  • 是的,把这个节点放在purchaseorder节点之后,如果它不工作,这只是解决方法
  • 对不起,我不清楚,我确实添加了它。但在我这样做之前,没有 authnet 的记录。代码不起作用。
  • 另外,看起来 getPaymentMethodFormHtml 方法正在尝试 $this->getChildHtml('payment.method.' . $method->getCode()) 但
  • 动作是payment.method.authorizenet,但我找不到这个动作
【解决方案2】:

我会尝试以下步骤:

  • 检查/var/log/exception.log 下的异常日志
  • 检查您的 PHP 错误日志
  • 通过重命名主题文件夹来禁用当前主题,例如:/app/design/frontend/default/themename >> /app/design/frontend/default/_themename - 这排除了无效主题/布局 XML 问题的可能性。确保它回退到未触及的基本默认主题!
  • 通过在/app/etc/modules 下找到的 XML 中一一设置 &lt;active&gt;false&lt;/active&gt; 来禁用您的非标准扩展。
  • 在开启和关闭已保存的 CC 时尝试查看 $method-&gt;getCode() 的值是否存在差异。
  • 如果可能,请更新 Authorize.net 扩展。如果不是,至少检查一下你的/app/etc/modules/Mage_Authorizenet.xml是否如下:
<config>
    <modules>
        <Mage_Authorizenet>
            <active>true</active>
            <codePool>core</codePool>
            <depends>
                <Mage_Paygate/>
                <Mage_Sales/>
                <Mage_Checkout/>
            </depends>
        </Mage_Authorizenet>
    </modules>
</config>

【讨论】:

    【解决方案3】:

    您还可以检查您的 Magento 管理员中是否禁用了 Mage_AuthorizenetMage_Paygate 模块。

    系统 -> 高级 -> 高级

    确保它们在那里启用。

    【讨论】:

      猜你喜欢
      • 2015-04-22
      • 1970-01-01
      • 2011-03-22
      • 1970-01-01
      • 2018-05-26
      • 2016-06-09
      • 2015-09-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多