最近,我开始为我的网站开发支付网关(进一步拼写为' PG ')流程。此过程包括通过重定向到其页面,通过表单将发布数据发送到 PG 服务器,并通过 PG 收到有关此事务的响应通过将URL重定向到我们的服务器页面发送 POST数据。
此处出现问题,因为我的服务器无法检索从 PG 服务器发送的POST数据。
当我使用PHP进行编码时,我尝试使用print_r($_POST);
打印来自 PG 的所有响应,甚至尝试使用print_r($_REQUEST);
。除PHPSESSID
和其他一些数据数组外,我没有找到任何数据打印。
至于确认,我检查了他们是否使用称为“ TamperIE ”的IE插件发送数据。它显示发送到其服务器的所有POST数据。但它根本没有进入我们的服务器。我在另一台服务器上尝试了这个过程:我能够获得POST响应,但不能使用当前正在运行的服务器。
你能说出可能出现的问题吗?
答案 0 :(得分: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
答案 1 :(得分:0)
我找到了这个问题发生的原因。
在 .htaccess 文件中,我写了重定向行:
RewriteRule ^ http://mysite.com{REQUEST_URI} [R=301,L]
如果我从文件中删除上述行,我可以从 PG 服务器接收POST字段,但是我删除了存储的数据,然后继续 PG 包含预订信息。这些会话无法在响应页面中显示,因为服务器从响应页面生成全新的会话。
我找到了一个解决此问题的替代解决方案:
我在需要会话的所有页面中使用以下代码:
$lifetime=60*30;
session_set_cookie_params ( $lifetime , '/', '.mysite.com');
在session_start();
之前添加上述代码。
现在我可以从 PG 获取两个POST数据,并且能够保留SESSION值。
但是,我认为这不是解决此问题的理想方案。如果有人可以为URL重定向建议任何SERVER配置并在REDIRECTION之后维护SESSION值,那将会很棒。谢谢大家: - )
答案 2 :(得分:0)
如果可能的话,在PG请求中发送您的销售/采购订单的唯一代码(订单ID),我确信您的PG将在POST数据中发回该唯一代码,并借助该唯一代码跟踪订单ID以更新订单的状态。
通过使用此方法,您无需担心会话。
答案 3 :(得分:0)
使用CURl,它安全可靠。