如果通过WHMCS加载项模块付款失败,请重定向至custompage.php,而不是viewinvoice.php


Redirect to custompage.php instead of viewinvoice.php if payment fails via WHMCS Addon Module

我提交了一个相关的查询:如果在WHMCS Vs 6.2.0中付款失败,则重定向到custompage.php而不是viewinvoice.php,我得到了很好的响应,并成功实现了该响应。

如果可能的话,我希望将我的代码解决方案移植到自定义的WHMCS插件模块中通过利用插件模块的WHMCS输出函数从支付网关输出交易失败消息。

我不知道,模块应该在WHMCS中定义的钩子是在一个名为"Hooks.php"的文件中定义的。这应该在我的模块文件夹中。

我的设计目标是检测我是否在viewinvoice.php页面上,然后在挂钩内重定向到插件模块文件如下所示:

add_hook('ClientAreaPage', 1, function($templateVariables)
{
    if($templateVariables["filename"] == "viewinvoice" AND $templateVariables["paymentSuccess"] == false)
    {       
        // store variables to send to the addon module file.
        $_SESSION['bemasTransactionDetails'] = $templateVariables["invoiceid"];
        // redirect to addon page ????
        header('location:'. addon_module_file);
        die;
    }
});

这不起作用。

如何从模块挂钩重定向到WHMCS插件模块文件?还是我处理问题的方式不对?

有人能给我一个提示吗?

有趣的是,您能验证在客户端区域页面上是否按预期调用了该函数吗?我还没有试过像那样动态地声明函数。如果我没有记错的话,add_hook函数正在为要执行的函数寻找一个实际的字符串名称——如果你这样声明函数而不是提供名称,我认为它不会执行。我在我写的一个使用WHMCS(Dunamis framework)的框架中做了类似的事情——它允许在插件模块的"hooks"文件夹中添加hook文件,然后框架抓取它们,并在执行时将它们添加到堆栈中,但我没有尝试过这种方法。

对于你的问题,我认为你可以使用与你的另一个问题类似的方法。插件模块文件夹中的hooks.php文件也会被添加到堆栈中,并在初始化WHMCS应用程序后执行,因此您可以检查您所在文件的名称和成功的支付变量,并从那里重定向。

在要求付款时,您可能需要添加一个会话变量,然后在付款失败时检查该会话变量(看起来您正在检查付款失败,对吗?),以确保最终用户真正进入付款请求页面。

希望这有帮助。。。