我创建了一个可以接受特定网关付款的插件。在根目录Wordpress中使用时,它不会出现任何问题。
当我尝试在子目录中的Wordpress安装中使用它时,它会失败。
在root用户安装中,表单可以正常工作,并且用户将被重定向到网关页面。
用户完成付款后,网关会发送带有交易结果的POST请求,该脚本会被我的脚本拦截,该脚本会执行逻辑并回显重定向命令
REDIRECT=urlToThankYouPage?data=encodeddatahere
然后,网关将用户重定向到“谢谢”页面,并根据data属性中的值显示相关消息。
现在谜团开始了... 子目录中的站点工作正常,但插件不起作用。网关似乎没有执行发布请求。
这看起来像一个简单的get请求,因为用户最终进入了回调URL,并且在屏幕上打印了redirect命令。 $ _POST为空,并且服务器不执行重定向,就好像它不期望任何响应一样。
我可以编写全部或部分脚本,但似乎无用,因为该插件可以在顶级安装上完美运行。
可能是某些证书问题吗?
任何帮助得到感谢
编辑 以下代码捕获了gatway回调并回显了响应
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;
}
答案 0 :(得分:0)
最后的问题是回调指向站点的基本URL。只需将root以外的任何URL设置为回调即可解决该问题。 siteurl / randomanything
解决方案笨拙的头痛。