4

最近我开始为我的网站处理支付网关(进一步拼写为“ PG ”)流程。该过程包括通过重定向到他们的页面以表单将Post 数据发送到PG服务器,并通过将 URL 重定向到我们的服务器页面发送的POST 数据从PG接收关于 Transaction的响应。

问题出现在这里,因为我的服务器无法检索从PG服务器发送的 POST 数据。

当我在 PHP 中编码时,我尝试使用PG打印所有响应,print_r($_POST);甚至尝试使用print_r($_REQUEST);. PHPSESSID除了和其他一些数据数组外,我没有找到任何数据打印。

至于确认,我检查了他们是否使用称为“ TamperIE ”的 IE 插件发送数据。它显示所有发送到其服务器的 POST 数据。但它根本不会出现在我们的服务器上。我在另一台服务器上尝试了这个过程:在那里我能够获得 POST 响应,但不能使用当前工作的服务器。

你能建议可能是什么问题吗?

4

4 回答 4

0

如果可能的话,在 PG 请求中发送您的销售/采购订单的唯一代码(订单 ID),我相信您的 PG 会在 POST 数据中发回该唯一代码,并且借助该唯一代码,您可以跟踪该订单 ID更新订单状态。

通过使用这种方法,您无需担心会话。

于 2012-10-22T10:57:57.540 回答
0

使用 curl 模拟来自其他服务器的请求,制作一个包含以下内容的 test.php:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.example.com/path/to/form");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
$data = array(
    'foo' => 'foo foo foo',
    'bar' => 'bar bar bar',
    'baz' => 'baz baz baz'
);

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);

curl_close($ch);

并使用 cli 运行它以获取调试信息并查看问题所在。不要忘记将应该从服务器返回的变量和确切的 url

于 2012-10-16T12:22:22.200 回答
0

为此使用 CURl,它安全可靠。

于 2012-11-06T12:21:11.057 回答
0

我找到了发生此问题的原因。

.htaccess文件中,我为重定向写了一行:

RewriteRule ^ http://mysite.com{REQUEST_URI} [R=301,L]

如果我从文件中删除上述行,我可以从PG服务器接收 POST 字段,但是我丢失了在继续进行PG之前存储的 SESSION DATA包含预订信息。这些会话无法显示在响应页面中,因为服务器会从响应页面生成全新的会话。

我找到了解决此问题的另一种解决方案:

我在所有需要会话的页面中使用以下代码:

$lifetime=60*30;
session_set_cookie_params ( $lifetime , '/', '.mysite.com');

在添加上述代码之后session_start();

现在我既可以从PG获取 POST 数据,也可以保留 SESSION Values

但是,我认为这不是这个问题的理想解决方案。如果有人可以为 URL 重定向建议任何 SERVER 配置并在 REDIRECTION 之后维护 SESSION 值,那就太好了。谢谢你们 :-)

于 2012-10-19T07:43:59.587 回答