0

我正在尝试在 Magento 1.11.1 生产站点上启用 Authorize.net DPM(直接发布方法)。我的测试站点(也是 Magento 1.11.1.0)工作正常,因为该站点不安全(前端 SSL),但实时站点出现错误。原来发送到 Authorize.net (x_reply_url) 的 reply_url 是作为非 ssl 发送的(例如http://mysite.com/authorizenet/directpost_payment/response作为 POST)。但是,这会得到 500 错误,因为 Magento 设置为在前端需要 SSL。如果我使用( https://mysite.com/authorizenet/directpost_payment/response作为 POST)发送测试帖子,它会收到 200 响应。我通过在 DPM 付款方式中打开调试然后查看文件 var/log/payment_authorizenet_directpost.log 来查看这一点。

因此,我正在查看 app/code/core/Mage/Authorizenet 中的所有代码,但还没有提取一段可能会获取此非 SSL URL 的代码。当然,然后回答“为什么不提取安全 URL?”的问题。

看起来它可能起源于控制器/Directpost/PaymentController.php 的 placeAction 方法。

我希望我能在这里获得一些关于我是否走在正确的轨道上以及如何最好地记录或 var_dump 适当的变量(在我的测试站点上)以验证任何更改的见识。

4

1 回答 1

2

解决。这似乎是 authorize.net directpost 方法的代码中的一个错误。

修改文件:app/code/core/Mage/Authorizenet/Model/Directpost.php

方法:getRelayUrl

旧代码:

return Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK) . 'authorizenet/directpost_payment/response';

新代码:

if(Mage::app()->getStore($storeId)->isCurrentlySecure()) {
  return rtrim(Mage::getUrl('authorizenet/directpost', array('_secure' => true)),"/") .     '_payment/response';
} else {
  return Mage::app()->getStore($storeId)->getBaseUrl(Mage_Core_Model_Store::URL_TYPE_LINK) . 'authorizenet/directpost_payment/response';
}

这是在 Magento Pro 1.11.1.0(与 Magento EE 1.11.1.0 相同的代码)中。我还没有获得任何更新版本的 Magento EE 的访问权限,以查看这是否已在 1.12 或更高版本中得到解决。

于 2013-09-13T10:06:09.840 回答