网关响应在子目录 wordpress 安装中不起作用
Gateway response not working in subdirectory wordpress install
我创建了一个接受特定网关付款的插件。在 root 目录中使用 Wordpress 安装时没有问题。
当我尝试在放置在子目录中的 Wordpress 安装中使用它时,它失败了。
在 root 安装中,表单正常工作,用户被重定向到网关页面。
一旦用户完成支付,网关发送一个 POST 请求和交易结果,它被我的脚本拦截,执行逻辑并回显重定向命令
REDIRECT=urlToThankYouPage?data=encodeddatahere
网关然后将用户重定向到感谢页面,并根据数据中的值 属性 显示相关消息。
现在谜团开始了……
子目录中的网站工作正常,但插件没有。网关似乎没有执行 post 请求。
它看起来像是一个简单的获取请求,因为用户最终会收到回调 url 并且重定向命令会打印在屏幕上。 $_POST 为空,服务器不执行重定向,就好像它不期望任何响应一样。
我可以编写全部或部分脚本,但它似乎毫无用处,因为该插件在顶层安装上完美运行。
可能是证书问题?
感谢任何帮助
编辑
以下代码捕获网关回调并回显响应
global $constrivPayer_options;
if(isset($_GET["constrivPayer-api"]) && $_GET["constrivPayer-api"] == "Gateway_ConsTriv") {
if (($_POST["result"]=="CAPTURED" || $_POST["result"]=="APPROVED")) {
if (md5($_POST["udf2"].CONSTRIVPAYER_MD5.get_option('siteurl')) === $_POST["udf1"]) {
$paymentData = json_decode(base64_decode($_POST["udf4"]), true);
$message = "1&amount=".$paymentData["amount"]."&id=".$paymentData["payment_id"];
} else {
$message = "2";
}
} else if (array_key_exists("Error", $_POST)) {
$message = "3";
} else {
$message = "4";
}
$pageUrl = $constrivPayer_options["page_url"];
$redirect = "REDIRECT=".$pageUrl."?transaction_result&transaction_message=".$message;
echo $redirect;
exit;
}
最后的问题是回调指向了站点的基础url。只需将根以外的任何 url 设置为回调即可解决问题。 siteurl/randomanything
愚蠢的解决方案令人非常头疼。
我创建了一个接受特定网关付款的插件。在 root 目录中使用 Wordpress 安装时没有问题。
当我尝试在放置在子目录中的 Wordpress 安装中使用它时,它失败了。
在 root 安装中,表单正常工作,用户被重定向到网关页面。
一旦用户完成支付,网关发送一个 POST 请求和交易结果,它被我的脚本拦截,执行逻辑并回显重定向命令
REDIRECT=urlToThankYouPage?data=encodeddatahere
网关然后将用户重定向到感谢页面,并根据数据中的值 属性 显示相关消息。
现在谜团开始了…… 子目录中的网站工作正常,但插件没有。网关似乎没有执行 post 请求。
它看起来像是一个简单的获取请求,因为用户最终会收到回调 url 并且重定向命令会打印在屏幕上。 $_POST 为空,服务器不执行重定向,就好像它不期望任何响应一样。
我可以编写全部或部分脚本,但它似乎毫无用处,因为该插件在顶层安装上完美运行。
可能是证书问题?
感谢任何帮助
编辑 以下代码捕获网关回调并回显响应
global $constrivPayer_options;
if(isset($_GET["constrivPayer-api"]) && $_GET["constrivPayer-api"] == "Gateway_ConsTriv") {
if (($_POST["result"]=="CAPTURED" || $_POST["result"]=="APPROVED")) {
if (md5($_POST["udf2"].CONSTRIVPAYER_MD5.get_option('siteurl')) === $_POST["udf1"]) {
$paymentData = json_decode(base64_decode($_POST["udf4"]), true);
$message = "1&amount=".$paymentData["amount"]."&id=".$paymentData["payment_id"];
} else {
$message = "2";
}
} else if (array_key_exists("Error", $_POST)) {
$message = "3";
} else {
$message = "4";
}
$pageUrl = $constrivPayer_options["page_url"];
$redirect = "REDIRECT=".$pageUrl."?transaction_result&transaction_message=".$message;
echo $redirect;
exit;
}
最后的问题是回调指向了站点的基础url。只需将根以外的任何 url 设置为回调即可解决问题。 siteurl/randomanything
愚蠢的解决方案令人非常头疼。