МЫЛО Magento V1 - Изменить адрес Мыла
У нас есть настройка magento для нескольких магазинов, которая все еще наполовину находится в разработке. Но у нас есть 1 магазин, открытый с тестовым URL-адресом.
Например test.domain.com
Однако, когда мы перейдем к: http://test.domain.com/index.php/api/index/?wsdl=1 Я заметил, что soap:адрес показывает основной домен, а не URL api, например:
<soap:address location="https://www.domain.com/index.php/api/index/index/?SID=vnl0ijdobf6ldj76pmc658rj92"/>
Какой банкомат не работает. У нас нет проблем с третьими сторонами, которые входят в api V2, но, похоже, у этого нет soap: адрес, который я верить - вот в чем проблема.
Когда я перейду к: http://test.domain.com/index.php/api/index/?wsdl=1 в браузере он показывает xml. Когда я пытаюсь позвонить по soap, я получаю: похоже, у нас нет XML-документа.
Когда я обновлю свой локальный файл hosts новым ip-адресом, чтобы указать домен, он будет работать. Но третья сторона не может обновить свой сервер, потому что его общий хостинг. Есть ли способ изменить API, чтобы он указывал на URL-адрес api, а не на URL-адрес базового магазина?
2 answers
Попробуйте установить URL-адрес магазина в admin как {{base_url}} (это необходимо изменить, прежде чем вы начнете жить). Используя этот magento, вы будете использовать любой домен, который использовался для вызова сайта.
Обновление, после комментариев OP:
Если вы проследите код того, как создается WSDL, вы найдете wsdl.xml файл в app/code/core/Mage/Api/etc/wsdl.xml
В конце этого файла:
<service name="{{var wsdl.name}}Service">
<port name="{{var wsdl.handler}}Port" binding="typens:{{var wsdl.handler}}Binding">
<soap:address location="{{var wsdl.url}}" />
</port>
</service>
Таким образом, magento заполняет URL-адрес в файле из var с именем wsdl.url.
Поиск в код для того, где это заполняется, показывает:
Mage_Api_Model_Server_Adapter_Soap::run
$wsdlConfig->setUrl(
htmlspecialchars(Mage::getUrl('*/*/*', array('_query'=>$queryParams) ))
);
Таким образом, URL-адрес генерируется с использованием стандартного метода getURL magento, таким образом, считывая его из вашей конфигурации.
Так что очень вероятно, что вы изменили не тот вариант. Вы изменили базовый URL-адрес по умолчанию или базовый URL-адрес сайта? Попробуйте другой или оба варианта.
В качестве альтернативы вы можете скопировать wsdl.xml в вашу локальную папку, временно переопределите ее и жестко закодируйте адрес. Это действительно плохой взлом, и следует стараться не делать этого, но должно помочь вам пройти тестирование;) Скорее всего, вам придется сделать это в другом месте, поэтому я бы сделал это только в крайнем случае.
В моем случае использовался "использовать пользовательский URL-адрес администратора":
Администратор -> базовый URL администратора -> использовать пользовательский URL администратора - обычно я бы использовал возможность изменения local.xml чтобы установить мой URL-адрес администратора.
Как только я удалил это и установил базовый URL по умолчанию, он правильно изменился в api soap, но все равно я могу использовать его только в качестве адреса soap: на всех сайтах, на которые я заходил в этом api.
Я могу только думать, что это, возможно, странная проблема с настройкой Nginx. как это, кажется, работает без проблем на моем локальная среда apache.