Как заставить Authorize.net Directpost reply_url быть HTTPS?
Я пытаюсь включить Authorize.net DPM (метод прямой публикации) на производственном сайте Magento 1.11.1. Мой тестовый сайт (также Magento 1.11.1.0) работает нормально, потому что сайт небезопасен (внешний SSL), но живой сайт получает ошибку. Оказывается, что reply_url, отправленный Authorize.net (x_reply_url), отправляется как non-ssl (например, http://mysite.com/authorizenet/directpost_payment/response как POST). Однако, это получает ошибку 500, потому что Magento установлен, чтобы требовать SSL на внешнем интерфейсе. Если я отправляю тестовое сообщение, используя ( https://mysite.com/authorizenet/directpost_payment/response как POST), оно получает ответ 200. Я смотрю на это, включив Debug в способ оплаты DPM, а затем просматриваю файл var/log/payment_authorizenet_directpost.log.
Поэтому я просматриваю весь код в app/code/core/Mage/Authorizenet и еще не вытащил часть кода, где он мог бы получить этот не-ssl URL. И, конечно же, тогда ответьте на вопрос "Почему вместо этого не используется безопасный URL?".
Похоже, это происходит, возможно, из метода placeAction контроллеров /Directpost/PaymentController.php.
Я надеялся, что смогу получить некоторую информированную информацию о том, нахожусь ли я на правильном пути и как лучше всего зарегистрировать или var_dump соответствующих переменных (на моем тестовом сайте), чтобы проверить любые изменения.
1 ответ
Решено. Это похоже на ошибку в коде для метода directpost authorize.net.
Модифицированный файл: 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 или выше.