"SSO: переадресация после создания заказа" (ModSSORedirectAfterOrderCreation)

Иногда при интеграции с порталом может возникнуть необходимость организовать переадресацию пользователя обратно на портал непосредственно после создания заказа, для этого используется МОД под названием “SSO: переадресация после создания заказа”.

Этот МОД позволяет переадресовать пользователя со страницы созданного заказа на адрес, переданный в качестве SignOutUrl при SSO-переходе.

Мод имеет следующие настройки:

 

  • Чекбокс “Активировать переадресацию” нужно включить для того, чтобы переадресация заработала

  • QueryString - строка с переменными вида order=@id_Reserve&mission=@id_ComplexReserve&portalId=@OuterId&hash=@hash

  • Соль - нужна для формирования hash

Использование соли и QueryString будет описано ниже.

При переадресации пользователя при помощи метода HTTP GET можно передать в адресной строке во внешнюю систему следующие параметры из Кортеос:

  • id_ComplexReserve - идентификатор командировки, в которую мы добавили услугу

  • id_Reserve - идентификатор только что созданного заказа

  • OuterId -идентификатор командировки во внешней системе, связь с id_ComplexReserve 1 к 1

  • hash - хэш для контроля целостности перехода, вычисляется как md5(SignOutUrl + QueryString.replace(“@id_ComplexReserve”, id_ComplexReserve).replace(“@id_Reserve”, id_Reserve).replace(“@OuterId”, OuterId ?? ““) + salt)

Предположим, наш запрос на SSO Set выглядел таким образом:

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sso="https://sso.corteos.ru/"> <soapenv:Header/> <soapenv:Body> <sso:Set> <sso:request> <sso:SignOutUrl>https://yandex.ru/</sso:SignOutUrl> <sso:OuterId>2000000189</sso:OuterId> <sso:AccountDetails id_Group="хх" GroupSecurityKey="ххх" Email="ххх@ххх.ru"> </sso:AccountDetails> </sso:request> </sso:Set> </soapenv:Body> </soapenv:Envelope>

В этом случае, после создания заказа при таких настройках переадресации, как было показано выше, пользователь будет переброшен на такой адрес:

https://yandex.ru/?order=1770639&mission=767337&portalId=63-200011&hash=3ff30cb54c7603735af4207ef6335968

Хэш будет вычислен как md5("https://yandex.ru/?order=1770639&mission=767337&portalId=63-200011&hash=@hashsomeSaltPlease”)