首页 > 解决方案 > 网关响应在子目录 wordpress 安装中不起作用

问题描述

我创建了一个插件,它接受特定网关的付款。在 root dir Wordpress install 中使用时,它没有问题。

当我尝试在放置在子目录中的 Wordpress 安装中使用它时,它失败了。

在根安装中,表单工作正常,用户被重定向到网关页面。

一旦用户完成支付,网关发送一个带有交易结果的 POST 请求,它被我的脚本拦截,该脚本执行逻辑并回显重定向命令

REDIRECT=urlToThankYouPage?data=encodeddatahere

然后网关将用户重定向到感谢页面,并根据数据属性中的值显示相关消息。

现在谜团开始了......子目录中的站点工作正常,但插件没有。网关似乎没有执行发布请求。

它看起来像一个简单的 get 请求,因为用户最终访问了回调 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;

}

标签: phpwordpresspayment-gateway

解决方案


最后的问题是回调指向了站点的基本 url。只需将根以外的任何 url 设置为回调即可解决问题。网站网址/随机数

愚蠢的解决方案令人头疼。


推荐阅读