Перенаправление на custompage.php вместо viewinvoice.php, если оплата не удалась в WHMCS Vs 6.2.0

Я хочу перенаправить на пользовательскую страницу после сбоя платежа, возвращенного платежным шлюзом. С этой целью я использую хук ShoppingCartCheckoutCompletePage, чтобы проверить это, используя переменную $vars['ispaid']. Когда платеж прошел успешно, $vars['ispaid'] имеет значение true и перенаправление на страницу благодарности работает.

add_hook('ShoppingCartCheckoutCompletePage', 1, function ($vars) 
{
    # Will be true if the order has been paid 
    if($vars['ispaid'] == true)
    {
        #redirect to thank you page
        header('location:'.thankYouPage);
        die;
    }
    else
    {
        header('location:'.transactionFailedPage);
        die;
    }   
}

Однако оператор else не выполняется, когда платеж явно не проходит, а загружается страница viewinvoice.php, а статус платежа устанавливается на «неоплаченный».

Я что-то упускаю? Как я могу перенаправить на страницу с ошибкой транзакции?

Спасибо.


person Terungwa    schedule 08.01.2016    source источник


Ответы (1)


WHMCS не предоставляет интуитивно понятный способ добраться туда, куда вы хотите, это точно. Вам может понадобиться добавить исполняемый файл в каталог хуков, чтобы он работал без хука — любой php, который вы добавляете в каталог хуков, запускается, как только система запускается и выполняются проверки безопасности. Таким образом, это означает, что вы можете видеть, находитесь ли вы а) в файле viewinvoice.php, б) есть ли сообщение об ошибке, указывающее на неудачный платеж, и в) перенаправляетесь оттуда, если это правда.

Я полагаю, что ShoppingCartCheckoutCompletePage вызывается только после того, как заказ завершен и произведена оплата, это то, что я помню, и опять же, это не интуитивно понятно.

Надеюсь, это поможет.

person muely2k1    schedule 11.01.2016
comment
Предложенный вами рабочий процесс был великолепен!! Единственное изменение, которое я внес в предложенное вами решение, заключалось в том, чтобы активировать хук ClientAreaPage и проверить следующие переменные: $templateVariables[filename] и $templateVariables[paymentSuccess] == false. Поэтому, если возвращаемые переменные равны viewinvoice и false соответственно, я вызываю перенаправление. - person Terungwa; 13.01.2016