МЫЛО 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-адрес базового магазина?

Author: Marius, 2013-08-16

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 в вашу локальную папку, временно переопределите ее и жестко закодируйте адрес. Это действительно плохой взлом, и следует стараться не делать этого, но должно помочь вам пройти тестирование;) Скорее всего, вам придется сделать это в другом месте, поэтому я бы сделал это только в крайнем случае.

 1
Author: ProxiBlue, 2013-08-20 03:20:39

В моем случае использовался "использовать пользовательский URL-адрес администратора":

Администратор -> базовый URL администратора -> использовать пользовательский URL администратора - обычно я бы использовал возможность изменения local.xml чтобы установить мой URL-адрес администратора.

Как только я удалил это и установил базовый URL по умолчанию, он правильно изменился в api soap, но все равно я могу использовать его только в качестве адреса soap: на всех сайтах, на которые я заходил в этом api.

Я могу только думать, что это, возможно, странная проблема с настройкой Nginx. как это, кажется, работает без проблем на моем локальная среда apache.

 1
Author: Andy Archer, 2013-08-29 09:50:49