Как я понял, биллинг не имеет экшена, который отвечает за страницу с рефссылкой, и поэтому при обращение к странице вида sait/r/1 запускается 404 ошибка. И уже там происходит фиксация реферального id. И действительно, посмотрев в файлы билинга, в папке hooks я нашёл error_404.php. У меня он закодирован, однако тут я нашёл информацию, что разработчик биллинга выкладывал этот файл в расшифрованном виде...
В нём мы видим, что там происходит запись реф id в куку, а потом происходит переадресация на $url. Так вот вам нужно изменить этот $url.
Вот изменённый код файла error_404.php, из папки hooks компонента биллинг, который должен вам помочь:
<?php
class onBillingError404 extends cmsAction {
public function run($uri){
$uri = href_to_current();
if ($this->options['is_refs'] && preg_match('/\/r\/([0-9]+)$/i', $uri, $matches)){
$ref_id = $matches[1];
if (!cmsUser::getCookie('ref_id')){
cmsUser
::setCookie('ref_id', $ref_id, $this->options['ref_days']*60*60*24); }
//$url = $this->options['ref_url'] ? $this->options['ref_url'] : href_to_home();
//соберём свою ссылку с $ref_id
$url = href_to_home().'users/'.$ref_id;
$this->redirect($url);
}
return $uri;
}
}